I sit in many groups on LinkedIn and see a lot of job postings go whizzing by. Some of the more popular groups that I’m part of have 10-20 new job postings daily, which seems like a lot. Many of these job postings are calling for Jr developers and I have to ask myself the question. Why?
I know, small and large business owners, that this is a tough economy and you are trying to save some money. You may even consider interns for a lot of your development needs. However, lets discuss this in some abstract terms so we can look at the situation correctly.
When a Jr developer (in skill, not necessarily title) is building an application, the effort is akin to throwing some cooked spaghetti against the wall and seeing what sticks. The developer can think of many ways to try to do something. If one of those happens to work, that is what ends up in your application. Your Jr developer is just happy because something worked. The items that are not taken into consideration are what the development effort might to do the network, database, computer running the program, or architecture. I like to use home building analogies when I talk about development, so let’s go with this. It would be like a home builder not worrying about how the electricity, gas or water will get into the house, not worrying about whether or not the house is situated properly on the plot or will interfere with the placement of a future road.
Unfortunately, there’s additional consideration with developing that you generally don’t have with building houses. You like the product you have, or your customers like the product you have, but you’ve gathered a few small suggestions for improvement. In short, you’d like to add on. This is perfectly normal, and developers would probably wonder what was wrong with you if you didn’t want the product to continue to evolve. If you’ve had a Jr heading up the building process, you’re going to find out you’ve incurred a lot of technical debt in the building process and that adding on is now cost prohibitive or impossible. When the Jr simply cannot do what you ask, you have to bring in someone more senior to take a look at the problem. This Sr will probably see such a mess that they’ll recommend a rebuild. It’s no different than having to rebuild the house because you need to re-orient it on the lot or make a major adjustment to the foundation to allow for the utility lines.
I know what you’re thinking – this guy has railed on Jr developers a lot and they really don’t deserve that. Besides, how are we going to get Sr Developers and System Architects if we don’t start out with some Jr Developers?
I completely agree. Let’s keep our technological pipeline full. However, this is a situation that more college or university coursework cannot rectify. Your Jr needs experience and the only way to get it is to try and fail and try again. I think what more workplaces need to make their Jr’s more effective is a decent mentoring program. It should include these things:
- Pair programming. Your Jr needs to sit with a smart and effective Sr or Architect and see how they solve problems.
- Architect the work out beforehand. This is probably as effective as pair programming. Your Architect plans out in UML how the application should work. Of course, your Architect cannot and should not plan out everything to the most minute detail. However, by seeing this example, your Jr will be able to get the overall idea behind an application structure and learn how they might solve the smaller problems in the app. Of course, your Architect will need to be available for questions.
- Code Reviews. After your Jr builds something, have a code review that focuses on growth. It’ll be discouraging if you mention everything that’s wrong, but pick some of the larger items and offer alternative ways of doing things. You might also want to consider having the Jr fix the items in the code review before declaring the work fit.
There are reasons to have Jr Developers in the office.
- You want to keep your pipeline full, realizing that there is a lot of turnover in the industry.
- You want to train them in your development methodology or your specific and obscure programming languages.
- You have a great hierarchy of upper level programmers that can mentor your Jr’s and bring them up to speed quickly.
- You’re planning a throw-away project. You need something to work for the short term. However, please realize that a Jr can turn a short term project into a long term project quickly. Also, most projects live long after their planned lifetime, so use this reason with caution.
The #1 reason not to bring a Jr developer into your organization is to save money. If you can’t provide this kind of infrastructure and development effort to your Jr developers, it’s probably not cost effective to hire them. 3 Jr’s at 35k a year will be less profitable than your 105k/year super effective Architect.
For additional reading, I’ve been really impressed with Grant Skinner’s Creating Great Developers series.