5 Things I’ve Learnt from Being a Software Developer for 15 Years

Radu Caprescu
6 min readJan 12, 2021
Photo by Fotis Fotopoulos on Unsplash

Hi. My name is Radu and I’ve been a developer for 15 years. Here are 5 things I’ve learned so far that have been true every year so far!

1. Everything changes. And it changes quickly

Remember when you were a kid, like 7–8 years old, playing, and then, fast forward maybe 3 years and already the world seemed maybe smaller, definitely weirder and things that made sense 3 years ago don’t make sense now?
Well, this is how software development changes. Blink for 3 years, and sure, you might be able to do your job but hey look, what’s that gRPC thing? Hey, what’s that MVC pattern? Ummm, what do you mean video cards have 20GB memory now and we have to saturate it?

I’ve gone from programming on devices where even a garbage collector call was resource intensive and you would avoid that thing (Nokia S60, looking at you kid) to site deployed across 30+ servers, handling ~ 1B transactions a month.
I’ve gone from this WebForms pattern that was awesome and terrible at the same time to MVC (that is awesome and terrible at the same time).
From monoliths that handled eeeeverything to microservices that handled almost nothing (god forbid they do anything else outside their business domain).

The point is, things change and they change quickly in software development and the thing you knew 3 years ago, while (maybe) still true, might not be relevant. Learn new things every year, tinker and play with the new stuff and maybe you will not fall far behind. Because fall behind you will, regardless.

2. Impostor syndrome never trully goes away

So, what’s the most fun part of your job? Is it the constant learning? Is it the great people you work with? The amazing projects that require all your mental capacity to get them through? Yeah, I know, software development is awesome, right?
How about feeling like an impostor all the time?Wait, what, you don’t like that? Yeah, neither do I.

Impostor syndrome is that annoying voice in the back of your head that goes: “Everyone will find out you have no idea what the hell your are talking about”. No matter how many things you learn, no matter how much experience you have, heck no matter were you work at, that voice will find you and will, from time to time, go “Hey, remember me? Remember how you are a fraud and don’t deserver to be here?”.
I’ve heard that voice time and time again in my 15 years of being a coder. I’ve seen people I respect enormously talking about the same thing. People that built sites used by millions of developers a day, they had this Impostor Syndrome too.

I hated that voice, in the past. I guess I still do, to some extent. But I’ve come to realize that I need it, in a twisted way. It’s my “second man on the nuclear button” checkpoint preventing me from doing stupid shit, one of my drives to try to keep up with the times. So I guess it’s ok I still have impostor syndrome after 15 years of software development. What is not ok is when that voice is too powerfull and it overshadows you completely. Watch out when that happens, it might be time to tune it out.

3. Know your fundamentals

Ok, what’s the O(n) of bubble sort? Or, better yet, what’s O(n)? What is a hashmap and why do I need it? Balanced trees? Aren’t all trees balanced? Don’t they have roots for that?
Well, when I say fundamentals, I mean algorithms and data structures. It may be that you will never implement a sort in your career. It may be that the first time you use a tree is 15 years after you first learned about it.
You can totally have a career in software development without knowing Dijkstra’s algorithm or how to implement merge sort, but I’ve found out that people who DO know these fundamental things are better programmers (it’s not a rule tho, so your mileage may vary).

One explanation for this, as I see it, is because software development is, in many ways, about pattern recognition and where and how to apply those patterns. So, the more patterns you know, the more experience you have with applying those patterns, the better you will be at solving problems.

Most of everything we use as software developers is built on already proven ideas. Plenty of those ideas use or are themselves fundamental notions in programming. We call them algorithms, data structures, design patterns, but they are fundamental to software developers. So, if you know a lot about these fundamentals, you can understand a whole range of concepts and ideas used in various languages and solutions. And you will be a better programmer for that.

Be like Tim Duncan. Master the fundamentals. It will pay dividents…

4. It’s nice be important but also important to be nice

Yes, I know you are the best programmer there. Yes, yes, I know people think too slow for you. You know what I also know? You need to comunicate those ideas you have and people will be more receptive if they perceive you to be nice.
Like it or not, being a software developer is a collaborative effort. You have to deal with business analysts, product owners, sometimes the end users, lots and lots of people. And, I am sorry to say, you have to deal with other programmers. And people will respond better to your ideas, to you as a person, if you are a nice human being.

You might think that you can be a jack-a** because it works for you. “Hey man, I don’t give a fuck who likes me at my current job and I am a TL with great results”. Sure. Ok. But at one point in time you will change jobs and the culture fostered at your current job will not be tolerated at your new one.
Learn to be nice. It will smooth out some issues, it will make people be more forgiving when you make mistakes and ultimately, it will make you a better leader.

5. “T” shape is the best shape

I started my career in 2006. I was a programmer in the localizations team inside Gameloft. It was a great team, full of laughter, great people, an amazing team lead, and lots and lots of dota (the original dota). Then I moved from localization to building some games and then… well then switched jobs and started working on enterprise apps.
I fell in love quickly with C#. Java was never my cup of tea, tried c++, hated it. Tried javascript, hated it. Tried front end, HATED IT…

But man oh man, C# was the one for me. I don’t regret it. Microsoft changed my life with this language and the way they’ve improved it over the years is amazing.
But one of my all time regrets was that I never got into javascript and being a front end developer. I can see that the happiest developers are the ones that know and can handle a bit of javascript and some front end. They, in a pinch, can do some devops here and there. They have a broad range of knowledge that is not limited to their core skill (for example, being a back-end developer on the Microsoft stack).
Right now, my T is very narrow. One of my 2021 goals is to make it just a bit wider, to have just a bit more fun.

Conclusion

Being a programmer is one of the best jobs out there if you love solving problems. You get to have a job that constantly pushes you to learn and try new things, the resources out there are plenty and right now is the best time to start learning how to code.
Remember, as you start your journey, or are well into one, to be nice, to never stop learning. Master your fundamentals and learn another programming language or two, besides your core one. Know that there might be a voice inside you that will say you you are a fraud, but make peace with that voice and don’t let it overpower you.

GL HF!

--

--