I’ve been writing code for over 10 years now.
From big corporations full of legacy code to small startups that would change strategy every week. I also mentored over 250 software developers, helping them move to Senior level and beyond.
On the way, I’ve seen projects fail and succeed.
In this article, I will share 30 things I wish I knew when I was a fresh developer just starting out.
Let’s start with number 1:
Ignore the noise for the first 3 to 5 years of writing code. Ignore tech Twitter selling you a new JavaScript framework like the next big thing.
Instead, stick to one framework and master it.
This is because once you master one technology, it is far easier to master others.
Developers get stuck because they do the exact opposite.
They jump from the shiny framework onto the next one. After 10 years of coding, they wonder why they still struggle with the basics.
Don’t be those people! Pick your hill and own it.
If you are a JavaScript developer, any mainstream framework is a solid choice. It can be React, Angular, Vue.js, or, in the backend, Node.js.
Don’t worry.
As you get closer to Senior level and switch jobs, you will get a taste of them.
Plus, after reaching the Senior level in one technology or stack, most people will consider you Senior in general (which is a great advantage when selling yourself).
But, don’t let that Senior perception foul you, and keep improving your skills.
The frameworks and libraries you are using right now might not be around in 10 years.
But fundamentals never change—which is why we call them “fundamentals”.
Mastering the fundamentals is even more crucial if you are a self-taught developer like me or have gotten into coding by doing a Boot Camp.
In my experience, weak fundamentals are the biggest challenge for developers who join our Mentorship programs.
Sure, Dragos… but what are those “Fundamentals”?
Fundamentals are the biggest bottleneck when working with the developers who join our Mentorship programs.
Well, I will write an article about that in the near future, in the meantime, check out this Frontend Developer Roadmap or for the backend, this Backend Developer Roadmap.
No matter how much you know, you will never make it if you don’t believe in yourself. Most developers don’t reach a higher level because they don’t even try.
Do you know the story of the baby elephant?
As travelers passed by and observed the elephants, they were confused. These huge creatures were held in place by a tiny rope…
Why didn’t the elephants break the hope and escape?
Turns out when the elephants were babies, they were tied with the same rope. They tried to break it back then, but they just hurt themselves in the process.
So they formed the belief that they couldn’t break that rope.
Now, even if they are strong and they could break that rope with a simple swing of their feet, they don’t even try.
Sounds familiar?
As software developers, we do the same.
Picture this… You do a technical interview, and you screw it up. So you start thinking you are simply bad at technical interviews. You don’t try again.
You stay stuck in an unfulfilling job, underpaid and undervalued.
Or this… You get corrected in a technical discussion.
You feel embarrassed and start thinking you don’t know what you are doing. You don’t try to speak up again. Even if you work hard, nobody notices it. You never get promoted.
Negative beliefs are like a prison for the mind.
Listen to me… You can achieve much more than you think! Don’t let anyone tell you otherwise! Kill your negative beliefs before they kill you.
Even if they promise free soda, a ping-pong table, and that you will “learn a lot,” you should always ask for more cash. I would also include “sweat equity” on that list.
You can’t pay your rent with “sweat equity.” Developers are usually the last ones to get paid, even if your startup does a multi million-dollar exit.
About learning a lot…
You will learn a lot in many different places.
In this world, cash is king.
“You don’t get what you don’t ask for.” - Anonymous
My biggest regret when I left employment was that I was always too afraid to negotiate my salary. Because of that, I’ve been chronically underpaid for years.
That's why my heart fills with joy whenever I help one of our mentees negotiate a higher salary!
Senior Dev Tip: Make it a policy to always negotiate your job offers. Even if you don’t get a bump in salary, you will practice your negotiation skills (which you will need daily as a developer, particularly when dealing with product managers).
🚀 Want to find out your technical gaps as a JavaScript Developer? Take this FREE Technical Assessment to find out what you need to focus on to get to Senior and beyond. 🚀
Negativity is rampant in software development, from mean comments in code reviews to nasty feedback in technical interviews.
People are people, and they bring their emotions to work. Just remember, people who are mean to you are mean to everybody.
Misery attracts misery.
So let them have a bad day if they want to. Don’t let their negativity drag you down… or worse… become one of them!
“Woke up an optimist
Sun was shinin', I′m positive (We can run)
Then I heard you were talkin' trash (I′m on a mystery)
Hold me back, I'm bout' to spaz” - Kayne West (FourFiveSeconds)
Remember that when we go to sleep, we all sleep with ourselves. The hard part of being a bad person is that you have to live with yourself.
I used to have a very hard time with this. Because I was afraid to confront people. To let them know they were crossing the line.
Until one day, a Senior developer was working with told me… "Dragos, you teach people how to treat you."
Try to set boundaries when people get on your nerves.
Some might not like it, but you will instantly gain their respect. Also, your own. If that doesn’t work, the best you can do is ignore them and move on.
Senior Dev Tip: When you face a hard situation where you get criticized, for example, a technical interview… do something kind for yourself. Like going for a walk and having an expensive latte. Remember, you can’t fill someone else’s cup if yours is empty! Fill your cup regularly.
This one goes in line with ignoring negativity. But don’t take interview feedback personally. Don’t take code reviews personally.
Simply don’t take anything personally. Because it is not personal.
They are criticizing your code, not you as a developer. Or you as a person.
If they do criticize you as a person, ignore it. Remember what I said about nasty people? Fix what’s broken and move on.
Try to think of your software engineering career as just a game.
Sometimes you win, sometimes you lose. So what.
Cliche, I know, but become independent of the outcome. Just like an exhausted athlete after an intense game, put one step in front of the other and move forward. All while keeping your pride and your passion for the game.
It is easy to feel confident when you have the skills required to do the job. When you fly through the code base, solutions are obvious.
Sadly for us developers, that situation won’t happen too often.
You will constantly face situations where you feel incompetent. New technologies, code bases, and teams shake your confidence and make you feel incompetent.
Simply knowing what you don’t know will make you more confident in those situations. Even if you don’t have the competence yet.
Use clarity in your goals, life, and technical gaps as a compass to keep you focused and grounded when you feel lost. It works every time!
Senior Dev Tip: To find out your technical gaps, take this FREE Technical Assessment.
Despite what you’ve been told, you don’t get motivated by watching videos. Or holding hands and singing with other people who want to get motivated.
You get motivated by getting things done.
So, If you are feeling down, don’t wait for motivation. Get busy.
Close tickets, fix bugs, test, or document some code. Get sh**t done. In the words of the great Steven Pressfield, start before you are ready.
Senior Dev Tip: Taking action will also boost your confidence. Productive developers are more motivated and happy!
Don’t let anyone tell you otherwise. Technical Interviews were always hard, and they only got harder lately with the job market being such a mess.
Yet, they do get easier with practice.
But most developers don’t practice hard enough because they let rejection get into their heads or because they cannot get interviews in the first place.
If you can’t even get technical interviews to practice, your CV might be the problem. It either lacks critical points, or there are red flags that make recruiters discard it instantly.
Either way, you might want to check out this article, where I explain how to build a developer CV that gets you interviews.
The phrase “one Leetcode problem a day keeps unemployment away” has some truth in it.
Despite what tech influencers have told you, the best skill you can learn as a developer is not a shiny JavaScript framework. It is passing technical interviews.
Get good at technical interviews, and you will never have to worry about your future again.
Here is the most in-depth guide to technical interviews in the galaxy. Make sure you bookmark that article before your next technical interview!
🚀 Want to find out your technical gaps as a JavaScript Developer? Take this FREE Technical Assessment to find out what you need to focus on to get to Senior and beyond. 🚀
Most of the stuff you will try as a software developer will fail. Even when you get to Senior level. Even if you are a CTO.
You will be passed over for promotions. Some of your projects will be canceled. And you might even be laid off. Even if you did a great job.
Remember, winners find a way to win (and losers find a way to lose). Instead of avoiding failure, actively seek to fail.
Like Thomas Watson said, “If you want to increase your success rate, double your failure rate.”
This is one thing I improved the most in the last couple of years.
I used to live in fear, paralyzed by anxiety.
What if my boss realizes I am not good enough? What if I don’t manage to find another job? Will I end up living under a bridge?
These thoughts would bring me down and scare the hell out of me. It got even worse when I started my own training business for developers.
It all changed when I discovered Stoicism. I realized it didn’t matter what happened; as long as I could breathe, I could fix it.
Guess what?
It worked!
I even achieved more because now I could solve problems instead of just worrying about them.
Learn how to debug your code properly, and your developer life will get much easier.
No more long evenings hoping you will find out the issue so you can go home. You will also save the day when bad stuff happens to your application.
And you will stand out as a true Senior developer who can be counted on that managers love.
Senior Dev Tip: If there’s a fast way to Senior Developer, it's getting good at things other developers avoid. Debugging is one of them, along with testing, managing legacy code, and writing documentation. Do more of those things, and your skills will improve exponentially.
Every company has a different definition of Senior developer, but all Senior developers have one thing in common.
They always manage to get stuff done.
Unclear requirements? Meetings over meetings? Unstable deployment pipeline?
It doesn’t matter.
The Senior developer always manages to deliver.
This is partly because Senior developers have reached a solid level of Technical Mastery.
But, I would argue it is also because Senior developers keep delivering things to production as their north star.
Seniors know how to “keep the main thing, the main thing”.
And the main thing, if you are a software developer, is delivering working software to production.
That’s what we get paid for and what our users expect.
Senior Dev Tip: Delivery is the most in-demand skill and will always be. As developers, we are judged not by who we claim to be but by the fruits of our labor, which is working features that deliver value to our users.
ChatGPT is better at tricking you into thinking it is smart rather than writing code.
Despite the doomsday Twitter crowds, your developer job is safe. Don’t let the noise distract you.
LLMs are very far from AGI (Artificial General Intelligence). An MIT study just confirmed that current AI systems are slow at automating human jobs.
Once the hype is gone, developers who have done their homework and kept improving their skills will have a great advantage over those who let AI paranoia confuse them.
Senior Dev Tip: Even if AI will write most of the code, most of a developer’s job is not coding. It is clarifying fuzzy requirements, advising stakeholders, researching new topics, and much more. That stuff probably won’t get automated in my lifetime. You are safe. Now, back to work :)
Junior Developers can be very annoying sometimes. Especially when they question your expertise, which they will do quite often.
I know it because I was one of those annoying Juniors!
But, most of the time, Junior developers are just trying to do their best.
Remember, we all were stubborn Junior developers at one point in our careers. You can blame it on the Dunning-Kruger effect.
They don’t know what they don’t know. Be kind to them, even if you don’t feel like it!
🚀 Want to find out your technical gaps as a JavaScript Developer? Take this FREE Technical Assessment to find out what you need to focus on to get to Senior and beyond. 🚀
You won’t get your first developer job by memorizing data structures. Unless you want to work for one of the FAANGs. In that case, I wish you luck. You will need it.
There is way too much competition for those jobs.
Whether you pass or not, the interview will be a matter of chance rather than skill because, at that level, everyone is highly skilled.
Focus on being able to build things instead of memorizing LeetCode problems.
Especially if you are at the beginning of your career, you will interview with smaller companies that care more about your ability to deliver than about your paper degree.
You can dive into algorithms and data structures later when looking for a second or third job. For now, you are better off learning how to build real-life applications.
I used to wake up at 9 a.m., and my daily meeting was at 9:30. I would sip two or three coffees on the go and jump into my meeting half asleep.
Rushing through the day, I tried to catch up in the evenings, telling myself I was a night owl. I just work better at night.
The truth is that even if yes I was getting a lot done in the evening, the probability of getting distracted was much higher than in the morning.
I would also miss my gym and social life by working until late.
One day, I had to wake up earlier because I had an appointment in the morning. It was canceled, so I started working instead. I realized how much more productive I was when starting early and fresh.
Since that day, I have tried to move my most important work to the mornings.
It took me a while to adjust, but it was well worth it.
In addition, I would say have an exit time. For me, it is 7 p.m. I closed my laptop after that. There were no meetings and no coding after that. You won’t reach me even if you try.
Having an “exit time” gives me a structure to plan my days.
It gives me my life back and allows me to have hobbies besides work (like going to the gym, a theater course, or hanging out with my friends).
Senior Dev Tip: When trying to implement such a routine, don’t make my mistake and get too crazy about it. If you miss a day, that’s okay, catch up where you left it. Using shame as a motivator doesn’t work. If you are flexible in your routine, you will likely stick to it for longer. My brother Bogdan, the most disciplined person I know, told me this for years, but I wasn’t listening. It turns out it is scientifically proven.
Senior Dev Tip: I am the most easily distracted person. If I don’t have a clear goal and a deadline, I will procrastinate for hours. This is why now I plan my days and weeks ahead of time. I also try to have a stable daily routine.
To minimize distractions, I use the Pomodoro technique(like when writing this article) and other blockers (like feed blockers for my social media). I invite you to try at least one of those habits.
In my first years writing code, the biggest mistake I’ve been making was not taking enough care of my health. As I told you in the previous section, I was a bit of a mess.
Sleeping at the wrong hours, eating the wrong food, abusing sugar and alcohol.
No wonder I hated my developer job and was about to quit so many times. But, as I got closer and closer to my thirties, the damage to my health seemed obvious.
I had a belly, I couldn’t maintain my focus, and I would get tired very fast. My energy constantly fluctuated. Eating tons of candy bars didn’t help.
Diabetes runs in my family, and if I hadn’t stopped early enough, I would have followed the same path as my father and uncles.
At some point, after enough hangovers, I realized I can't buy back your physical health.
These days, I prioritize sleeping well, eating well, and moving a lot, even when I am in the middle of a big project or something.
If you ask me, it is not because I am on a diet. It became my lifestyle. I am a healthy person, and I want to stay healthy for decades.
Senior Dev Tip: Healthy developers are more productive. They don’t get burned out and enjoy their lives outside of work much more. There is no reason for you not to keep yourself healthy!
In everything you do. The skills you learn, the companies you work for, and the people you work with. Long-term thinking is one of the hardest things to do.
Number 1, because just like me, you are human.
Humans, by nature, are not long-term thinkers. Sure, compared to other species, we are probably the most long-term mammals. But not even close to what we should be.
That’s mainly because our environment changed faster than our brains. We live longer than ever, but have more or less the same brain we had millennia ago.
A very short-term brain.
Number 2, is our culture is short-term oriented.
These days, everything is so easy and comfortable that we have become slaves to “instant gratification.” We want everything easy and fast—and we want it now!
This addiction to instant gratification stops us from pursuing things that are not so gratifying in the short term… like building a developer career.
But thinking short term will only mess with your emotions and bring you to the brink of quitting.
The truth is, the effort you put in today will pay off a few years from now. This is why you have to remind yourself that “the process is the goal.”
Senior Dev Tip: For God's sake, stick to things when they don’t work out. I saw a lot of people getting in and out of software development. The people who made it are the ones that kept going despite the challenges.
🚀 Want to find out your technical gaps as a JavaScript Developer? Take this FREE Technical Assessment to find out what you need to focus on to get to Senior and beyond. 🚀
Most of the stuff you will find on Twitter is designed to get a lot of likes, not to work in real life.
Social media can be a very useful tool.
But most of the time, its algorithms are so polarizing that most of the stuff that makes it through the algorithm either shares negativity or sugar-coated platitudes.
Like the TDD cult, when, in fact, most companies outside of the big tech don’t actually do TDD.
Senior Dev Tip: Do try to get good at TDD, though. It is a good philosophy, and you should know it particularly if you are aiming to become a Senior Developer
With the software development job market being more competitive than ever, your only job security is your employability.
In other words, how fast can you get a new job if you get laid off tomorrow?
Your “employability” comes down to two things. First, your skills, particularly your technical interviewing skills. Second, your visibility. That is how many people know about your skills.
Ideally, you should think about these two things almost every day and do something to improve both. This can mean, for example, keeping your CV and LinkedIn in the best shape possible and interviewing for jobs every 3 to 6 months, even if you are not looking for a new job.
Just like in sports, in software development, the harder you train in the pre-season, the less you suffer during the game. Always keep an eye on your employability!
Some dynamics inside the software industry give companies little incentive to invest in their employees. Don’t blame the player. Blame the game.
This is why pay raises are so hard to get, and when you do get them, they are nothing close to the salary upgrade you get when switching jobs.
Think 3% to 5% when getting a pay raise versus 15% to 20% when you switch jobs.
If you switch jobs for less than that, either you haven’t negotiated or you switched too fast. In both cases, you shouldn't do that.
Switching jobs is also one of the hardest ways to get a raise because it involves going to the market and doing technical interviews. Which most developers hate.
Which is why most developers feel underpaid (hint: they probably are). As I’ve already said it many times in this article, if you want to make more money and feel safer as a developer, get good at doing technical interviews.
Senior Dev Tip: Being good at technical interviews involves many complex skills, from live coding to framework-specific knowledge and System Design concepts. Be patient and be ready to fail several interviews before you get good. It is all worth it!
Even if you don’t want to go to the market, you can still earn a few extra bucks by asking for a pay raise. As I told you before, most developers are underpaid. And they don’t even know it.
One thing to keep in mind when asking for a raise is that you want to get it without sacrificing the relationship with your manager in the meantime. So you better not try to force them, or mention any other specific offers.
The best approach is to give your manager the chance to make you a counteroffer or to at least close the gap.
Remember, whether you get a raise or not, you will still have to work with this person for months to come. And they might still have to give you a recommendation when you leave.
Do not threaten them. Leave your ego aside and aim for a win-win.
Senior Dev Tip: If you feel underpaid, you probably are! Go ahead and document some of your wins last year. Then, gather your courage and ask your manager for a raise.
Senior Dev Tip: You might feel you don’t deserve a pay raise. My advice? You probably do. Get over your fears and ask for it. When in doubt, go to the market and see what other offers you will get. I know we are back to technical interviews.
You might feel super frustrated and angry at them. Maybe they promoted other people when you’ve been working so hard, or maybe they didn’t put your name forward for promotion.
Regardless of what happens, don’t do what most developers do.
Don’t use any kind of threats to get what you want.
First, even if you get what you want, your boss will never forget it. You will be on the “replace soon” list. You will also lose their trust, making it much harder to get your job done.
Second, as much as you hate it, companies usually side with the manager when power struggles happen. You will find yourself fighting alone.
I know this might not always be fair, but that’s the world we live in.
Your best bet is to manage your emotions and create win-win situations for you and your manager. If nothing works, go to the market and get another job.
There’s a saying about how “people leave bad bosses, not bad companies”. I found that to be true.
I would work under a great boss, even in a bad company.
That’s because no matter the company, this person will probably teach me a lot. Which will make up for the “bad company.” A bad boss in a great company won’t teach you much (maybe just how great bosses are).
Yes, most of them are. And you know what… Many are bad. Yes, they are collections of technical prose, often outdated or self-aggrandizing lectures of the author (Uncle Bob style).
My guess is that most people who say you should read this and that book haven’t read them either. Don’t feel pressured into reading just because everyone says you should.
As a vivid reader of the classics, I find technical books poorly written. It is hard to go through most of them without falling asleep.
You are better off reading the summaries of the best books and learning the rest from more engaging formats (like blogs, YouTube videos, lectures… etc).
Senior Dev Tip: Watch this YouTube video for our top technical book recommendations.
🚀 Want to find out your technical gaps as a JavaScript Developer? Take this FREE Technical Assessment to find out what you need to focus on to get to Senior and beyond. 🚀
This one aligns with thinking long-term, but if you want to become a great developer, don’t be afraid of hard work. And stop looking for shortcuts.
I know everyone is selling hacks these days. And some of those hacks are pretty legit ways to improve your skills.
Like setting time aside to work on your skills besides your job or focusing on fundamentals.
But regardless of how effective your methods or how solid your roadmaps are… Becoming a top software engineer requires a lot of work!
Sure, you will see some people getting lucky in this industry like in any other. You might have some friends who have better-paying jobs and know less than you.
Most developers who are ahead of you worked extremely hard to get there. Don’t be afraid to do the same. Work hard! It is all going to be worth it.
There’s too much noise in today’s world and even more in software development.
With hundreds of thousands of things popping up in your feed every day, one of the skills you can develop is the ability to differentiate the signal from the noise.
Look for quality instead of quantity in everything you do. From the code you write to the projects you build and the people you surround yourself with.
After 10 years in this industry, I can tell you things are not always as good or as bad as they seem. I’ve seen shiny objects come and go, but the main reason I am still here is that I didn’t get distracted by them.
There is no doubt that Crypto, IoT, Machine Learning, and whatever comes next in software will impact the industry in some way.
But it probably won’t fundamentally change the way the industry works. I know AI claims that, but some scientists from MIT are proving the transition to AI and automation will be rather slow.
Stay focused.
You don’t need to know a dozen frameworks and tools.
You only need to know a few very well.
Same with everything you do. You will have less anxiety, more space to think, and feel better overall when you get sucked in by the noise.
I know tech millionaires told you otherwise. That’s because they are already rich. Accepting a lower pay because you will learn a lot is a recipe for misery.
Don’t get fooled by “we don’t pay well, but you will learn a lot.”
Senior Dev Tip: Companies that pay software developers a lot have better and more exciting challenges to offer. There is a reason they can pay tons of money. It is usually because they build software products that make good profits. Which is usually the best environment for software developers to grow.
You’ve been told that writing a blog is one of the best ways to improve as a developer. It’s one of the myths that persists in the software industry. Just like contributing to open source, these things work well in theory.
Influencers perpetuate the “build in public” culture because it works for them.
In practice, life is short.
You have a job, some hobbies, and probably a family. You have better things to do on the weekend than writing or coding.
Some of the best developers I know don’t have a blog and will never have one.
That’s what companies pay software developers for in the end.
Senior Dev Tip: If you love writing, give it a shot. Remember, it is a long process; be ready to give it a few years before you get good. If you are afraid of putting things in public, start by writing in a diary or journal. Or by writing documentation.
Senior Dev Tip: Now that I am at it, side projects are overrated. Read this if you want to know why.
Some people say you are the average of the five people you hang out with. I don’t know about that statistic.
But, in the long run, you will become who you are surrounded by.
One of the reasons I am where I am right now in my developer career is that I always sought advice from people who were more advanced than me.
I hung out with them and saw them in action. Even if it made me feel uncomfortable because they were so much better than m3.
“If you're the smartest person in the room, you're in the wrong room.”
I was incredibly lucky that my twin brother, Bogdan, is also a software engineer... and not any software engineer, but one of the best developers I have ever known.
Don’t forget to give back the love.
Look around you. You probably know at least one person who is more advanced in their software development journey than you are.
Get close to them. Buy them coffee. Take them out to lunch.
You won’t regret it!
Okay, there you have it.
To be honest, I didn’t expect this article to be that long, but now I realize I could have made it even longer. Expect a part II of this series.
Finally, if you are a JavaScript developer looking to fast-track to Senior level, we want to help you.
Check out this free training we’ve put together for you, where I give you a step-by-step roadmap on how to level up. I will see you in the next one.
Take care,
Dragos
🚀 Want to find out your technical gaps as a JavaScript Developer? Take this FREE Technical Assessment to find out what you need to focus on to get to Senior and beyond. 🚀