Timothy Asiimwe

Ones, Zeroes & Everything In Between

Reflections of a Programmer

Every once in a while I like to reflect on life. And there’s no better time than now. I literally have nothing to chase, no deadline to beat, no books, no exams. So I’ve been thinking, alot about the unobvious benefits of being a software developer.

Programming involves a lot of thinking and overtime, it changes the way you think about life and stuff in general. So here are five important lessons that I’ve learned through my experience writing code for the most part of my waking hours.

1. It’s okay to fail

“If at first you don’t succeed, call it version 1.0 - Unknown”

The error log is the developer’s best friend. Errors, exceptions and bugs are all part of the game. Errors(read failures) ought not to be dreaded, but should instead be thought of as the blueprint for how to fix the program or code to run better. Even the mighty Apple and Microsoft of this world have shipped buggy software before. Some have been more embarassing than others but the most important thing is that they release updates and patches. When you fail, instead of stagnating in misery, find out what could have caused it, fix it and release an update. Don’t let failure keep you from moving.

2. Faith
A lot of software developers are willing to take on work they have no idea how to do (Not sure about most, but at least I am). I think it’s partly because of the excitement of trying out something new, but also because we’ve gotten away with it in the past. Somehow, I’ve learned to have the confidence that things will pan out okay, and I’ll deliver, no matter how humongous the task at hand is.

3. Great software evolves (Embrace Change)

“To improve is to change, to be perfect is to change often” - Winston Churchill

If you own a smart device, then I’m sure you receive notifications of apps that want to update almost every week or even every day.

Software changes a lot over its lifetime. The Google home page today is very different from the first one in 1998. The same goes for Microsoft Windows and many other programs.

Building software has taught me to embrace change, even radical change. So much changes in so little time in the software industry. The rapid pace of innovation renders some technologies obsolete, so one has to be willing to adapt and try out new stuff. This leads me to the next lesson.

4. Let go
In line with lesson #3, one thing development has taught me is the art of letting go. Sometimes you have to let go of that piece of code that you spent hours or days writing, either because it’s either smelly or it’s just no longer relevant. Such is the nature of the industry, it moves so fast that at one point or another, you may have to rewrite your app simply because there’s a newer or better way of implementing your solution. And such is life, as we grow, our priorities tend to shift. Therefore, embrace change.

“When you become a software engineer, you have signed a life-long pact to never stop learning” - Unknown

Nothing cements this more than the news a few weeks back that Apple released a new programming language. Although Objective-C hasn’t been trashed per se, iOS development will shift to Swift as the primary language, so iOS devs have no choice but to adapt to the change.

5. Give back to the community: Freely you have received, freely you should give

“If I have seen further than others, it is by standing upon the shoulders of giants.” - Isaac Newton

The average developer is bound to use some open-source library or tool in their work. Big software companies have open-sourced a lot of their software projects and libraries in this spirit. Open-source has driven the software industry to where it is today, so we’re indebited to give back to the software community and society at large.

But even outside the software industry, many products today wouldn’t be here without some of the work done by some people generations ago. So every once in a while, do something for community’s sake.

The downside:
You cant roll back life: If you’re familiar with version control, then you know that you can roll back to a previous commit, in case you encounter serious problems with your code base and it will be like it never happened. Unfortunately in the real world, when you eff up, as much as you can move on, the scars remain.

Comments