Being a senior developer who also has an executive function as a leader of a team of developers is quite a challenge.
Here’s a little backstory:
Close to a year ago, I was hired by a software development company. One of my first tasks was to manage a team of programmers who were supposed to develop software for an architecture and design company.
At that time, I was not sure if my new boss was just testing my abilities or setting me up to fail. Either way, there was no way of getting out of it.
Things got even more complicated when, in addition to my lack of leadership experience, I learned that the people I was supposed to manage had never worked in a team. They’d worked in different departments, had their own tasks, and had stuck to those tasks every day they came to the office.
Nevertheless, there was a lot to do, and I had no intention of doing the whole job myself. So, after a series of meetings, I got to know my team—more or less—and started to delegate tasks to people with corresponding skills.
After we struggled (it seemed to me) through and completed the project, I asked team members to fill out a small questionnaire to rate their satisfaction. The results were surprising to me, as they changed my perception of the role of delegation in leadership:
The average time a team member spent on doing a task had been reduced by 30% and the average satisfaction rate had increased by 40%.
The results made it clear: Leaders aren’t born, they are made. And the skill of delegating tasks is an important prerequisite to becoming a leader.
The Connection Between Delegation and Job Satisfaction
- Job satisfaction grows with geometric progression, when a leader regularly delegates tasks
- It takes team members less time to perform their work, primarily due to a perceived autonomy, with no impact on the quality
The study explored the feedback from people who worked in different areas that include software development, such as healthcare, governmental work, and private enterprises.
How do You Delegate to a Team of Programmers?
Although delegation, in general, is very important for successful leadership, the way it is applied depends on the area in which you work.
As for programming app and software development, here’s what I learned when delegating tasks to my team.
1. Do Preliminary Planning
Before delegating, make sure that you understand the technical specifications of the whole task first.
Start breaking the task into bigger chunks, and then break those into smaller chunks. For instance, if your team will be working on new software, there are usually several important segments to this task:
- Creating a database
- Managing the business side of software development
- Working on user interface (UI)
- Testing the software
These segments can further be broken into several chunks as well:
- Database: choosing database software (Microsoft SQL, Oracle, RavenDB, etc.), figuring out security standards, encryption, vulnerability evaluation, etc.
- Business: law compliance, compliance with contractual obligations, etc.
- UI: working on input controls, navigation components, informational components, etc.
- Testing: implementing Software Testing Life Cycle, A/B testing, environment setup, result analysis, etc.
When it comes to programming, the devil is in the details. So, the more detailed your plan is, the better you’ll understand to whom you can assign each chunk of work.
2. Nurture Clarity and Avoid Micromanaging
Once you’ve planned the work to be done, it’s time to assign tasks. When assigning tasks, make sure your mission and message sound as clear as possible.
With a team of programmers, clarity is important. As I mentioned, in programming, the devil is in the details. I had a case when one of my team members copied and pasted the code from somewhere else, and it disrupted the whole system we’d been working on. In their defense, the code was similar to the one we were writing, but there was one small part of it that didn’t match our work, and that one difference made an overall impact.
The case with the broken code, however, almost made me start micromanaging my team, which is something you should absolutely avoid by all means. Micromanagement has a negative effect on employee engagement. Imagine how demotivating it can be when your boss criticizes every bit of work you’ve done.
Delegation is about trust. Even if you doubt your team’s skills, don’t doubt their ability to learn.
3. Say No to Task Switching
When writing code, reassigning tasks is an absolute no.
Programming teams often have pressing deadlines, and sometimes, team leaders may decide to reassign tasks if they deem it necessary to speed up the process. In reality, what they are doing is adding to someone’s already big pile of work, and the process doesn’t really go any faster. Worst-case scenario is that common programming mistakes like broken cryptographic algorithms and missing initialization will pop up and you’ll spend more time dealing with them.
In this case, you’ll have to apply your mentorship abilities rather than your time management skills. I always try to remind myself to be more democratic by remembering a tweet by Patrick Rogers, an SQL team manager from the international real estate company Flatfy:
All your team members have a different range of skills and experience. It’s your task, as their team leader, to use those skills and mentor them through this current experience.
Bonus: How To Be a Better Leader to a Team of Junior Developers
I’ve heard many senior developers complain about having to manage a team of junior developers.
I’ve also had the pleasure of working with a team that had no previous experience in coding or software development, besides learning the basics at college or during programming lessons.
So, how do you delegate tasks to a team of junior developers?
Start by explaining coding standards and architecture to avoid redoing the work several times. Junior developers often come to work right after they finish their education, so they might not be aware of the specific programming style that your company follows. Explaining coding standards and architecture would rid you from spending time on fixing coding mistakes that could be avoided.
Instead of delegating small and simple tasks, delegate bigger tasks to assign more serious responsibilities to your young team, like proofreading the code written by senior developers. Sure, it no longer will be junior work, but from my experience, junior developers spend more time on small tasks than they do working on bigger tasks. Plus, it is a great learning experience.
After coaching several teams of junior developers, I realized that they often come to a big company not to practice the skills that they already have, but to get new ones.
When delegating, keep in mind that junior developers need more learning experience. They learned how to do easy tasks while studying; now it’s time to help them advance their knowledge. Otherwise, they will have no motivation to contribute.
Working with junior developers is not a burden, but a rewarding experience. The value of bringing juniors to a company is an opportunity for seasoned developers to become mentors, help junior developers start off, and pass on their knowledge.
Delegation Is Key to Leadership
It’s a common misconception that it’s enough for programmers to know how to code, and that’s all they ever need to do. In reality, we are often asked about other skills that seemingly have nothing to do with coding, such as management and leadership skills.
In my experience as a senior developer and a team manager, learning how to delegate is key to becoming a good leader. Besides making teamwork more structured, you build trust and respect, which are so important to the quality of work and job satisfaction.
To sum up, remember these key points of successful delegation:
- Create a plan and break work into chunks before assigning tasks to your team
- Be clear and avoid micromanaging
- Don’t switch tasks
- And, of course, nurture your team’s knowledge and abilities, and always give them the opportunity to learn
With these tips, you’ll be able to better understand your team’s needs, organize their work more effectively, and become a better leader in general.