On The Topic Of Growth

Some thoughts on personal and professional growth.

It's been a while since I've written to this blog. I feel like maybe it's just the right time to start writing back into it, as I've been thinking a lot lately about growth - both personal and professional.

Anyways, where to even begin, huh? A lot has happened. More than 4 years ago I left a Master's program at my local college to pursue more realistic career ambitions, and since then I've been given the opportunity to work with several engineering teams and be able to learn from them. I've learned plenty of things about myself as well, what my strengths and weaknesses are, what my ambitions as a developer and a person are. I've grown a lot in my technical skills as well, though I have much more to learn.

This past year in particular has been one of significant growth for me. I split ways with my last company being I no longer felt challenged with more complex problems and able to work on more impactful projects. I wanted to push myself and grow out of the position I was in, so it was a significant risk. My mind has been a little more clear since, and I'm in a better place now working on more interesting things. Growth often requires stepping outside of our comfort zones, after all.

On The Coding Challenge Grindset and Side Projects

Years back when I was in college, grinding leetcode and hackerrank problems seemed to be the de facto way to prepare for technical interviews and help land new roles. While those sites can certainly help sharpen algorithmic thinking and serve as a great baselining exercise, I've found that real-world experience and practical skills tend to be valued more by employers. Things like contributing to a project you are vastly interested in on GitHub and building your own side of projects can help you learn and showcase skills in a much more applicable way.

It's difficult though! As a self-starter, it's easy to lose steam and momentum on side projects. From what I've seen, it isn't an issue of motivation because motivation comes and goes; it's hard to stay committed to something that seemingly has less bearing on your day-to-day work or career. It's perhaps simply a matter of discipline. It's something that you may do because you want to, whether you're working on something you think may be cool or just as a matter of learning something new.

When it's framed like that, it becomes less burdensome to consider; we'd have to carve out sections of our own valuable free time (especially outside of the work we already do with our brains working constantly) to do something that still 'feels' like work. But if we can get past that mental block, it opens up opportunities to really explore those new technologies, build things that excite us, and ultimately further our skills in a meaningful way.

It sort of brings me back to the whole reason why I started doing open-source work initially, back when the most I had was a Bachelor's in Computer Science and wanted to show employers I was more than the algorithms I knew from school. It was a way to get invested in a community, love a programming language that was quickly growing in popularity, and really just get to know more exactly about what my ideal work would turn out like.

On The Importance Of Side Projects And Continuous Learning

It was some time ago I recently interviewed with a company and met a fellow engineer who saw a lot of potential in me based on my varied employment history, open source contributions, and what I felt passionate about in my programming work. Unfortunately the interview didn't go anywhere because they were looking for someone with a higher caliber of experience than I did, but he was very encouraging and shared with me a lot of material for growth.

"Any sufficiently advanced technology is indistinguishable from magic." - Arthur C. Clarke

This gets thrown around a lot, but in a way it can be said that if technology sometimes seems like magic, it's because we don't fully understand it yet. It's easy to just kind of assume that things work without fully grasping their mechanisms and that's suffice for a lot of use cases. But for those who want to really dig into the why and how, even at a very high level understanding it's valuable to learn more about what's happening under the hood.

I recently went through Beej's Guide to Network Programming just as a primer to fill in the missing holes on my understanding of networking concepts like sockets, protocols, threading etc. It was neither a short or long read but it did provide insight into a lot of the abstractions I had been taking for granted, specifically with how the OSI model works, things like TCP vs UDP, and the endianness of host vs network machines. It was an eye-opening read that really brought a lot of clarity to how things work over the wire.

It's easy to write off a lot of stuff as "it just works", but when you really dig deeper into things it improves the way you see and approach problems. You see the intricacies of taking different approaches to common problems like how to handle multiple clients or use a multithreaded implementation efficiently. You understand better why certain things such as proxy servers and load balancers are useful.

What's Next

But I don't want to fixate too much on side projects or learning just for the sake of having more things to list on a resume. The real value comes from applying what I learn to solve meaningful problems, whether for work or personal projects.

While it's useful to read about and build sample projects to practice skills, taking what you know and applying it to something you want to build is where the real value lies, I think. Because if someone's passionate about their own projects or contributions, then the more mundane work becomes less so - it's an opportunity to really practice those skills without feeling like "work".

With all that said, perhaps it's time for me to build something next. I'm still thinking about what I can do in the downtime that I have, but one idea is to continue the long stagnated work on the aforementioned project I mentioned in my last blog.

Thanks for reading! Let me know if any part of my ramblings were unclear or if you have any other questions.