The Future of Programming is Ours to Make

Let’s not forget the history of programming

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

Most of Uncle Bob’s talk is focused on the history of programming. 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 mean 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.

Mathematicians of ability, a great number, appropriate discipline (2mn video excerpt)

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…

Not mathematicians but… (2mn video excerpt)

In 1970 however, the industry started to be dominated by young men, who freshly got their degrees. Like Bob himself. Computer science was seen as a new career eldorado.

This was the career (2mn video excerpt)

Up to 1970 (1mn video excerpt)

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 video excerpt)

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 video excerpt)

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 in within short timeframes, how to estimate the needed work in relative units, how to communicate with customers…

Agile discipline (4mn video excerpt)

A problem happened 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.

Business doesn’t understand tech discipline (1mn video excerpt)

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 grow 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 video excerpt)

Programmers will have to lead. Software is everywhere and nothing can happen without software. Programmers hence have a huge responsibility. A lot of things can go wrong because of the work of programmers. Uncle Bob takes the example of car crashes due to software issues. As the work of programmers is critical in so many fields, they must take the responsibility of 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 as doctors take the Hippocratic oath.

If programmers don’t regulate themselves, others will do it for them (2mn video excerpt)

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 around the world of professional programming.

From a few talented scientists to millions, the numbers 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. 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. 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.

This post has originally been shared on CodinGame blog.

Like what you read? Give Thibaud Jobert a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.