I’ve had the pleasure of hiring and building high performing software engineering teams over a decade for multiple companies. These teams delivered great products and great value to businesses. I admire these teams not because the results they had produced, but how they worked together throughout the journey. Over these years, I have learnt the key to build great software is developer happiness. When your developers are happy, the engagement levels go high which results into higher outcome.
A happy developer is far more productive than one who is not. It requires conscious and continuous efforts to keep a developer happy and ultimately raise the productivity of team. It is essential to understand that building software is a collaborative process – you need enthusiasm, inspiration and motivation of the team to be successful.
Developer happiness is usually a by-product of how you manage and lead your developers. In many ways, managing a developer is just like managing any other employee. However, developer are more like artists and require different handling. The role they perform requires logical analysis, creativity, big-picture thinking and focus on low level details – sometimes all at once.
Keeping a developer happy, requires understanding of what motivates him/her. You might say it is the money which motivates a developer, but developer motivation goes beyond monetary attributes and sometime may not be related to it at all. Let’s put the list of items that I have learnt to bring the best out of my software engineering teams (including developers, business analysts, architects, testers and devops engineers).
1. Developers are human too
Developers are often looked & perceived at as geeks. Sometimes this perception leads to discussions or engagements which are very monotonous and boring. One of my guiding principle is to try to understand the human side of every developer. It gives more understanding of what their needs are, how they perceive things and how they are doing beyond work. Building the trust and relationship is key to drive engagement.
2. Take care of new normal expectations
With changing times and fading boundaries of work, things considered key differentiators (to why developers should work for you) in past, have become the new normal or considered as default expectations. These may not motivate an individual directly but contributes to overall performance.
Below list of items will greatly help to keep most of your workforce engaged (not alone developers)
Recognition of their ability
Promotional opportunities
A fair and pleasant workplace
Work/life balance
Recognition of work
A supportive, fair and competent manager
3. Balance benefits and compensation
Any employee would like to feel that they are being fairly compensated for time and expertise. As a result, the following items generally will not make them motivated, but will help keep them motivated.
Competitive compensation
Quality benefits like health insurance, family insurance
Tuition reimbursement
Available funds to take training classes
4. Opportunity to learn new technology skills
True developers understand the value of on the edge of technology and with technology getting advanced every release cycle, developers must update their technology skills. Through regular dialog you can identify these candidates and facilitate the opportunities to learn new technologies.
5. Provide tools and workstations (yes – state of the art)
Sounds a no brainer – but this is a big motivation factor for developers. I had spent sizable time convincing some of the top executives to upgrade workstations or necessary tools for my development teams. Most of legacy organizations still consider developers as another end user in the organization and assigns a regular desktop/laptop for work – this is a recipe for disaster. Development toolset requires a much higher configuration and developers should be given more than what is minimum system requirements. If you spend more time building you code than writing your code, it is the time you should upgrade your machine.
6. Give enough Trust and Time
Developers don’t like managers who keep on reminding them about timelines and interfere too much with design or code. Micro managing developers is not going to work in long run – as a manager you need to start trusting your team, give them a task and tools to deliver (don’t tell them how to deliver unless they are not delivering or you see a problem that needs addressing). Some of the projects that I worked on required us to hire developers who can be productive from Day 2 (if not from day 1). This is not impossible ask but requires a lot of prep work for you as a manager to explicitly list ramp-up resources, have self-explanatory tasks, clear guidelines for the new developers. It is also important to define your hiring process to find hands-on hard core developers who are keen to start full force from day 1.
7. Communicate regularly
Communication is not about sharing emails, setting up meetings or exchanging documents. It is about translating the key decisions to developers in a language they understand. It is about asking them what is going on well, what is not working well and where they need help. Personally, I am a big fan of 1 on 1 meetings and I like to document all 1 on 1 minutes in a spreadsheet so that my developers are aware of my expectations and I am aware of their asks.
By no means, these list is exhaustive but covers majority of what worked from me. I do understand what works in one organization may not work in other – but can be used as a reference point to derive what works for you. Developers are key contributors of software value chain and ignoring them can be self-destructive. In order to make some of the changes that I have highlighted above, you would need to work closely with HR and your IT stakeholders. It is more of bi-directional coaching and continuous learning.
Do let me know how you handle developer happiness at your company? I am keen to hear your ideas, thoughts and comments. Keep your developers happy! Stay Awesome!