Skilled Developers: Build or Buy?

October 13th, 2006

The job market is tight for software development these last few years. I hear from a recruiter roughly 5 times a week. I got 2 phone calls and 2 emails yesterday alone. It is not that I am some kind of rock star, there are just not enough skilled developers to go around.

A big part of the problem is due to the DotCom bubble which has scared college graduates away from jobs in software development for the past several years. There is very little new blood to fill our current need. And outsourcing is not sufficient either. According to Google, talent runs short in India too. But what can be done?

I believe it has come to the classic choice: build or buy. The best developers and consultants I have worked with are also good teachers. I have been seen these top developers assigned to major projects, lacking a complimentary staff, only to move on before such a staff can be found and hired. The most frequent reason being, they want to work with a better team. I think instead of working these top developers to the point they quit, you have them bring in junior developers and build their skills. Over time you will have the team you want.

Take a novice developer who is full of energy and eagerness to learn and give them targeted tasks to help them grow their knowledge and confidence. Feed them the same work until they master that area. You allow them to specialize instead of generalize. A good place to start may be the data access layer or just the user interface. Do not expect them to be a jack of all trades right away. In their own time, if they really have that special gene all good software developers do, they will pick up additional skills in their own time and volunteer to take on new challenges on future projects.

The benefit here is that you will get work done. I would suggest the ideal team would involve the following:

  • technology lead (mentor)
  • mid to senior level developer (mentor and coach)
  • novice developer (data access layer)
  • novice developer (user interface)
  • novice developer (business rules)

I also assume that a senior business analyst and project manager will also be involved, but a BA and PM will be able to handle multiple projects, giving you the ability to run 3 to 5 teams of this makeup. The top 2 developers will work closely together to plan the work, break the work into specializations and review the code by the junior developers. The senior developers may only write less than 20% of the code for the project, but will ensure that 100% of the code is up their standards. The junior developers will bang out code and learn from the code review sessions. The experience from the senior developers will gradually be transferred to them as they grow beyond their current role.

Keep in mind that you are also not just developing the skills of the individual team member, you are also fostering a team which can anticipate each other. When the team can intimately know the strengths and weaknesses of their teammates, and guide future projects based on that knowledge you will have a happier team and more successful projects.

Of course there are those lead developers who live for the herculean efforts, to be that one man show who takes on the mountain and wins. Such developers want to bang out all of the code in order to truly fulfill the vision they had when the project began. But there is another way to seek that satisfaction. I think of a orchestral conductor, directing a group of performers to play a piece to perfection, just as the conductor wanted. In the same way a technology lead can orchestrate a team of developers to complete projects in their vision. Doing so on time, under budget and perhaps with a few extra features has to be much more rewarding than the hurculean effort.

7 Responses to “Skilled Developers: Build or Buy?”

  1. Geoff Lane Says:

    As with most things in American business, it comes down to how long a view you can take. Currently most companies do not plan beyond the next quarter or the end of the year. If it's not profitable by then the project is shut down. Mentoring and developing talent, like research, can take many years, so most companies will not invest in it.

    The other thing comes down to psychology and motivation. What drives you to work? What do you find satisfying in the work that you do. People who are managers can find satisfaction in running a team, deriving this satisfaction through the work others do "for them". Many developers find what they do satisfying because there is a tangible output that they create everyday. They might not find the role of mentoring, project managing, and the like to be personally satisfying. This isn't about what's right or wrong, it's about finding a match.

    Neither Orchestra Director or Solo Virtuoso is right or wrong, they're just two different sets of skills and desires.

  2. brennan Says:

    What I am suggesting is that the long term approach is now becoming necessary. I understand what you mean about the 1 quarter outlook. That is too true. And this short term view is adding to the problem. It all depends on the company and the level of work which is available. You may consider 10% to 70% of your staff could be made up of junior developers depending on your situation.

    My premise also suggests that a junior develop could show a degree of mastery within a specialty inside of a quarter with the proper mentoring. There are several pieces here, such as a willing and able mentor as well as a willing and able novice developer.

  3. Nick Says:

    I agree with you Brennan. In the past I got one of my friends to my office, and even that he knew a lot of stuff for computers and programming, he was very unfamilliar to web technologies.

    Back then we had some flash related projects (in which we integrated flash with a database backend) and I wanted someone else to do the flash job. His work start to be productive after about 3-4 months, but till now this guy is my flash guru, and I know that I have a trusted person to do the flash work for me. The best thing is that he learned according to the needs of our business, and that's the best of all.

    I mean that even if we hire someone who is very talented, he/she will need some time anyway to learn about the way we work, and to be familliar with our home grown development tools, so the time loss is not really big.

    The long term approach is needed for every serious business(not only to the IT industry), and even that it is not profitable in the begining, it is for sure the way to go if you want to be on business for a long time.....

    PS: Sorry for my english, hope you understand what I wrote here :)

  4. David Medinets Says:

    I agree that it's the responsiblity of senior developers to mentor less experienced developers. However, it's hard to form a deep commitment to companies and projects when your own experience shows that companies have no loyalty to employees. Regardless, I still strive to instill pride and knowledge in my co-workers.

  5. Radu Bretean Says:

    I work in my company for more than 5 years and I can say that I become an experienced developer, expert on my kind of projects. And now, I have to teach and to assist junior developers and for me this is not satisfactory. As Geoff Lane said before: Many developers find what they do satisfying because there is a tangible output that they create everyday. They might not find the role of mentoring and project managing satisfying.
    On the other hand, working with a beginners team, does not help me to evolve and to gain more experience and knowledge, but to share it with the others. You might say that I am selfish, but I fill that I still have a lot of thinks to learn. Plus, took me a lot of time to learn complex items and now I have to share all this knowledge with peoples with doesn't know to appreciate it and to respect it.
    So, I think these are strong reasons for many senior developers to leave their current jobs and to search for something more.

  6. brennan Says:

    The trouble with seeking someplace better is that it is becoming so rare. It is difficult to find a team of top developers in a single place. I also would not call it a beginners team. A novice developer can write just as good code as a senior developer with the proper guidance and peer review. I have also found that by teaching, a senior developer can also learn a lot. New developers will ask questions the teacher never considered or even challenge the outdated assumptions the teacher formed with past experience. By teaching you can refine and deepen your knowledge.

    Also, there comes a point where a developer's life changes. Perhaps he/she gets married and wants to spend more time with the family instead of being buried in books at the computer. At that point, the developer will really appreciate having their custom trained developers available to help them dig into a project and work those late hours for them.

    I would not want to work with someone who does not want to help the rest of the team either. Hoarding information and flying solo does not make for a good team member. It also does not make for a good leader.

  7. degnan Says:

    This is refreshing to read. I like the effort you put into analyzing as to why there is a current shortage of good developers. What I really appreciate is your attempt to solve the issue of "raising" new developers (novices) to a higher and more exiting level.

    Another reason why there is a shortage of good developers is not that they are discouraged, but that technology has been moving ahead much faster than the graduation dates for our colleges. (just a thought) It might be, and I am just fishing here, that this technology wave we are currently experiencing might soften itslef out to allow for technology enthusiasts to catch up. With that in mind, maybe we willhave a chance to catch up and catch some breath before the next wave hits. :-)

    Anyhow, I enjoyed reading your blog. Good job.

    Oliver