Last week, Bill Sourour, software programmer and teacher, had the courage to share his story of the code he’s still ashamed of. Great read. If you haven’t read it yet, take a moment, go ahead (4 minutes), I’ll wait. Bill wrote that one thing which inspired him to share the story was the video, The Future of Programming, from Robert Cecil Martin, aka “Uncle Bob”. Then I took time to watch it. The talk is truly inspiring but quite long (1 hour and 20 minutes). Here below are its key parts.
A Need for Discipline
Uncle Bob focused mostly on the history of programming in his talk. For him to know where the industry of programming should go, we must first look at its past.
Uncle Bob goes back to a report written in 1945 by the father of theoretical computer science, Alan Turing. Turing felt that the programming industry would need “a great number of mathematicians of ability” to thrive in the future. He also wrote about the necessity to maintain an “appropriate discipline, so that we do not lose track of what we’re doing”. “Discipline”, to be understood here as a means to optimize working methods, is at the center of the talk. Uncle Bob explains that programmers tend to get super excited about everything and therefore lose their focus.
A Change in the Industry
Bob chronologically explains the evolution of the programming industry throughout the years until 1970. At the beginning of programming, there were obviously no Computer Science degrees in universities. Back then those who worked as programmers were recruited because they were the brightest people in their field and also had a technical bent. They were mature people who had already worked somewhere else, they understood business and management, they knew how to manage their time and work together…
In 1970 however, the industry started to be dominated by young men with freshly-earned degrees. Like Bob himself. Computer science was seen as a new career El Dorado.
“This was the career” (2mn)
“Up to 1970” (1mn)
At this time, the “waterfall model” was invented to help handle the process of software development. This sequential design process quickly became the reference. Uncle Bob explains it by the fact that all these young programmers needed discipline, a process they could follow. They needed close management and fixed processes.
“The era of waterfall” (1mn)
From Waterfall to Agile
Uncle Bob then points out the one thing that didn’t change: software. You could go back in time and be able to write code. Code could be reduced to assignments statements, “if” statements and “while” loops. The advancements in software had been more in “what not to do” than “what to do”. For example, functional programming (invented in 1958 with Lisp) told programmers not to use assignments. Structured programming (1968) told programmers not to use unrestrained “goto”.
“What didn’t change” (3mn)
Programmer was still a young profession, and its level of professionalism needed to change. Around 1995, the very first disciplined programmers retired. Some people from the first wave of career programmers, including Uncle Bob, realized that the way of doing programming had to change, so they wrote the Agile Manifesto in 2001. Programmers were not just operators anymore. They needed to be part of the whole process of creation. They also needed to take the responsibility of what they were building. This was in line with what Turing had written. Agile is about discipline. Agile is about all the promises you make, and not a list of tasks you follow. A programmer must know how to work within short timeframes, how to estimate the needed work in relative units, how to communicate with customers…
“Agile discipline” (4mn)
Unfortunately, a problem occurred when business got in the way. Business was totally in line with what the Agile movement offered. The whole set of principles made sense. However, business started to take control over some of the activities of software development. The issue is that business doesn’t always understand what programmers are doing. It’s not part of their expertise and shouldn’t be.
The Future of Programming
Agile has become less and less technical. Software craftsmanship is slowly getting swallowed up by business and project managers. The irony is that one goal of Agile was to “heal the divide between business and programming” (Kent Beck). Uncle Bob believes that it has failed and that things have to change, again. Programmers have to step up and define their profession, their practices, and the discipline they use, because they are the ones who have the expertise to do so.
“What has to be done” (1mn)
Programmers will have to lead. Software is everywhere, and nothing can happen without software. Hence, programmer have a huge responsibility. A lot of things can go wrong because of the work of programmers. Uncle Bob cites the example of car crashes caused by software issues. Because the work of programmers is critical in so many fields, they must take the responsibility for what they’re building. If they don’t, governments and politicians will write the rules themselves: what processes, what languages or what platforms programmers should use. Uncle Bob finally explains the need for programmers to regulate themselves, define the ethics and principles they should follow and set a level of moral discipline to respect. It could lead to programmers taking an oath, similar to the Hippocratic oath taken by doctors.
This is what Uncle Bob thinks the future of programming will be. We may agree or disagree with it. Looking back at the story Bill shared, we can wonder what would have happened had the programmers regulated themselves like Bob suggests.
It’s really interesting to see how Uncle Bob looks back at the history of programming to help us understand today’s industry and imagine a future for it. This talk brings up a lot of interesting questions surrounding the world of professional programming.
From a few talented scientists to millions, the number of developers has grown almost exponentially in the last decades. It may be time for developers to shape their profession. How can we manage to communicate properly inside our community and show a united face to the world? With so many new programming languages created every year, how can we keep introducing new people to programming? How can we provide them with the most efficient working methods and help them master their craft in the best possible way? Coding is a form of art and a passion that allows developers to create anything. This “anything” tends to scare more and more people. The question of ethics is more present than ever with the rise of artificial intelligence.
Let’s envision the future of programming under the light of professional structuring and computer ethics. Then developers would take responsibility for what they produce, keeping into account the end product they work on, and the type of contribution they make to the fast-growing innovative industry they belong to.