The Sensible Programmer

If you’re a programmer stuck in a drab cubicle, you will never grow new neurons... Okay, here is prelude before the main gist. I still remember the first time I drove my mom in a car, the plan was to impress her with my driving skills and maybe give her a decent experience. I did all I could to maintain a great reputation throughout the journey.

For example, held the steering wheel with both hands, maintained a reasonable speed, used the side mirrors, etc. I did everything to prove that I know the best practices. I thought I was putting on a convincing act presenting myself as a good driver. Awkwardly for me, she identified those actions in a different way. To my mom, those best practices wasn't even enough to qualify my driving.

She noticed how my driving was affected by other drivers. My mom paid attention to my reactions towards them as they drove recklessly, she then posed a question which I thought was rather weird. “Why are you complaining about how the other drivers are driving”? Hmmm, I thought the answer was pretty obvious. She continued, “knowing how to drive a car is just the start; being a sensible driver is what sets you apart”. Sensibility, she meant consciously and intentionally.

One thing my mom said to me that has made a prime difference in my driving was: “have this new mindset, good driving starts with you… When you’re driving, view everyone else on the road as nuts, except yourself”. So, I learned that I must be exceptionally thoughtful, readily perceive my surroundings, deliberately remain conscious and be aware.

The New Mindset: Don’t Assume

Ever since that car ride, the new mindset is to never assume everyone else is a responsible driver; I should drive well regardless. Don't assume the pedestrian won't walk into the road while the traffic lights are still red, or the driver in front will indicate before he turns the corner, that will be a costly assumption. Regardless of how the other drivers who are ahead, behind, on your left or right drives. Not everyone will obey traffic the rules, in reality, no one wants to; everyone is in a haste and they are all inpatient... Looking back now, let’s apply the moral of the story to the software development cycle — not assuming everyone involved will be sensible.

Hey, Programmer!

Are you unskilled and unaware? Do you think of the end users while writing your software? Do you consider your system could be hacked or broken? Do you handle all exceptions or assume the end users will be rational when using your software?

Do you write code, presumptuously thinking your co-workers will be clever enough to know what is going on in the code, do you think a future employee will? How about you, do you think you will understand your own code in the next few years? Are you only focused on just getting it done by any means possible? So much to think about…

Once you truly become an expert, you become painfully aware of just how little you really knew — Andy Hunt

The only assumption every developer should make when writing any software is that the end users of it, the current & future employees that will be contributing, and maintaining the code are insane and insensible — except you (at least for now). The thang is, everyone is a little over the edge; please code responsibly!

Why Sensibility Matters

Quality, and in every perspective. Be deliberate about your actions, quality should come from the heart and mind of every programmer. Although, it’s natural for some, others must work hard to acquire this attitude.

I am convinced that quality, for software, must be a thoughtful and continuous drive. It is a clarion call to all software developers to be attentive to quality because we are authors, we must be responsible, we must be sensible.

For the final product, quality is not only about satisfying all functional requirements, non-functional conditions must be met as well; you cannot pick one over the other. For the code, it must be a clear and an understandable implementation with low complexity if possible — simplicity is still in style.

Quality in software development cannot be overemphasized. Say if you will, it is the oxygen of every software — it won’t thrive without it. Hence, quality must be the objective behind every software check and test before release.

Anything Less of Quality Will Cost You More, Selah!

You Should Be Sensible

Not only am I advocating that you should encompass a high sense of quality, I’m also saying to the Software Programmer, the Developer, the Engineer or whatever your title is, to be the sensible one. Not your colleagues, customers or users, but You!

There are many objectives to why you should care about this fact. Here are a few:

  1. Assurance — When quality is the principal motive, certainty is indisputable. Being certain about your software or code adds a great deal of value to it. It goes a long way to affecting the important aspects of the software or code like scalability, performance, maintainability etc. When you are certain, you can be sure it will add value to the user and to your co-workers.

  2. Status — Whether as an employee, a freelancer or even a company, reputation is fundamental. It’s what gets you supplementary prospects. It is what I call the icing on the cake. As an employee, this is what attracts promotion, pay rise and all the enticements a company will want to offer, to not lose you. Reputation automatically makes you esteemed and valuable. It makes an obvious difference between you and others. So, go for it!

  3. Fulfillment — Some, code for the dough, while others code for delight. Whatever category you fall into, your determination for quality will sate your desire. I've been there, done that, and doing it again. No matter how simple the solution is, with quality, it creates an incomparable joy within.

  4. Security — Little foxes are what spoil the vine. Hackers won’t mind spending the whole day and night searching for the smallest flaw in your system and it will be an opportunity to exploit you. You will be insensible to overlook this factor.

Test Continuously

Testing originates quality (I doubt I’m telling you something new here). Testing is a hassle, I have heard that a lot and maybe you too. While I think this could be true, the sensible programmers with quality at heart, leverage this technique. Testing must be a conscious and deliberate action, without it, quality is unattainable.

Software testing should be a habit that we adapt to from day 1 of ‘Hello World’. Yet unfortunately, this isn’t the reality. This custom isn’t taught or advised in many colleges, universities or online tutorials. Most times, it’s presented as a choice, not a requirement, and since many don’t want to add the extra effort, they avoid it.

You must test to identify bugs, you must test to be certain about your development, you must test for integration assurance, you must test for quality and so on. The benefits of software testing are infinite… Testing is imperative!

Conclusion

It’s your responsibility as developers to create the experience for the user and co-workers. This will, sometimes require walking in their shoes and knowing they aren’t as sensible as you. You must see beyond what they see. Be reliable, sensibility starts now and first, with You!

Bobai

Software Development Engineer.