Attracted by promises of 150k salaries, remote riches and a lifetime balance equal to none, everybody wants to be a programmer these days.
Coding Bootcamps and Udemy courses are popping out everywhere. Young and old, millions of people are trying to learn how to code in order to improve their lives and income.
“The software industry is becoming increasingly competitive.”
For a junior position now you are required to master 3 different frameworks. If you think that just because you write code, you have no competition, you are dead wrong.
The next time you get rejected at a technical interview is probably because someone that was also going for that position was a little bit more prepared.
The point is, whether you want it or not as a software developer, now you have to compete.
Because if you don’t have the money to get into medical school, investment banking or something similar, software dev is the most financially rewarding career you can pick. So hundreds of thousands of people are choosing to get into programming.
It’s the reality Bootcamps and Youtube gurus don’t want to tell you.
If you understand how this industry works. If you understand how you function, if you become aware of the technology adoption curves, you will have your best shot.
And, with most developers falling into complacency and following the crowd, you will literally blow your competition away.
Back when I earned my living writing code, understanding the reality of the market around me enabled the most fundamental shift in my career.
What followed after that was an exponential growth phase that got me from the average coder fighting to get the attention of the CTO to the consultant those same CTOs call when their tech team is in trouble.
It is not the latest framework out there, it is not a trick or a special algorithm. Also, is not thinking positively or some self help voodoo thing. As a technical person, I have little stomach for that.
It was focused on hard work and strategic planning that got me here. Even writing this article on a Sunday morning is part of that plan.
And through my work of helping other developers achieve similar levels of success, I boiled down those principles into fundamental truths that you can apply right now in your developer career to get to the next level.
Some involve technology, some involve your mindset and your habits. Both are connected, both are responsible for success.
“Is not about a piece of the pie, it is about the whole itself.”
If you aspire to be something more than a coder, make sure you incorporate all of them in your day by day.
To compete as a developer in this new world, you must go beyond coding. You must work smarter and you must work harder.
It doesn’t mean you are the first to come into the office and the last to leave. It means you must have inner standards for success that are higher than your external world.
“You can’t excel by following someone else’s plan. You must build your own.”
Most developers look to their team or the developer next to them when setting the standards for their work. If you want to be an exceptional software developer stop looking over your shoulder. Extraordinary developers have their own standards.
If you want to work with great developers, you must become a great developer. If you want to earn more, you must add more value.
Write unit tests not because they make you do it, but because you believe that great code should be tested.
Learn algorithms not because they require them in code interviews, but because they help you think effectively and understand what happens under the hood.
Get interested in Agile methodologies, not because the manager wants fewer meetings but because only through methodology and planning will you be able to build great software.
In other words, set high standards for your processes and exceptional results will follow.
In the first months of your developer career, it is ok to focus on one technology or framework.
Months become years without knowing they are stuck. Then technology changes, suddenly new things come around and they are out of date.
Many spend weekends and evenings on the online course mania trying to catch up. That rarely works as it leads to burnout.
They learn mostly through memorization, and memorization does not scale. The more things you need to learn, the more you gotta put in that brain of yours.
Engineers know this pretty well, that is why engineers use principles. They use universal laws. That is how a 700 person airplane is built, not by memorizing.
Software is a bit different, I know. Because software is knowledge put in code by humans. And humans don’t follow universal laws like for example the physical world does.
But humans do follow conventions.
And given that our code is usually built on top of code that was before (that is what you are doing when installing all those npm packages), these patterns are everywhere.
“Just like the law of physics, you will find patterns repeating themselves again and again.”
This is good news for the anxious software developer busy catching up with the hype. By learning those patterns that repeat themselves you will be able to magically stay up to date.
Instead of having to learn a new framework, by knowing the patterns behind it, you will know 80% of it.
Back to our main idea, exceptional developers learn the principles behind libraries and frameworks.
Intimidating, I know. I mean how could you be the best developer in the world anyway?
With all the programming geniuses out there, the Mark Zuckerberg’s and Linus Torvalds, your probability of being the best in an industry that is so vast are rather slim.
Plus, I am sure if you are not living in the Bay area, if you are living somewhere in Europe or anywhere in the world, there is a software community there. And I bet there is space for you to be remarkable.
I can give you my example, I started mentoring software developers at my job first.
It wasn’t until I decided that we want to be the best in the world at training software engineers into building remarkable careers.
So instead of writing one article a week, I started writing two. Instead of reading one technical book every month, I started reading one per week.
And even then, it felt little.
When you plan to be the best in the world at something, your current efforts suddenly seem little. This simple exercise made us push ourselves to a level never imagined before.
They must define a technical vision for themselves that makes getting up in the morning and learning about software much more exciting than sleeping that extra hour.
“You are not born the best, you become the best by aspiring to be the best.”
If you want to be a great developer, aspire to be an exceptional one, aspire to be the best.
Your energy is limited. From the moment you wake up, in the best case you probably have around 8 hours that you can apply to improve your programming skills and software knowledge.
Probably most of those hours are spent at your job, many times in unnecessary meetings, or simply fixing things. Those are things that you need to do to deliver, but they are not things that will necessarily move your technical career forward.
That gives you little space to improve yourself.
Anyway, let’s say you are super determined and you decide that in the next 6 months you will wake up 1 hour earlier in order to work on your skills Monday to Friday(this is really hard for most developers). That gives you around 10 hours a week.
Suppose you commit to this religiously and suppose you do not take vacations. We are talking about around 260 hours. You might think, oh that’s a lot.
Yet, if you spend 50 hours on learning some Typescript, 50 hours on a bit of AWS, 50 hours reading about crypto, another 50 on some security stuff and another on a book about distributed systems which you won’t touch because your company is barely using some docker.
Now, think of a different scenario. To hell with crypto, security and distributed stuff.
Well, after 6 months you became a beast of software dev.
You don’t know about it and you don’t need to know about it. But in your stack, you will be a true master. That is the power of focus.
“Focus on the amazing things you chose not to do, in order to become great at the ones you can excel at.”
It is a deliberate choice.
One that I made long ago when I was still writing code in a cubicle and one I never forgot ever since.
Again, if you want to excel as a software developer you must understand the power of focus.
Your learning rate as a developer is without a doubt the variable that will impact your career the most in the next 10 to 15 years.
It is basically the speed at which you grow. If you were a company these days, it would be the most critical factor in your valuations. The faster you grow, the more you are worth it.
“Because, smart today, does not guarantee smart tomorrow. The future belongs to those who learn.”
Remember is not about the number of things or technologies you learn, it is about the outcome of that learning (this is what most online courses miss).
There are dozens of variables influencing your learning rate as a developer.
From what you learn, to how you learn it, to how you apply it in the real world. From your ability to focus to have the proper structure in your learning.
And is something extremely hard to quantify because of its complexity?
"You are not a machine learning algorithm, you are a human. And human learning curves are complex."
These factors don’t sum, they multiply each other.
That means if you are 10% more focused, and you spend 10% more deep work time, and you are 10% more structured then, you are ….. More effective.
Do whatever you can to maximize your learning curve. It is the only thing that matters.
Look, you can learn from courses, and you can learn from books. Can you become good without a mentor? Sure you can. Can you become great? I doubt it. Why?
Is not because you need someone holding your hand. It is pure math actually.
Trillion things to do and learn. Well, what a great mentor will (a mentor with proven experience) is to cut down that list.
They will help you reduce that infinite list of things to do, to a step by step plan that is realistic and adapted to your current situation.
So instead of wasting 5 years of your life figuring things out, you can build upon the knowledge of the people that did it before you and get there faster with the highest probabilities of success.
"I’ve had many pivotal moments in my dev career since I first started writing code. But, the most crucial one was without a doubt when I got my first mentor."
After our first meeting, I felt so dump I could not even think why the hell hasn’t done this before.
Since that moment I never stopped getting help on the topics I struggle with.
Being a programmer was one of those topics was software architecture, then it was writing, then it was building a team and teaching others.
If you want to be an exceptional software developer, get a mentor.
Way too many developers rely on intuition, guessing and improvisations.
We call ourselves engineers but most of the work we do is based on extending other code or simply pasting answers.
The problem with this approach is our brains get lazy. We start using the same repetitive approach that we use in our code everywhere. Smart developers not only engineer their code.
From git workflows to debugging, they engineer their tools. They engineer their environments. And they engineer their careers through strategic planning.
They rely on systems as much as they can.
If you want to really stand out as a developer, you must start thinking in systems.
You must start engineering your tools, your environment and your technical growth so it works on autopilot. So even on the bad days, you make progress.
That kind of steady progress that has a system will make the competition irrelevant.
If you want to be more than a coder. If you want to be in this field for the year to come, you must plan for the years to come. There are dozens of decisions you will have to make.
You will have to change your habits. You will have to invest in yourself. And you will have to think differently. These kinds of decisions judged in the present moment might make little sense.
Why wake up in the mornings? Why so much structure? Why so much effort?
This is why most programmers are not successful.
And by the time tomorrow arrives, they get laid off with no up to date skills asking themselves what the hell where they were doing patching spaghetti code for the last 5 years.
Playing the long game means leaving your comfort zone.
Because you know comfort brings complacency and complacency brings failure. Success means trying things that might not work out because they will teach you valuable lessons.
It means sacrificing a bit of the good of the present to build some great into the future. It takes a different kind of thinking, one that most developers are not willing to adopt.
Yes, I will be talking about your physical and mental health.
Because simply by managing your diet and your sleep you will arrive fresh at that daily meeting where all the other devs are mumbling because they just woke up 30 minutes.
The major changes I have done in my performance as a software engineer came from eliminating bad personal habits and adding new ones.
This was by far the most important change I have done in my life and the hardest. In my first software job, we had a fridge full of soda and sugary snacks.
We used to go for beers after work and drink again on the weekends. All to go back to the terminal on Monday morning and drink 5 coffees just to catch up.
Even if I was consuming more caffeine than humanly possible between the short energy bursts I was mostly tired. My weekends were spent either having a hangover or playing video games.
"I never had time or energy to improve my skills. It took me 3 months to finish a 3-hour long course on microservices."
If you think your personal habits are not affecting your performance as a software developer, you are dead wrong.
Simply by getting your diet right, getting enough sleep at night and avoiding alcohol you will have 3 times more energy than the average coder.
If you want to be a great developer you need to take care of your assets, and your most important asset is the state of your brain.
Software development is a crowded sector and competition is fierce. But, if you follow the right principles, if you have the right habits and discipline you will thrive.
Yet, if you embrace the difficulty.
If you learn how to tame this beast, you will build the necessary confidence to excel in this field. Because even if technology is always changing in the software sector, most things stay the same.
The secret is building a strong technical foundation and coupling it with the right mindset. Do that and it will all feel like a walk in the park.
Now go out there and apply these principles.
You won’t regret it!
If you want to know more about how I work with software developers helping them implement more effective strategies to improve their technical skills so they excel at what they do, click here to watch the FREE training I have put together. It goes much deeper into the principles I have told you about.