“We just need more software developers!” - Really?
Many developers of (digital) products have the same complaint: software development capacities are lacking in many respects. More specifically, CTOs, the leaders in development, as well as other leaders in the field, are often vocal about needing more good developers: “We just need a lot more software developers to take full advantage of business opportunities and master the challenges of digitalization.”
Recruitment consultants and software agencies are wringing their hands: the former because they collect very high commissions just for classic matchmaking, and the latter because they can always sell available employees at a higher price.
Really? Is it enough to add more "heads"?
Why, then, is it so difficult to attract good developers - apart from the fact that there are far too few in the urban centers?
Many companies that work with software developers were created with traditional business models. Because of this, they are often not prepared to be attractive employers for tech talents with their market presence. They are also often located in cities like Kaiserslautern, Gütersloh, or Künzelsau - in other words, not places where young professionals want to live. And most importantly: many of these companies are still trapped in traditional cultural structures, with steep hierarchies, top-down “waterfall” approaches and bureaucratic structures. Even if they manage to win over tech talents, it is difficult to successfully integrate them into the existing teams as permanent fixtures.
If you want to build a truly powerful software development unit, you need more than just “heads”: You need a strategy and a stringent approach, such as finding additional talents with passion who can be integrated into the existing organization.
These six principles can help you build a world-class tech organization:
1) Understand the big picture
What exactly is the “overall significance” of the stakeholder, and the company, for which the software development team is working? Why does this company exist, what are its goals, how does it define success? What does the roadmap look like? Towards what long-term goals are the development teams working? The clearer the picture of where the company sees itself in two or three years, the better the development teams can do their work. Constantly changing (and/or excessive) priorities, an ambiguous roadmap, a blurry customer and sales strategy - all of these are poisonous for a powerful software development organization.
If the developers are working towards getting a man on the moon, they have to at least have a clear picture of the moon so that they have it in sight and know which side of the Earth to start on. How else can they develop powerful technology?
2) Develop clear, measurable goals
In many companies, software is now much more than just a means to an end: it enables an ever-greater share of added value. For example, the user experience at a car-sharing company is influenced much less by the vehicles than it is by the software with which the customer uses the service. Other companies, such as gameprovider, exist only through software.
But since software has such an immensely high value for the success of the business, the development team needs transparency: if a certain feature suddenly makes a monthly turnover of a million Euros more than before, that is more motivating for the development team than almost anything else. The team wants to see the impact their work has on the business and how it runs. Companies that don’t have the confidence to communicate these figures internally have no chance with the best tech teams, because they cultivate a culture of mistrust and secrecy.
It’s not about communicating technical goals such as velocity and predictability. These are important, but not as important or motivating as the actual result behind the technology, i.e. business results which are only made possible with software.
3) Establish stable, reliable product management
If it’s not clear what the product roadmap looks like, how a subproject fits into another, and what priorities need to be implemented, a software development team cannot be successful. Clear and stringent product management with straightforward, consistent prioritization is an indispensable prerequisite for a successful development team.
Erratic management, “instinctive” decisions, fast, abrupt and frequent changes in prioritization (which some consider a “valuable part of startup culture”) are surefire ways to destroy the medium- and long-term performance of a software team.
Outstanding software development teams are built on reliable product management and flexible reactions to current demands, because they are only given the clear framework within which they can prioritize their responsibilities and use their unique knowledge and experience. No one can fine-tune better than the development teams themselves; product managers would be well-advised to accept that.
4) Build Trust
This is probably the most important requirement for a successful software development team: trust. World-class development teams can’t just be guided with command and control. Software development is a very creative process that doesn’t function well under excessive control and pressure. Truly outstanding software development is founded on two pillars: on the one hand is a certain handicraft, for example logical-analytical, structural and systematic thinking, abstraction, and knowledge of programming languages and techniques. On the other hand, there’s the creative ability to unconventionally think and rethink things, to brood over a task for as long as necessary until a convincing solution emerges.
Unlike, say, a floor tiler, whose services can always be measured in, for example, the number of tiles laid, it is virtually impossible for a stakeholder to estimate the performance of a software developer “along the way.” Only the finished product enables an assessment of the developer’s performance, but also only to a limited extent. Most people can’t measure the actual performance of a cardiac surgeon or the research of a nuclear physicist, but they can measure the results. It is counterproductive to exert too much control (e.g. through time tracking) and thereby lose trust.
5) Show honest appreciation
What keeps employees at a company: payment, exciting projects, lots of free time? The answer: purpose and affirmation. Engaged employees (not just in software development) want to see purpose in their work and to receive affirmation for their results. Both things qualify as honest appreciation. If management doesn’t take care about their development teams or adheres to an old ’80s mentality (“They should just be glad they have a job!”), if members of a development team feel like they’re just a number, then nobody is motivated to go the extra mile; nobody sees a purpose or feels affirmed in their actions. Payment and exciting projects are also important, of course, but they aren’t enough to keep talented people long-term. More and more companies would practically disappear without their software development teams. This has to be communicated both internally and externally and underlined with clear, honest appreciation.
6) Nurture an error-tolerant culture and continuous learning
Errors cannot be blindly sanctioned, but they have to be the basis for continuous learning. At the same time, feedback from the development team has to be heard and processed: nothing is less motivating than feeling ignored. The issue of “technical debts” also plays a role: the more a company builds upon producing hectic and quick solutions and accepting poor technical implementation, the more disheartening the bad results will be for the development team.
Most developers just want to build really good technology. They want to take risks and make mistakes, learn from them, and then present a better solution. They are rightly frustrated if they are not allowed to make mistakes and learn from them (i.e. because of poor project or product management or time pressure).
So what is indispensable to a world-class software team?
These six points make it clear that managing a software development team in some respect is different from managing in any other field. Those who recognize this and act accordingly can take advantage of the breakthrough technologies that will drive their businesses forward. It pays to invest in a good software team.
Management of a software development team has a lot to do with culture, communication, and people skills. That’s right: a people-oriented approach is indispensable to obtaining the best technology. Many companies that need software development teams have not (yet) mastered these management skills and would be well-advised to learn them quickly - or outsource their software development management to providers that truly know how to attract and manage brilliant tech talents.
Rolf, thanks for sharing!
Rolf, danke fürs Teilen!
From this article, the last point is very important (below):. Management of a software development team has a lot to do with culture, communication, and people skills. That’s right: a people-oriented approach is indispensable to obtaining the best technology. Many companies that need software development teams have not (yet) mastered these management skills and would be well-advised to learn them quickly - or outsource their software development management to providers that truly know how to attract and manage brilliant tech talents.
Very interesting article. Ironically - many companies which are unable to attract talents and build dev teams expect the same approach from their more-experienced service providers. That "anti-agile" attitude is still very common, especially in Central Europe.