It’s funny how coding discipline parallels into real life situations, and how it reflects the level of maturity of handling the challenges along the way. After all, programming in it’s very core is problem solving. As people mature, the way we solve problems differ. This piece is about how years of programming taught me to do just that.
When I was younger, I didn’t care much about the future. All I know is that whatever problem that would arise, I know I will be able to handle it. This is exactly how I do my code back then. It has no structure whatsoever. All I had in mind was if it was working, no matter how I coded it, it’s solved and fine! If there are bugs that would come up, then just fix it. I know deep inside that there was no bug too big too handle. There was no requirement that can not be solved. The code I was doing was in no way defensive at all. It was quick, but unsustainable.
Well, that was the younger me. Brave, but a bit short sighted.
Then of course, as I would progress into my career, the requirements got more and more complicated. IF-THEN-ELSE statements wouldn’t just suffice. SWITCH blocks would be too crude. Essentially, the tools I have are just not enough. I ended up copy pasting a lot. I got lost with my own code. More importantly, the bugs were becoming more and more difficult to handle. These bugs, of course were of my own doing. Programming became a chore. This is where I knew I had to sharpen up.
I started to code with structure – with object oriented programming. At first, it seemed like an overkill to do OOP for websites. Websites back then were not as sophisticated as the web applications of today. It was a bit of a learning curve, but I knew I had to sharpen up. The adjustment was hard and at certain instances, I would just go back to my comfort zone. As soon as I got the hang of it, OOP was my friend.
In real life, as we progress, our challenges become more and more complicated because we are faced with more and more responsibilities. These challenges require us to be out of our comfort zone and try something else if we want to triumph over these problems. Adjustments are always hard – because the human brain is hard wired for comfort and familiarity. But nothing will change unless we do something differently. Then we realize soon enough that we become more equipped and the challenges become easier again.
Then again, life is a cycle.
The problems get more challenging – not only because we know less but the world is starting to get bigger. As I was progressing into my career as a software developer, the applications I was creating became more sophisticated. The demand for fast delivery became very important. Also, I was not working alone anymore. The projects were now team based, and everybody has their own expertise to share into the project. I had team leaders and superiors. Because of these people, my knowledge has expounded even more.
I learned about development frameworks and design patterns. These technologies taught me that there are common problems that has already a pre set solution into it. The vibrant community of software development has already found the most efficient solution to common problems. The real advantage there is the developer can focus into solving the business specific problem instead of lingering in “problems” that was already solved years ago. The developer is not alone in this world of problem solving.
Much like in real life, the guidance and experience of people around us are always helpful in our everyday and most difficult challenges. It’s either “they’ve been there” or they have a different perspective. All we have to do is listen and drop the pride. We can not solve everything by ourselves. We need to submit to something if we truly want to learn. I’ve learned that it’s not embarrassing to ask (just of course, have a sensible question).
At this point in time, I know I can code efficiently, not perfectly, but I know the way I code things has gone a long way already. I know there’s no stopping into learning something new. The industry is so fast paced that learning something new rapidly is a skill that is almost as required as knowing how to Google something.
Life and coding are in many ways essentially the same. Problems would never stop. The challenges would evolve and the way we do things require us to do even more. As we say in IT, “there is no perfect system”, and I guess that goes the same with life as well. The key I guess into solving any problem is dropping all the complication and all the excuses. Face the challenges knowing that you are always equipped.
Do things straightforward, always being pragmatic.