Software developers are a specific group. While every person is unique, some behaviors and qualities of many developers, or aspects of their work, are clearly different than the average employee’s. In this article, I am going to list what I believe is so specific about programmers, and how it may impact your job as their leader.
If you’re working in a different industry, the below list may help you understand some challenges that managers in IT (or software development, at least) face. And, quite possibly, see things from a bit different perspective the next time you want to blame the IT department for not solving problems in the way you would expect (like ‘why can’t you just add more developers to this project?’).
1. Developers are very smart
First of all, you’re going to be working with people whose IQ is usually much higher than the population average. It’s an honor and a truly exciting opportunity, if you think about it. It also means an extra effort for you in order to make sure that their work remains challenging and that you keep their engagement high.
Developers will also be more resistant to various pseudo-leadership techniques, and will easily see through even slight manipulation attempts. Forget about sugar-coating, feedback sandwiches etc. Be open and honest if you want their trust.
2. Hiring developers is difficult
Even if you haven’t had a chance to hire anyone yet, you’re probably aware that this job market is very challenging. Finding someone with really good skills can take a long time. You’ll be competing with many other companies to attract the best people, and it won’t be enough to just pay them higher than others. Organization’s culture, working environment, tools and processes in use, types of projects, skills of the current team members – it can all count for your candidates.
Opinions about employers spread quickly throughout developers’ communities, so you may need to work on your brand for a long time. Moreover, it’s not easy to properly assess a candidate’s potential, and hiring the wrong person could mean wasting another few months.
3. Developers are narrowly specialized
You can’t simply replace one developer with another. Not only are they usually focused on a specific technology stack (like Java or .NET), they also typically have preferred lower-level technologies, tools or system layers that they focus on (like front-end or database). Changing that can take a lot of time (we’re usually talking years to become an expert), and it may be a similar case with knowledge about a particular system or project.
This makes replacing people who leave the team more difficult, as well as affects flexibility when planning projects. You can’t just move developers from one team or project to another when the business changes priorities – you need to make sure they will fit in with their skills, and give them time to learn the insides of the other application. And for a complex system, losing a developer may mean an irreversible loss of knowledge for the company. This is a much higher risk than for most professions.
4. Developers can differ in abilities vastly
Another reason why you can’t easily replace a team member is the difference in their skill level. Being a great developer does not only mean delivering software a bit faster or with higher quality than an average one. Such person may actually be able to accomplish things that others won’t, e.g. due to the problem’s complexity or deep understanding of some technology that required years to master. For some types of software, you may not even be able to move on without hiring some top talent in the field.
5. Developers hate being managed
This point can obviously be related to other professions to some extent, but it’s the software development world where Agile concepts have gained the widest adoption so far. Because of that, many developers are used to working in self-organizing teams and are especially sensitive to attempts of interfering with the details of their work by management. If you don’t have a fresh technical background, better stay out of the way and trust your developers to make good decisions. Even if you do, avoid forcing the team to use your own ideas for technical solutions. Help your people grow, coach them and facilitate discussions, but allow them to find the path to building high quality software on their own.
6. Developers’ work is a creative process
There have been many attempts to fit software development into manufacturing patterns, treating employees like factory workers that have a detailed plan and execute it in a predictable and strictly controlled way. So far no such process has been applied successfully on a larger scale, simply because writing code is a creative activity that cannot be defined, estimated and planned so easily.
Building software means solving a different type of problem every day, even for very typical, ‘boring’ business applications. There’s always some unexpected obstacles or issues to investigate, new technology aspects to understand, high- and low-level technical design considerations, not to mention writing complex algorithms or designing UI details. Each of these activities may depend on having the right idea ‘click’ in a developer’s head, and thus each of them may ruin a carefully crafted plan.
That’s why programming is difficult to plan in detail and estimates are frequently missed. There are also other implications, e.g. developers need to work in peace and quiet most of the time, to focus and eliminate distractions. However, they also need the freedom to discuss ideas in a group, consult solutions or get help from others. Think about it when planning the office space or coaching the team in communication practices.
7. Most developers are introverts
It’s usually estimated that between 1/4th and 1/3rd of the population consists of people with an introvert mindset, who are motivated by their internal thought process rather than interactions with other people (I’m simplifying greatly). Among software developers these proportions seem to be opposite. This has a whole lot of consequences from the perspective of a manager, starting from your daily communication with such individuals and their preferred work environment, to the way you deliver feedback for them and recognize their achievements. I am going to write more about this topic in future articles.
8. Developers don’t dream about a management career
Most people treat their job as just something they do from 9 to 5 to earn money. Then they go back home and spend the evening with their families, or engage in their hobbies, counting days down till the weekend.
But developers… They just love writing code and creating software. Well, not all of them, but many. It’s not frequent for an activity performed at work to be so interesting that you would eagerly do something similar in your free time – and developers are just that lucky. Because of this, many don’t even consider other roles and are good to work as developers for the whole career.
This means a bit different challenge from an engagement perspective. You won’t motivate a developer by saying ‘today you’re working on crappy stuff, but hey, one day you may become a manager of this mess…’ No, you need to seriously take care of ensuring that the work your people do is meaningful and interesting.
For the reasons described above, some of the generic leadership advice that we can learn from various sources will not apply to our industry, or at least it won’t be so straightforward. You might need to focus on different aspects than other managers, assume different priorities, and face problems that would rarely happen outside of IT or software development.
Do you have any observations of your own about this topic, or anything to add to this list? Please share your thoughts in the comments.