Intrigued by Complexity


Yesterday

I have been engrossed in a world of tools and technologies for as long as I can remember. I have been an avid lover for computer systems since my first introduction to them as a child. My dad used to own a mid-scale printing business that a large number of his institution patronized before he stopped.

He had an HP laptop that I used to play games on and whenever his monthly subscription was about to expire, he would hand his laptop to me and my younger brothers to use. Asides from downloading and playing games on Wild Tangent — yes, I am that old and I miss Wild Tangent, the next thing I did was learn about computing and how to hack.

You see, I read the news a lot and if you recall something that the late 2000s and early 2010s were fond of, it was hacking, a lot of it. Snowden, Celebgate, Mt. Gox, Heartbleed, Silk Road, Sony PSN outage, the list goes on and on.

I wanted my name in the news and since I was clearly not going to win the Guiness World Record for the tallest teenager, I might as well hack an institution, get caught, cut a deal with the feds and then get my name in the news. Kevin Mitnick style. Right?

But I digress.

While I am not near that career path, the curiosity and inquisitiveness is still a part of me, an essential skill for any hacker/engineer.

As a software engineer, when you decide to learn something new, let's say a framework. You most likely pick a tutorial and keep the can rolling. You learn the basics guarded by the rails of best practices. Some of us just dig deep and brute-force our way into understanding the concepts. The only time we see the documentation is when we face errors with zero results on Google.

If you have an existing background in an underlying fundamental upon which the framework was built on, you are, to some extent, able to understand the concepts and principles that guide the design and implementation of said framework.

The magic frameworks perform by abstracting away the complexity of the underlying systems can't be understated.

Before I moved from being a wannabe hacker and competitive programmer to frontend development, I knew I love beautiful interfaces. They captured my attention and held me captive in ways I couldn't describe.

When I made the switch, I built as many interfaces as I could with HTML and CSS — courtesy of Dreamweaver, again old, and Wix. I had a lesson teacher just after my WASSCE exams who was meant to teach me the basics of web programming, not much came of it. When I got into the university, I heard about React and React Native. And I was hooked :)

I learned enough React that I need for the native side and called it a day.


5 years down the line, I have dabbled into all sorts of fields and languages but I am still writing React, one might say JavaScript/TypeScript. My appetite is growing and I am not just interested in results of the tools and frameworks I use but also in the way they work.

I am moving to a point in my career as a software engineer where I am not just writing code and implementing UIs to understanding the internals of the tools I use, the problems they solve, how to make the best of the solutions they provide.

Today

My fascination with hacking as a child has roots in understanding how systems worked. I wanted to understand their vulnerabilites and how to exploit them. This, I think, laid the foundation for my current professional interests.

I find myself drawn to the same kind of curiosity and desire for the internals as I did when I was a kid. I want to understand how things work and how to make them work better. I am no longer hacking systems/frameworks to exploit but to comprehend their inner workings.

I can draw a parallel between reading the news about hackers and the thrill I feel when I discover elegant solutions hidden in plain sight by well thought-out abstractions.

My experiences with Wild Tangent and other games, weren't just about the entertainment. They were my early introduction to responsive user interfaces. The mechanics of the games I played are the same ones I am trying to recreate in the interfaces I build.

Closing Thoughts

In essence, my childhood dream of being a hacker and my current role as a software engineer are two sides of the same coin. Both require a deep understanding of systems, creative problem-solving, and a relentless curiosity about how things work. The main difference is that now, instead of trying to break systems, I'm learning to build and improve them.

As I reflect on my journey from a curious child fascinated by hacking to a professional developer, I find myself at a new crossroads. The magic of frameworks that once captivated me now inspires a deeper curiosity. I'm no longer content with just using tools; I want to understand their inner workings, the problems they solve, and the trade-offs they make.

This desire to unravel complexity isn't just about satisfying my curiosity—it's about becoming a more effective engineer, capable of making informed decisions and pushing the boundaries of what's possible.

But most importantly, this evolution is a testament to how our early passions, even if they seem unrelated, can shape our professional journeys in unexpected and rewarding ways.