About my job (Part 1/2)
In this two-installment post, I will attempt to explain, in what hopefully are simple terms, what is it that I do for a living, and why I feel passionate about it. You do not need to be a programmer to follow along this text - it is non-technical.
Why?
Doctors will be able to explain to you, in a sentence or two, what it is that they do, and why they picked that profession, and why they are sticking with it. So will musicians, architects, farmers … The list goes on.
We programmers, on the other hand, are notoriously bad at explaining things. And so, our trade looks shrouded in a dark cloud of wizardry. What most people know about me is that I “do something with computers”. I want to attempt to fix this.
I feel the urge to try and explain this for my own sake.
Not everyone is a programmer. And, as it happens, even among programmers, relatively few are into the exact sorts of programming that I am. And so, there is this huge part of my life, and huge part of my passion, that is mostly inaccessible to the people around me; and worse, inaccessible to the people closest to me.
Sometimes this makes me feel a bit lonely, isolated and sad. And so I wanted to remedy this, if a little bit.
I am a programmer
This means I help create software systems such as the ones that you use every day. Right now (well, not right now, I still have a week of vacation left), I work on a mobile app people use to pay for their electricity and gas.
If you wish to draw an analogy from construction, I am Bob the builder, the construction engineer, and the architect (of sorts) at the same time.
I know how to build software. Well, this may be a bit pretentious. It’s more of a continuous process: I build software, and simultaneously hone my skills and knowledge, so that I always learn how to do it better.
One thing I do not necessarily know is what software to build. This is usually a separate job for a separate person, called a product manager / product owner. Product magagers and programmers work together; one thing they have in common is aptitude for analytical thinking, but otherwise the skillsets required to do the two jobs are quite different.
I am a functional programmer
You’re a what now?
, I hear you say. Alright, let’s take a step back.
Software sucks
I’ve a bit of a side story from a couple of weeks ago. I was sitting in my friend’s car (hello, Nade!), on the passenger seat, after a particularly satisfying running sesh. The car was at a full stop. Incidentally, we were talking about what it is that I do for a living.
Since the car was at rest, I unbuckled. What happened is that the “no seatbelt” alert system incorrectly trigerred. I’m not sure buckling and unbuckling again made it stop, we might have had to put the car out of contact and back on.
Did you try turning it off and on again?
Irritating, you might say. Infuriating, say I. Why infuriating?
Because. It’s a fucking car.
A bug slipped by, it happens, oh well. But how are we to be sure that the software powering the ABS and the ESP is not built by the same people, using the same methodologies? What happens when a bug slips by in those systems?
I’ll tell you what happens. You cut some corners here, cut some slack there, and then Boeing 737 Max happens. Real people died, when, in fact, they didn’t have to.
Dude, relax. You’re just building a mobile app. If it breaks, people will just top up their electricity at the shop instead.
I disagree. This is a bad mentality and a disaster waiting to happen. Software is so pervasive throughout our lives, and we’ve gotten used to relying on it so much, that nowadays it’s really hard to draw the line - which software is critical and which is not?
It would be easier if we just admitted it:
Software sucks. Clearly, we must do better
This is the end of “About my job (Part 1/2)”. Click here for the next installment, where we will discuss how we might go about making software suck less.