I had the opportunity 3 months ago to augment my team. Placed on a large Flash development project, I knew I couldn’t do it alone with the resources I had. That’s what my gut said. It took me about 3 business days to identify the scope of the project based on what I was told from various stakeholders (dude’s and dude’tt’s in charge). It took another 5 business days to identity the true extent of what available resources I had. I’ve had no formal training in resource management. A resource being defined as a person with a skill set that is valuable to my team. Typically, I’ve been an added resource to a team, a Flash / Flex Developer hired to enhance an existing team. This time around, I was looked upon as the person who could correctly identify who, and how many, additional people we needed.
I looked at the project’s scope & deadline, people I currently had available, and knew I needed help. How?
- I’ve done enough development before to know what I’m capable of.
- Over time, I can recognize people’s skill sets, and make an inference as to what they can accomplish in a given time frame.
- I’ve done enough variety of work to recognize what skill set does what type of work best.
Those 3 are mostly drawn from experience. Experience can’t be taught, it must be lived. Regardless, reporting on experience helps others learn how they came to be, and as we understand others’ experiences, we can understand ourselves.
There were some obvious signs of what we DIDN’T need. The project was a refresh; meaning, an existing website was adding a new design and changing some functionality. The data, all dynamic from a set of .NET web services on the back-end, was not changing. If it was, there were numerous in house resources that management assured me would be more than capable of knocking them out quickly while being flexible to requirements.
Good, no need for server dudes. Bad thing, though, these gals n’ guys are easier to find than client peeps, say… a qualified Flash Developer.
The single developer I was assigned to work with was not a designer. I am not a designer, I just like designers. I knew we needed a designer. Even if it wasn’t the one actually designing the new site, we needed someone to be accountable for the design in my team. Developers tend to have no regard for layout, font choice / size / weight, and will ignore gradients that don’t display on their monitor. It’s not that we can’t, it’s just we aren’t paid to do those things; we’re typically focused on making things work, not look good. As such, we needed someone to work with us to keep us in check. Having a design change break working code that was fought hard for 2 months later is a major morale & productivity killer. As such, you need to massage it into submission while the patient is open. A designer working with the programmers to ensure the design is correct and to help adjust to design requirement changes should be done in tandem, not at the end of a project.
I needed a designer.
Another week into it, I realized we weren’t allowed to rewrite things. I wanted to nuke the whole code base, but that wasn’t in the time frame. That’s always a joke in the Flash industry because you can typically re-write bad ActionScript faster and end up with something with less bugs, easier to test, and more scalable anyway in the end if you know what you are doing. The trick is how do you sell that to management? Do you do it anyway, risking that if you take longer you defied orders, or instead look like a hero at the end? All kinds of crazy, ethical blurriness here. That, combined with the insane deadline + the amount of code to jury-rig into submission was… daunting. Considering I had a seasoned programmer on my side, I felt good. He didn’t have any Flashdev experience, however, so I knew I’d do a lot of peer programming. Peer programming being defined as 2 programmers using 1 computer to program. I do this a lot for solving bugs with my teammates . He’d teach me about the code base since he had experience with it as well as the business. In turn, I’d explain why you can’t mask device text at author time in the Flash Player, why the existing code base was f00ked via copious justifications, and all of those other nuances us Flash Developers know about our platform. That means 2 developers barely making headway. I needed someone else doing recon in other areas, covering our backs, and generally being a work horse while us two forged ahead in deadly waters.
I needed an additional, experienced Flash or Flex developer… preferably Flash.
Another week into it, the sheer amount of “screens” and “sections” made me realize that there would be a lot of production art. Production art being the process of converting Photoshop, Illustrator, or Flash FLA files into a design that can be programmed inside of the authoring tool, in this case the Flash 8 IDE. This is, unfortunately, an art. Designers can be pretty good at this, but it is rare that programmers are because a lot do not have a design appreciation for the assets they are converting, and thus quality and intent can be lost in the conversion process. As the tools in the industry get better and more integrated, hopefully this skill set will go away (*ahem* :: cough :: :: Adobe :: :: cough :: ), but for now it is a necessary evil. It has a worse perception than Information Architecture in that many do not even recognize it as a skill, let alone a valid task. This one requires a lot of educating management very delicately if it’s considered new.
I needed yet another designer. They could not only use Flash from a designer’s perspective, convert assets, but also ensure us programmers aren’t making a mess of the implemented designs.
So, I managed to get:
- 1 in-house programmer, experienced with the code base and business
- 1 in-house designer, experienced with the business
- 1 remote developer brought on site with Flash Developer experience
- 1 remote designer brought on site with Flash Design / Development experience
The whole time, I managed to convince management to allow us to all work in the same office. That’s right, 5 dudes in the same office. Because of the deadline, remote work wasn’t possible as far as I was concerned… at least at the get-go. The in-house designer was originally on a different floor, but f’that . After 2 days of IM’s, phone calls, and trips to the elevator, my team and I had had it. We apprehended some fans, and even snagged an extra whiteboard. I did my best to make Twizzlers always available. Unexpectedly (to me), management started ensuring that our productive garden thrived, and watered us with facts gleaned from copious meetings we didn’t have to attend, and gave us sun beams of praise. It was great how it worked out!
I feel I made good decisions, and things worked out better than I thought they would. I was really nervous at the beginning asking for so many resources, both internal at the client company I was consulting for, and from my own consulting firm. I’m technically asking both companies for a lot of time and money from various individuals. Those are not decisions to be taken lightly. I’ve never argued with my gut, though. If he says jump, I jump. All the experience collects there, you see. Thus, I trust it implicitly. Yes, yes, I swear I did some double-takes and did some second-guesses just in case. Nothing like role-playing devils’ advocate, out loud, near others who you shouldn’t be role-playing near.
The only challenges were keeping the designers focused 100% of the time. Forces outside of our control made it challenging to present them production work in a steady stream. Additionally, the amount of bugs and code re-factoring made it hard for us developers to showcase completed sections for the designers to do their thing on. I am constantly playing catch up to find valid sections that are ready for “painting” or “design inspection” as it were. QA became a good scapegoat (aka back up task) but RAD development, even with a good plan, isn’t always everyone going 100%. Developers, even in agency work, are always slower than designers.
Anyway, I know the above was kind of vague, but hopefully that give you some insight into how I made my decisions. I made the mistake in the past of not asking for additional resources sooner, so learned from that, and nipped the problem before we hit the starting gate. I am glad I was given this opportunity to learn and am glad it worked out so well. I typically write about the hard lessons I’ve learned from failures, but this is a success so it’s a nice change.