A couple of days ago, I experienced a dangerous situation on the road. I was driving on a crowded two-lane city bypass. Another driver from the left lane got in my lane right in front of my bonnet. My car comes with the emergency brake assist system that started rapidly braking and within an eyeblink reduced the speed to 50kph.
It wasn’t over yet. I looked in the mirror and saw a lorry and its driver feared and doing everything to not to hit my car that slowed down so suddenly. You could say that my car’s software almost caused a tragedy on the road.
This experience made me think, and I came up with a reflection. I realize that there’s some software between my brake pedal and brake pads. Software that verifies multiple conditions:
- Is there a need to activate ABS?
- Is there a need for traction control?
- Has the camera spotted any object?
- Should the car brake using electric engines to charge car batteries?
A tangled web of IF statements written by software developers working for automotive companies and car manufacturers. Web sources report that, on average, a modern car requires about 10 million lines of code. 20 million if we talk about Tesla. The question is, who produced this code and who takes responsibility for how it works? Who allowed it to use it in regular cars? Who tested it and accepted it? Would you agree that in the light of my introductory (real-life) story, mistakes and errors in software can kill people? Let’s compare and see what it’s like in other businesses.
Education and admission to the profession.
To become a medical doctor, you need to graduate from a university and go through an arduous process of specialization. A construction manager must have passed a number of exams and be an active member of the official organization. To be a soldier, there are psychological tests on your way, required education and all sorts of army training. There’s a reason I mentioned professions that deal with life and death situations. What it’s like in IT?
Recently, it’s become much more difficult to encounter a developer who graduated university with engineering. More and more often, your candidates will have participated in some 3-month boot camps and half-year internships. Furthermore, I haven’t heard of a country where you would find an official organization gathering and appraising programmers to the profession. Fortunately! Nevertheless, it’s worth considering how important it is for developers to gain a thorough professional preparation. It includes high-quality education of future IT engineers as well.
Would you like to be operated on by a surgeon who’s been working for a year and performed like 2 operations in this time? Do you fancy having your house built by a first-time construction manager and builders with no previous experience? A report issued by the State of the Developer Nation indicates that 2/3 of programmers in the world are younger than 35 years. Moreover, the demand for developers is constantly big. It means that another wave of gifted 3-month boot camp adepts will flow. On the flip side, it’s getting interesting too. Active developers over 40 are a rare species. They constitute only a small percentage because the market has made them into managers, directors, or even completely got rid of them. Yet, their experience is invaluable regarding the highest quality software.
Can you imagine a cardiologist treating your teeth? Or a carpenter dealing with hydraulics at your place? IT is in fact similar. Nowadays, with all those programming languages, frameworks, architectures, and technologies, it’s impossible to learn and master everything. A good engineer is someone who specializes in a pretty narrow realm of technology which lets them understand it really well. And how does it look in our teams? Don’t our developers do everything? Analysis, frontend, backend, architecture, testing, implementation, and, sometimes, even presentation and sales? Ask yourself a question. Are you a specialist in a particular kind of programming?
What would happen if a dentist used a chisel and a hammer? Or an electrician wouldn’t apply voltage to check the installation before passing it on to their client? No matter how funny these questions may seem, don’t we try working like this with code? How many times have various teams observed discussion about tests and their justification? How often do we inform the client that code needs refactoring because the old code sucks? And even more astonishing, when developers want to move to another project because production deployment is coming.
I write these words to raise awareness among us, programmers and IT engineers that our job is the responsible one. And it’s irrelevant whether our code may be life-threatening or we build yet another e-commerce and another payment gateway integration. How about being responsible for your part of the code? Let’s be professional, get experience and constantly learn. Let’s expand our horizons while specializing in a chosen field. Maybe it’s your IF that will save someone’s life, protect their savings or prevent incorrectly calculated discounts?