Robert C. Martin, colloquially known as “Uncle Bob”, is one of the world’s most famous software engineers, among the authors of the Agile Manifesto, the mind behind several software design principles and an outspoken advocate of agile and test-driven software development and software craftsmanship
Eight years after the famous quote and article by Marc Andreessen – Software is Eating the World – his statement and the title seems truer than ever. Entire industries have changed and software is touching everything, from banks and the financial sector, to transport, education, the healthcare industry and agriculture. It has brought many opportunities that were unimaginable just a few decades ago, but also many challenges, like ethical questions and security. This is why software craftsmanship is also more relevant than ever before.
One of today’s most influential software engineers and authors, Robert C. Martin, visits Belgrade this April to deliver a keynote speech at the IT Konekt conference, where software professionals and engineers from Serbia and the region will have a chance to see him live for the first time.
Nowadays, you are travelling the world and sharing knowledge at different conferences, as well as in your books and videos. You are visiting Serbia for the first time in April, to deliver a keynote speech at the IT Konekt conference – and the whole community is really excited at the prospect of seeing you! What are some of your thoughts and expectations before you speak at a conference like this?
– I always enjoy visiting new places and seeing new people. It encourages me when people show such enthusiasm. It fills me with optimism.
Back in 2001, you were one of the authors of the legendary Agile Manifesto. What drew you to that gathering?
– I called the gathering. Or rather, Martin Fowler and I collaborated on calling the gathering.
I was drawn to the idea by reading articles written by Kent Beck; later by collaborating with Beck to create courses in Extreme Programming.
Today, almost 20 years later, how do you compare the Agile movement with your predictions and expectations at the time?
– We expected nothing. We were all pretty surprised by what happened instead. You are famous for your work within software engineering – with books like Clean Code, Clean Architecture, The Clean Coder… – but another huge impact of the Agile Movement and philosophy was also “Agile Beyond Software” – with incremental delivery, learning from feedback and responding to change becoming a cornerstone in other disciplines and industries, from education to even agile local governments.
What do you think about this? Are you also interested in “Agile Beyond Software” and have you had experience of such projects?
– I’m a programmer. It doesn’t surprise me that Agile-like concepts are applicable outside of software, but I don’t focus on that. For me, Agile is all about software.
How did you get started in programming back in the day?
– I developed an interest in computers very early. I was 12. A neighbour worked at Teletype corp, and he brought me a box of 50 electrical relays. I hooked them up to my electric train transformer and began to play with logic. I rapidly learned enough electronics to be dangerous and cobbled to get her several logic circuits. I collaborated with a good friend of mine at the age of 15 and built a binary four-function calculator. I was hooked at an early age, and that hook is still firmly engaged.
What would your advice be for someone who wants to learn to code today?
– There are so many paths. Python is a good language to start with. So is Lisp. The most important thing is to continue to challenge yourself. Keep solving ever more complicated problems. Learn many different languages. Most importantly, though teachers and tutors can help, always, ALWAYS, teach yourself. Learning is YOUR responsibility. Teachers are just helpers.
You’ve been part of the software industry since the 1970s, that’s almost half a century. How different is it today than during your early beginnings? Are there some things that have stayed the same?
– The hardware has changed enormously. The software has changed very little. Oh, we have much better tools than we had before. I can sit in an airline seat at 30,000 feet while coding and testing a massive web system, but the software that I use to write that system is still nothing more than ‘if’ statements, ‘while’ statements and computational expressions. Sequence, Selection and Iteration.
Software now touches every part of our lives, virtually every minute of every day. There is nothing you can do in modern society without software somehow being involved. So the ethics of software are the ethics of everything
Do you have any wild guesses on how the industry will change in the next 20 or 50 years?
– Less than it has. The hardware technology reached its limits in 2003 or so. There may be some incremental improvements coming, but the exponential craziness of Moore’s law is over. Without that wild growth to spur it on, I expect the software industry will settle down, choose a limited number of languages, platforms and frameworks, and become a stable and reputable profession.
In theory, algorithms and mathematical models lead to greater fairness, but in practice, they often lead to greater inequality when they’re biased. (Cathy O’Neil wrote an interesting book about this, called Weapons of Math Destruction.) As programs become a more and more important part of our lives, what are some of the technical and ethical challenges here? And should they be regulated in some context; and if yes, how?
– Software now touches every part of our lives, virtually every minute of every day. There is nothing you can do in modern society without software somehow being involved. So the ethics of software are the ethics of everything.
It seems very likely to me that software will become ever more regulated. That regulation will spread from the currently regulated industries into the less regulated ones as we recognise our vulnerability to software errors and failures.
What’s the best advice you’ve ever received?
– Never stand when you can sit. Never sit when you can lie down. If you lie down, go to sleep. Be honest.