Defining Roles Within a Development Team
I am a big advocate of keeping teams lean and knowledge sharing. If you follow both of these ideas, you end up with a small, well balanced development team. In order to build and keep a well balanced team you need to look for employees with a strong general technology background. For this reason, I believe in hiring technology generalists over specialists. If your developers have solid experience (based on the level of developer you are hiring for), a good Computer Science education, and a desire to grow and expand their knowledge beyond their current toolbox; then as a team you have more weapons for any given project.
What good is a JavaScript expert when the next 3 projects in your queue require flash? And what good is someone who only knows back-end development, when almost EVERY web project requires a front end interface. On the other side of the coin, I rather deal with finding a flash developer for an upcoming flash project, than have a flash developer idly browsing the web waiting for work between projects. If a specialist is really needed, you can always hire or outsource. If you can’t hire someone for a specific project, then I would argue that a specialist is not really needed after all. Maybe you can chose a technology you do have knowledge in, or maybe that project is not worth doing. Hopefully if you have built a well balanced team with the right mix of talent, they should be able to pick up the knowledge needed for that project in time.
Now this is all well and good, but is it realistic? Everyone can’t possibly know everything. If everyone knows a little about everything, where will you excel? As much as I’d love a development team where everyone is exactly talented and available for any given project, this is obviously not possible. People can’t know everything, and those who come close, come at a steep price. So the reality is while we try to keep everyone fresh and working on a mix of technologies, everyone eventually acquires a specialty. This may happen through a self-desire of theirs to work or research a specific technology or role. Perhaps it may come organically through project assignments. Its easy to see if someone winds up getting assigned a large amount of AJAX work, they will eventually become the go-to developer for projects requiring AJAX knowledge.
How to grow solid generalists
I believe in letting these roles grow organically. If someone on my team expresses a desire to work on a certain project or technology, I will try to get them on that project even if its in a limited role at first. It benefits me because in the long run I will have a broader pool of resources for upcoming projects. It benefits the developer, because he or she will have a real desire to work on the project since they expressed interest in the first place. This type of environment is a large plus to work in, and fosters growth for both the company and the individual.
Another way to foster information sharing besides error log rotations is tech lunches. Here we periodically have a lunch (if possible; or a 1-2 hour meeting), where we meet in the conference room. One member of the team will give a short presentation about a new technology they are working on. We have had tech lunches on topics such as our proprietary MVC Framework, AJAX/jQuery, and Adobe AIR/FLEX. These causal presentations show other developers what we are working on and can give them an overview in case they are needed to work on a portion of a project in the future. It may even expose them to something that they may express a desire to work on or learn next. A good item to make sure you share among the group is learning experiences. Have developers talk about the sites they go for for code help and examples, or talk about a particularly odd piece of code that stumped them. Talking about how they learn helps shorten the learning curve for others.
If you being by hiring strong general talent, and letting your employees grow with new technologies and through sharing experiances, you can build a solid team ready to take on the bulk of the projects that come across your path.
Related posts:
- Estimating Resource Time for Web Development Projects Coming up with accurate time and resource estimate is one...
- Software: 6 Questions to Ask Yourself When Deciding to Build or Buy A common dilemma of many tech managers and businesses in...
- Dell 9 Mini Review My dell mini 9 arrived 2 weeks ago. I purchased...
- Find the Right Blend of Ideal and Practical Web Development A few weeks ago I wrote that good design is...
- Iterative Development is Effective Here at SmartMoney, we have been using iterative development techniques...
Related posts brought to you by Yet Another Related Posts Plugin.
2 Responses to “Defining Roles Within a Development Team”
Leave a Reply
Additional comments powered by BackType
I think if you want motived employes, you have to lead my example. Do all the hard work, show them that even you aren’t above the work. You will quickly see the ones that want to work, and the ones who do not!
You seem to be writing both sides of the fence. Smaller companies tend to like generalists while larger companies may need full time specialists. But given a choice and assuming similar depth of knowlege required for a tast, I prefer generalists so they can be more productive revenue wise.