Software engineering is at the very heart of IT. Nevertheless, outside of software development departments this is often misunderstood. This interview with Joost Koedijk demonstrates his love of the craft of software engineering. It also describes the bright future he sees for software engineers and the undreamed-of possibilities of their products.
Can you give us some insight into the current trends in software development?
The craft of software engineering, which is only a mere 60 years old, is experiencing a strong come-back. It started as the substitute for the more prestigious and better-paid jobs of hardware engineers, but in fact it was the software engineers who shaped the business world in the seventies and eighties. During these decades, more and more secondary processes in bookkeeping and inventory stocks, for example, were automated. The desire for cost reduction of software development, standardization of secondary processes and a broader penetration of (administrative) process automation led to the blossoming of ERP and COTS (Commercial Off The Shelf) systems. In addition to this trend, the remaining in-house software development was outsourced, with varying success, to developers with lower hourly rates, mainly in India and Eastern Europe.
The availability of standardized software is still on the increase. And it is not only the number and functional richness of ERP and COTS solutions that are still growing. Operating systems and application servers likewise provide more and more functionality. The ongoing success of these solutions make it difficult for our Western society to imagine work without a desktop PC. These solutions are definitely here to stay and will continue to improve in terms of flexibility and process efficiency.
In addition, the Internet, the substantial fall in hardware cost and the wide spread of mobile devices opened up other channels for companies to communicate with their customers. And this way software development entered the primary processes of companies, where standardization is virtually made impossible due to the prerequisite to differentiate from other companies. While companies had already found that their own IT expertise was a sine qua non for successfully outsourcing (parts of) their software development, the requirement to differentiate made it even more obvious that business success, particularly in certain sectors, is closely correlated to a thorough understanding and successful implementation of software.
All this led to a renewed interest in developing software in-house or at least nearby. And to complete the “revenge of the nerds” (see http://www.paulgraham.com/icad.html for Paul Graham’s original column), starting a career in software development is regarded as a good and sensible move towards prosperity. The way companies like Google and Facebook attract employees makes manifest that the competition for talent exists and that this talent is of vital importance to these companies.
Who do you see as the major player, now and in the future?
The failure of large IT projects, with the resulting high costs, has led to a depreciation of the large IT software vendors. Nevertheless, these companies play an important role in the maintenance and replacement of the extensive old legacy systems: work that is largely outsourced to their branches in low-wage countries.
The lack of success of large IT projects has also resulted in an increased interest in agile software development. Here the development work is split into manageable pieces, which are implemented by small, well-trained multi-disciplinary teams. Initially, this led to an interest in self-employed freelance software development experts (scrum masters, designers, developers and testers) who were hired for projects. Due to the difficulty for companies to recognize development talent and the possible lack of involvement on the part of these freelancers, companies have shifted to mid-size software houses to fulfill their development needs. These software houses increasingly provide teams for agile software development to support their customers. To demonstrate their commitment, these teams are prepared to take some responsibility for the outcome of their hard work. But they also make sure that a fair share of the responsibility rests with the customer, who is supposed to create the proper environment in which the customer’s organization embraces the objectives of the software development.
The realization that software engineering is a craft for talented and trained people familiar with the development methodology led to the exit of full-time management staff in agile software development teams. It is evident that team members know their craft; management–related activities can be carried out part-time in addition to the actual work. In the coming years, management duties will virtually disappear due to optimized tooling around the agile software development process.
What are your predictions for the coming decades?
In a field of expertise that is roughly 60 years old, it is not easy to make reliable predictions for the future. However, the developments that have emerged over the past few years can probably be extrapolated to the future.
First of all: the availability of standardized software, both in operating systems and application servers on the one side and ERP and COTS systems on the other, will continue to grow. Companies and governments will reap the permanent benefits of the standardized functionality, delivered “as a service” through cloud infrastructures and optimized processes offered by these packages.
At the same time, as is becoming manifest already now, the amount of custom-made software will increase at an even faster rate. Obviously, this custom-made software is built on top of the functionality increase of operating systems and application servers, accelerating the development and lowering the costs. Given this development, companies will continue to improve their primary process and/or interaction with their customers. This is not only driven by the increasing number of devices customers use to interact with each other and their suppliers. The internet, which is increasingly becoming faster and more universally available, makes it possible to focus on smaller customer groups (in the so-called long tail), which can now be reached and addressed effectively.
This software development will still be in the hands of small involved teams of craftsmen. Aided by networking power, these specialists are capable of flexible work in all respects. They – as well as customer-employed colleagues – can ensure that communication channels, voice and vision will always be available. The coordination between teams of developers, required for larger software development endeavors, will also be optimized by a seamless sharing of information and regular discussions (among teams) on the strategy and common goals. Joint evaluations of the combined results and assessments of the progress, will make sure that the teams remain aligned and achieve the strategic goals together.
Those who are talented and successful in software engineering have a broad technical basis in which they excel. Furthermore, they are interested in and have some knowledge of the sector for which they work, so that they understand what the software is developed for. They must always be ready to learn new things and keep an eye open for emergent developments. And last but not least, they are capable of changing the way they work and adapting to new technologies.
Finally, it is important to realize that the growing functionality in operating systems, application servers and COTS systems will make its way into our households. The smart thermostat currently becoming available in homes is only the beginning. Such devices, connected through an integration layer, will make our lives in the next decade easier by adding a personal touch to the atmosphere or the way dinners are cooked, for example, when some programming is all it will take. So we will soon all be developing software!
Joost Koedijk joined the KPMG NL joint venture with Cambridge Technology Group as a Software Development team leader in 1997. From that time onward, he and his team assisted clients by designing and developing software, giving technical advice on software architecture and development options. Through performance testing and code reviews, the team also provides insight into software quality matters, resulting in recommendations for the development process and software improvement. As a partner and Software Quality practice leader of KPMG Advisory in The Netherlands, Joost stands side by side with his clients to face the challenges of software engineering.