When You Feel Like You Don’t Know Anything
Published: 2024-06-03 16:09:01

Hello, everyone! This is my first blog post here, and I'd like to start off on a more philosophical note.

First of all, I have a confession to make: I don't consider myself good at programming. What I'm going to say next might confuse you, though. I've been programming since the age of 13, and I hold a degree in computer science. In my free time, I like solving competitive programming problems and occasionally building personal projects. Oh, and I almost left out the most important part: I've also worked for two big tech companies over the past three years.

Well then, why do I think I'm inferior? Look, it's very simple. Even though I've listed a lot of things, I've never been truly good at any of them, and there's evidence that supports this, be it my average performance in programming contests or the struggles I've had at university and at my job. Anyway, I don't want to stay mediocre forever, which is why I decided to embark on a learning quest, and to make the whole process more interesting, I'll document my progress in this blog.


## What to focus on?

Over the years, I realized that programming is a much bigger field than one might think in the beginning. See, it's not just about writing code. For one thing, you have to be good at spotting patterns and logical thinking to come up with optimal solutions; for another, you should have a solid understanding of at least one programming language and its framework. There're also other less obvious factors, like the ability to write a clean code.

Of course, all of it comes with practice. But what exactly should you practice to improve each skill? How'd you get better at logical thinking, for example? And is it really necessary to learn algorithms and data structures, aka do LeetCode, if you're already employed? Well, I've been swimming in a sea of these questions for a while now, but I believe I've found some answers. However, first we should ask ourselves the most important question of all: why do programming anyway?


## Is it worth it?

Let's face it. I'm pretty sure that around 20 years ago no one would have even considered a programming career for life. It was just too new, too vague, and to the majority of people, programming felt more like magic. However, with the advent of new technology, it became clear that working for a big tech company could be the most lucrative career of all! The best thing is you didn't have to live a hermit lifestyle in order to succeed: work schedules became flexible, managers more lenient, and the whole process became more relaxed compared to the tech jobs in the 20th century.

Unfortunately, all good things come to an end, and the programming industry boom is no exception. It's no secret that big tech companies have been laying off their staff for nearly two years at this point. Nowadays, people are getting more and more uncertain about whether they should even get a CS degree or opt for something completely different. Things got even hazier with all these breaking AI news, appearing almost every week in our feeds. What if big tech companies started creating separate repositories for AI-based developers only? Why would we need any programmers then?

Let's slow down a bit. Personally, I don't think that AI will start writing code from A to Z in the foreseeable future, simply because there'd be one huge piece missing: human interaction. You see, working on a large project in a big tech company isn't even so much about your hard skills as it is about your ability to collaborate with others and translate the requirements sent to you by your supervisor into those that will meet the needs of the end user. In order to do that, you often have to communicate with half a dozen people before you actually ship the new feature. But are we sure AI can communicate just as well with one another? And even if they could, would we, the end users, be satisfied with their work?

The point is, I'm pretty certain that the programming industry isn't going to just disappear in the near future. The massive layoffs will eventually come to a halt, since the world doesn't stay in place, and there's new technology coming out every month or so. Remember the time when smartphones came around in 2007? Just think about how many new jobs it brought, and I'm pretty sure another similar revolution is not too far off.

So, even if you're just a student who's learning how to code, I believe that the effort you're putting in is not in vain. If you're the kind of person who'd spend their free time exploring new programming languages, participating in contests, and trying to get hands-on experience by working on bigger projects, then it's clear that you're truly passionate about what you do. In this case, a programmer's career is right up your alley.


## Stay put…

All right then, say you've been working for a big company for several years and gained lots of hands-on experience. You've gotten several promotions and you're basically basking in the sun at this point, but suddenly… the company goes out of business, you get laid off. And just like that, you're back to square one. You find your outdated resume and begin practicing long-forgotten LeetCode problems, cursing the whole interviewing system.

You see what I'm getting at? You can be a top developer on your team, completely fluent in the ecosystem of your company and knowing every nook and cranny of the project you've been working on for so long, but to the outside world, you're no different. Once you quit your company, you basically have to start all over again: writing a CV, sending countless applications, interview prepping, and finally immersing yourself in the company's infrastructure and your new project. No wonder not too many people are willing to change their jobs very often.

And it's okay! I mean, it's all right to work for the same company for years if you feel like it. I've had several supervisors who've been working with their teams for over 10 years, and they loved their jobs. Besides, even if you do decide to change your team, the process of rotation is much easier within the same company. For me, it involved no LeetCode questions, for example, and I mostly talked about my past experience.


## …or move on?

Still, I just can't bear the idea of working in the same place forever. Perhaps one of the biggest push factors for me is that I want to move to another country, and my only viable option is to find a job abroad. Besides, I've always been a keen learner and strived to improve lots of skills, English being one of them. Apparently, settling down simply isn't my way, and I'll continue learning and improving outside my working hours.

For now, I'd like you to join me on my riveting programming journey. With time, I'll address all the questions I posed at the beginning of this article and show you what the actual process of learning feels like to someone who's been programming since childhood.