You grab a fresh coffee, you open the Macbook and read about the latest tech out there. You watch developers working for your dream companies talking on stage. They talk about the latest updates on the libraries they released. About the cool stuff they work on and about how they are building the future.
In 3 minutes tech talks they solve issues you would struggle with for days. And they do it live, in front of an audience. Afterwards, they use all the right words to explain these complex technologies with ease. And they open source everything on Github. Guess what, by now, millions of people are using that code already.
But, your dreams are modest. Forget being on stage, what about getting that senior dev position? What about getting more responsibility? What about working for one of those cool software companies? You could afford all the gadgets you want. You could afford living in the center or travel the world. You would finally stop worrying about those overpriced morning coffee latte you are addicted to.
These coding skills of yours must be worth something.
Wait a minute.
This is not the first time you thought about this. You did it for weeks now. You made a plan. You bought a few online courses. You secretly checked other jobs. You even grabbed your courage and talked to your tech lead about your aspirations.
Yet, here you are again…
You actually, never finished those courses. Your tech lead said there are still things you lack, that you could do better in code reviews.
The jobs you look at are terrifying, they ask for so many technologies you never got to touch.
And quickly the bright future you imagined, the dream of using your coding skills for something bigger, is now an illusion.
Anyway, the clock is hitting 10:00, and the daily standup will start. By now your coffee mug is half empty. Enough procrastinating, you will think about it tomorrow.
So you jump in the daily meeting half asleep and talk about yesterday’s bug that you are still investigating.
You tell yourself that at some point “it will click”, just like it did with the senior developers around you.
If you just practiced a bit more. If you would just finish that data structures course you bought last week.
Maybe is just another stupid dream anyway. Developers are average “janes and joes”.We don’t save lives, we don’t fight crime. Hell, most days we don’t even leave our chairs. Why even bother?
Developers are average “janes and joes”. We don’t save lives, we don’t fight crime.
Pay is good enough and conditions are bearable. When the evening comes you find yourself watching the latest Netflix series instead. Is about a hacker so there must be something to learn from it.
As a fresh developer I got my first job by luck. I was new in town, I did not speak the language, I did not want to wash any toilets and I was able to write code (mostly spaghetti code, but working code).
Anyway, the first six months on the job were tough. As a self-taught coder, I had gaps all over.
I didn’t even consider myself a programmer, I was an accidental hacker at best.
My lack of formal education in Computer Science only made things harder (programming is still taboo in traditional engineering, except some Matlab scripting).
Yet, after a few months in my new programming job, things got a lot easier. I got used to the codebase, the product and the people. My skills were, let’s say above average. Same for my salary.
But, as soon as my bills were paid and I could afford the latest gadget, my aspirations took second place. When I got home in the evenings, instead of coding I played computer games for hours.
I drown myself in trash food, alcohol and binge watch crap for night’s end. In the morning, I would go back to a job I wasn't excited about.
You see, the biggest enemy of an ambitious developer is not the complex technology. It is not that things always change. Not even the lack of knowledge . It is comfort. Because after getting that first job, that first promotion, we all get a bit too comfortable.
The enemy of doing great is doing good, particularly good enough.
It was a sunny summer day, mid-august. I was scrolling through my old diary. It outlined a plan on how to grab my courage and leave that soul crushing job. To work for a top tech company, even give a tech talk. Fast forward two years and nothing of that happened.
And you know why? For a long time, I told myself I was smart. I told myself one day I will finish those courses. One day I will brush up my skills. One way I will leave that crappy programming job.
As you guessed, ‘one day’ translated to never.
Reading through that old diary, I became sick. Sick of mediocrity. Sick of all the fantastic ideas that never saw the light of the day. And most importantly I was sick of myself.
You see, my biggest mistake as a developer was not was not the spaghetti code, it was not misinterpreting requirements or not writing enough tests. My biggest mistake was waiting for things to happen.
It took me years to realize an ugly but univestal truth: ambition is not enough, potential is not enough. Writing things down is not enough.
If you fail to execute, “one day” will become never.
The following nights I couldn’t close an eye. So, I wiped out my old computer. I took note of all my unfinished Udemy courses, scraped most of them, and finished what I could. I created a strict time table outlining objectives and deadlines.
Every day after work I would study until midnight. From programming fundamentals, to Cloud to Microservices, you name it. On the weekends I would join hackathons. On and on, everything I did was coding.
Learning things, building projects and meeting other developers gave me back the feeling of excitement that I somehow lost. Yes, I was overworked but I was excited. Nevertheless, something was still missing.
I was going fast, but I was going nowhere.
You see, if you take 5 steps in 5 different directions, you will barely move. My weekend hacks were mostly code I was already familiar with. Between all the socializing and traveling, I would end up exhausted just to start again on Monday. I was overworked, overweight and burned out.
I was still trapped, only my hamster wheel was turning faster.
In the middle of all this mess, I joined a random meetup about software development. It was about programming as a discipline, as a profession (a topic I did not even understand anyway, but they had free pizza).
It was there where I met the most influential mentor I had during my whole dev career. Already the CTO of a highly successful tech company in Germany at a really young age, he was everything that I dreamed of becoming when I started this coding journey. He was extremely sharp, in great shape and mood.
So, after the meetup I translated my desperation into courage. I gathered my strength and asked him what I should do if, one day, I wanted to become like him.
He suggested we meet and have a coffee. We did so in the following weeks. Half an hour became a whole evening. He told me about his journey and his views of programming and software development.
For the first time in my few years as a developer, I felt excited. I felt that there was something more to this coding thing.
Things were still not great but if he made it, so could I.
Following his advice, I retouched my study plan. But I decided to cut the crap. So, I deleted all unfinished courses and I went back to the basics. All this time I have been jumping around from technology to technology. I missed one important detail.
Most of what we call ‘new’ in software development, was actually reinventing the wheel.
The latest libraries were fancy mixes of standard web technologies. So what if instead of studying the end result I focus on the principles behind them. Then I would be able to understand what is going on regardless of the programming language, the framework or the language.
Dragos, you must be a genius or something.
In the meantime, an email landed on my inbox for a side job as a coding instructor. I accepted it without thinking. It was teaching the very basics, assisting students in web development. Probably the most instructing period in my career as a dev.
Studying the fundamentals over and over is still the most powerful way I know to get good at software development.
Regarding my mentor, what started as a casual encounter became a long term friendship. We met regularly once a month.
Fast forward a few weeks and I was interviewing with the major tech companies in the city. The most promising one, a well established fintech startup based in Berlin. I ended up declining their offer and accepting something much, much better (more on this in another article).
In six crazy months I went from underpaid, undervalued and frustrated coder to joining a top tech company and teaching. Was it hard? You bet it was. Was it worth it? Well, the tech stack was better. The money was much better. And I was finally surrounded by professional programmers that I could learn from.
Nothing in this world beats the feeling of achievement you get from getting good at something you poured your life into (in this case programming). Something that became so close to you, so central to your existence. Unhealthy obsession? Sure.
Nothing in this world beats the feeling of achievement you get from getting good at something you poured your life into (in this case programming).
But, for a kid that spent the first years of his adult life jumping from soulless programming job to soulless programming job, I am telling you that is a lot of something.
I had no superpower. I did not start coding when I was 10. None of my parents, relatives or close friends was a programmer. To be honest, I never imagined being one. Computers were machines. Static and structured.
I had no superpower. I did not start coding when I was 10.
Yet, I always wanted to be somebody and software development seemed like the perfect industry. This is why I left my engineering job. This is why the long nights. The frustration and the constant traumas of code reviews.
Stop wondering if this is still for you. Just commit to getting it done. You don’t need a gift, a secret or an interest from an early age. You do need hard work and dedication.
To hell with passion
Honestly I don’t care if you do it for the money. If you do it for personal achievement or for the comfort that comes with it. Just do it.
Looking back, the things that helped most were the things I hated the most. Staring at the same pieces of code over and over, showing up when you don’t feel like and asking for help and keeping yourself from blowing off when you feel you just can’t get enough.
The greatest tragedy in our sector right now is the myth that your potential to be a great developer is determined by things such as the age you started to code at or a diploma.
Phrases like “I started coding at 11” make being a great developer seem like something written in the stars.
No, I am not going to deny the importance of talent . But yes I will tell you it is totally overrated (I still don’t consider myself a talented coder, but a good one).
It is true that an early exposure to computers definitely helps if you are trying to be the next Bill Gates or Mark Zuckemberg.
But, most programmers out there are not and they need not to be those people.
The belief of some ingrained talent and fear got us here.
No you don’t need a calling, a gift, you are not a prophet. You do need discipline and courage.
You must stop waiting for the magic moment when everything will click. You need to make this your number one priority.
Take your craft seriously or good luck going to work everyday to a mediocre programming job, fixing some legacy code for the rest of your life.
For me, that is worse than dying.
If you got to this point of the article, then you are probably an ambitious coder wanting to explore their full potential. Maybe you want a better paying job, maybe you finally want to gain long lasting confidence in your technical skills.
Regardless, in the last 12 months I have worked together with more than 42 developers and used the same system that helped me escape my mediocre programming job to help them build extreme confidence in their technical skills and get to the next level.
In the last months, I have built a whole team of specialized software training experts. We burned the midnight oil, we talked to other developer friends, we talked to their tech leads.
We have transformed building a successful career as a software developer into a predictable, structurable, routinized process that works. The average salary increase developers see after finishing our program supasses 25%, way beyond normal.
If you want to achieve similar results, let me suggest: get in touch with my team. You can watch the free case study where I cover this process step by step and then book a free 45 minutes consultation call with me. Together we will build a step by step plan to get you to the next level.
In it you will learn:
- The Biggest Mistake Most Software Developers Are Making When It Comes To Their Technical Growth and Earning More The
- Three Things That Highly Paid Programmers Use To Build Extreme Confidence In Their Technical Skills
- The Proven “4-Step-System” That Will Help You And Put Your Dev Career On Autopilot And How You Can Use It Right Now
Best of success!💪
PP.S. Like thousands of other ambitious software developers you are probably craving unbiased advice about what it really takes to build long-lasting confidence in your technical skills, become an expert developer, and earn more. If so, then I invite you to follow me on LinkedIn or Twitter :) I will make sure to keep delivering you fresh pieces of wisdom straight from the trenches of software development. I will also make you get off your but and take action from time to time!