Putting together a perfect development team is not an easy task, no matter if you are a team leader or a CTO looking for a new off-shore team to help with your project.
Choosing the right people may be a complicated task and at first, you may think that the more skilled developers - the better. This is not always the case and this article will answer the question why your teams should not consist only of top-notch engineers.
1. They get bored with simple stuff
This should not come as a surprise. If you consider the things you work with rather easy and mundane you will get bored eventually and your motivation will drop. Although sometimes it is good to deal with tasks you can complete without a blink of an eye, they are not the challenges that help you improve and grow.
This is why senior developers should not be the only ones on your team as their motivation and overall job satisfaction will be lower when performing simple tasks. They can tackle the more complicated tasks while mentoring juniors handling the basics. Here, a mixed-skill level team will ensure that your juniors are getting proper training on a real-life project and the seniors are satisfied with the complexity of their job.
2. They may hate support tasks
Thanks to their experience in programming senior developers love creating stuff from scratch. There is nothing more rewarding than solving a problem by yourself and better than working exactly how you like to work. This is why they will probably oppose performing support tasks or other similar actions. Developers with more experience have a personal coding style and will not enjoy working on somebody’s else code. Obviously, it does not apply to every single experienced engineer, but this should be kept in the back of the mind next time a support / rescue mission will appear. However, a support task may be a great idea for the less experienced ones to learn from and since it will not require building the entire thing.
3. They are usually more expensive
Like in the case of every expert, the more experienced the developer - the more expensive the development will be. The infinite amount of hours dedicated to programming and developing skills will obviously influence the base pay rate. The quality code also has an influence on the price. In the end, a higher hourly rate is one of the reasons why we keep on growing and broadening our skillsets. This is why a team created including both junior and senior developers will not be as expensive as the one with only senior devs and more juniors do not necessarily mean worse code quality.
4. They tend to over-complicate things
Over-complicating can be a burden. Because experienced developers have seen it all they tend to know a lot of solutions to one problem. Therefore when choosing one they may not necessarily go with the simplest option, which will result in a more complex, less readable code. A fresh mind of a junior can be the key to a simpler and shorter code with less complicated features, which may influence the overall performance and time-to-market.
5. There is a risk of conflicting egos
As you may suspect, the more experts - the more opinions. If one considers himself an expert, he will strongly dislike getting guidelines from somebody on the same level. In teams, somebody usually has to become a leader to help manage the work and other people and this is where egos will come in to play. Although in some cases, this kind of quiet ‘competition’ will bring advantages, those conflicts will mostly bring more harm than good. With let’s say, one senior developer and two juniors, the former will become a mentor and take responsibility for the team members while the latter will gain experience and fresh knowledge.
So now a question of ‘Why do I need senior developers altogether then?’ probably popped up in your head. Well, this is why:
1. They are capable of handling most complex tasks
Your juniors will not be able to handle the complexity of your project at some point, this is a given. They will most probably get stuck at some point and will need assistance from the more experienced colleagues. This is why the more complex tasks should be handled by skilled engineers in order to minimalize downtime or get rid of it completely. Seniors can be great mentors and thanks to their experience working with clients will definitely positively influence the relationship with the client.
2. They are needed for planning tasks for other developers etc.
Planning task and overseeing architecture is where the experience of senior developers will come in handy. They will know how to divide task to avoid overwhelming those less skilled while getting results on time. The opinion of an expert is valuable for the entire team and the well-being of the project. Thanks to many hours spent working on commercial projects, a senior developer will be able to estimate the time needed to complete a given task, therefore, providing you with an exact timeline for the entire project.
3. Very valuable as mentors for other developers
As mentioned before, broadening skills and constantly expanding our knowledge is key and learning from others is the best way to do so. Therefore experienced engineers make great mentors for other developers, sharing their priceless real-life knowledge that cannot be found in books and guides. What is more, seniors will not only provide juniors with a ‘coding’ knowledge. They can set an example on how to communicate with clients, how to deal with stress or failures as well as how to maintain a great atmosphere within the team.
Those above-mentioned points should convince you that the main characteristic of your team should be cross-functionality. Teams described using this term are the ones consisting of a variety of people on a different skill level introducing collaboration and creating a perfect learning environment.
Diversity is a crucial part of growing, supporting productivity and problem-solving. By mixing developers on different skill levels encourages the atmosphere of learning and mutual support. This will ensure your project is not only of good quality but you are also training next best developers.