Contents

Growing a Software Development Team

A View Of Many Years In The Trenches

Have you thought about how to grow a Software Development Team? How do you get juniors into seniors? How do you keep seniors motivated and engaged, not feeling the need to look for jobs elsewhere or afraid of becoming obsolete? This is not an easy subject, but a question on my last day of work at my last company got me thinking about it, and I will add my two cents to the discussion. Take this with a grain of salt; after all, I am no expert, and I am most likely wrong. Sorry!

The question

Do you have any suggestions on the organizations of the teams so that we can get better growth from their members?

I know, it is a loaded question because I was a member of those teams. A member that eventually left because I did not like what was going on or how I was treated. But I do not want to focus on that part; I want to be positive and focus on what we can do to grow a team.

Junior vs Senior

Before explaining my idea, I want to clarify my definition of Junior and Senior. I do not believe that people become Senior just by being in the same place and doing the same thing year after year. I believe people should learn from their mistakes and evolve their craft. In this area, if you stop learning, you become obsolete. I may be a Senior on a technology that nobody uses, or just because no one wants to learn that technology, but it is still used by big corporations that pay a good salary.

Do not get me wrong: I have nothing against people who just accommodate to their role and learn nothing new. It is a choice people make, but that is not one I make or recommend. Knowledge is something that we can always increase; it is something that opens doors and possibilities. Why should we limit our knowledge? But I digress…

Another point that I need to make is that no one is Senior at everything. We are all Juniors in some area. I guess the main difference is that once you have worked in the field, with different techniques, architectures and patterns, you get to a point where, when you learn about a new software, you identify the patterns and can safely make assumptions about how it works internally. For me, this is what distinguishes a Senior in some area from a Junior: the Senior knows how things are done; the libraries or frameworks aren’t simply a magic black box, but a set of patterns that is part of the tool belt.

When a Junior arrives at a team

Usually, teams grow by having a Junior joining the team. Even if the person entering the team has been working professionally in the area for years, that person is still a Junior. After all, there is always a knowledge gap: learning the process and organization of the new company.

When someone enters a team, they should be guided. This means guidance both in terms of company processes and practices, but also in terms of the project itself and the tools being used.

Have a Senior be the Junior Coach/Mentor

Ideally, the person that guides the Junior is a Senior: someone that knows the ins and outs of the project to be a proficient contributor; someone that knows the companies bureaucracies and processes.

This requires a careful balance. As I have learned recently, the way the market works is not the most fair one, unfortunately. If you stay too long with the same company, you end up being taken advantage of. Chances are that if you stay for more than 4 years, a new employee will be admitted with a higher salary even though their skill set is not the same as yours. Life as taught me a lesson: we need to check our market value by going to interviews and doing the jump if it does. If you don’t, you will see people with less experience and knowledge than you making more money per month. I had the experience of asking for a raise, being offered scraps, submitting my resignation and being given a counter-offer an order of magnitude greater than the scraps. My advice: do your work; don’t let them take advantage of you. But I am digressing again ๐Ÿ™‚

Another point on which you need to be very careful is motivation. If you have Seniors making the same or less money than Juniors or constantly training Juniors, why should they bother? If they have a coach profile, they might like to teach and show how things could be done. But eventually a sense of injustice will creep in: why should the senior teach someone who earns more how to do their job?

On top of that, we have the bonuses. I believe bonuses are counterproductive. They are counterproductive if applied individually, as it will lead to competition and information hiding. They are also counterproductive when applied to the team: why should I work myself to death for a bonus, while my teammate watches YouTube videos?

All of these variables come into play when you mix Juniors and Seniors on the same team. It could work well, but it can also fail miserably.

Seniors should also have a Coach/Mentor

With the Juniors having a coach or mentor, what will we provide the seniors with so they can continue to grow? This is not a simple question, but we can look at some alternatives:

  • Find Someone Outside

    You can hire someone outside the company, or simply outside the team or group the senior is in. This person could be his mentor, guiding him and challenging him to continue its growth.

  • Communities of Practices

    Having communities of practices inside the company can help people stay motivated to learn new things. The simple act of sharing what you tried, what you read about, and what you played with, can energize others to also learn more. Just remember that these communities have a price: people need to participate, and you will need a small team to organize the community.

  • Conferences

    Have you ever considered letting our Seniors go to paid conferences? It acts as a bonus, a recognition, and a way for them to feel energized and wanting to evolve in their role

  • The Internet

    The poor manโ€™s alternative to learning. The Internet is both good and bad, depending on how you use it. If you provide time for people to learn, read and experiment, seniors will be more willing to try new technologies and keep them in their belts for usage when the time is right, unlike juniors, who always want the latest and greatest now ๐Ÿ™‚

Key Take Away

Growing a software development team is not easy, but it is one of the more important things you should focus on. Having a clear way of working, having mentors, and having a clear path and method for individual growth are crucial to keeping everyone engaged. I have seen teams be destroyed by the continuous moves of members between teams, leading to a lack of culture, or way of working. Having clear roles, mentors, coaches and pupils, will allow everyone to know what is expected of them and how to grow in their role and in their life.