Back when I was a young man at University, I decided it would be a good move to add the theory of software development processes as one of my majors. Passionate about technology, I felt the class would serve me well in the years to come as I started out my new career in this forward-thinking world. Upon graduation, I was hired by a young, fast-growing company called EXASOL. A few weeks into the job, I realized the title of the course could not have been more accurate; it was theory and nothing more. A class of neat, straightforward processes, techniques and easily measured milestones that quickly drowned in the complex sea of the real world of tech. This experience left a strong impression on me. How could any student be set up for successful application when offered only an ample supply of theoretical guidance?
In the years to come, I moved from the role of a software developer to the head of the team, head of R&D and finally CTO. I am grateful for the experience that came with moving through each of these roles and the many things I was able to learn about software development during what has been an exciting and fascinating journey. I was able to see how customer requirements were collected, converted into designs and implemented features. I also learned how difficult it is to find a good compromise between the contradicting dimensions features, time, and quality.
Concentrating on defining the right process, writing down rules and establishing tools to measure, control and manage the whole team isn't something to overlook entirely and thinking about methodologies, communication techniques, quality assurance and integration cycles is essential. Still, the most decisive factor for an efficient and successful software development team is to hire the right people. A balanced team of synergistic talents and personalities will create a powerful team. Let me be clear; I am not talking about roles such as architects, developers, project managers or QA software testers. What counts is simply their personalities, and these are the types I believe you need in your team:
The Genius analytical architect
These folks love learning new programming languages in their free time, understand (and even predict) new technology trends. They are extremely keen on creating a “beautiful” architecture. Some of them grow into responsible team leaders, but you may not want them to be distracted by organizational tasks.
The creative and smart hacker
This type of developer regards him or herself as an artist. They know all about software patterns, but also efficient low-level programming to minimize the memory and CPU footprint. They act quickly when hacking down software solutions and love the challenge of optimizing the product.
The responsible and communicative developer
These developers demand fine-granular design documents, a good interface structure and thorough tests that ensure that the features are doing what was required. Allow these team members to do more than simply implement tests for the others.
How they work together:
The genius architects will ensure that your product relies on a future-proof foundation, that changes can easily be adapted and interfaces and APIs are thin and reasonable. They will decide to refactor certain parts of the product if needed.
The creative, self-motivated hackers will find efficient algorithms to implement the majority of the product code, always focusing that they can be proud of the result. This helps to avoid bad performing code with lots of bugs, and you can assure a high level of know-how.
And finally, the structured and communicative developers will support the rest of the team and keep the process organized. They have a focus on automated tests that guarantee that the maintenance work and bug search doesn’t turn into a decelerating issue. And because they like to communicate with the others, the information flow keeps everything in a healthy state.
It is important to look beyond the CV and hire self-motivated, smart people who are dedicated to their jobs. This is the key to creating outstanding teams. Finding balance also ensures that you won't need to micromanage and can instead work creatively with teams you trust. I am extremely proud of the R&D team at EXASOL. They managed to create the fastest analytical database on earth based on a complex and challenging parallel architecture optimized for in-memory processing. When I am asked about my personal contribution, I always reply that I have just found the right mix of great team members, and nothing more.