Does this sound familiar to you?
If you are a coder, programmer or software developer then you probably know situations like these:
- You want to improve your coding skills but you are quickly overwhelmed by the endless information out there and don’t know what to do next...
- You have spent hours on online courses, but got stuck and frustrated and did not manage to finish them...
- You suffer from impostor syndrome on a daily basis, struggle to work independently and are constantly afraid you are not good enough...
- You are forced to stay in a job you don’t like, underpaid or burn out and wonder if software development is really for you...
- You keep hearing that if you keep on coding, one day it will click…
Are you facing this kind of difficulties right now?
If you are like most software developers, then you will be confronted with situations like these over and over.
Here is why:
You lack a system in your technical growth.
You lack a defined process that guarantees you develop complete skills no matter how motivated you are to practice, no matter what technology is the latest trend or the kind of developer you are.
Think about it: how many times have you struggled with what to do next to become a better developer just because you had no plan?
You have to build a system around your technical skills if you really want to code with confidence and never feel like an impostor ever again.
Why is this so important?
Here is the thing: not having a structured process for your technical growth is why 80% of coders, programmers and software developers NEVER reach their goal of getting promoted, landing a better job and earning more.
Simply because not having a system forces you to improvise (so you waste your time with the same online courses everyone else is doing that don’t even apply to real-life situations).
How are you supposed to improve your technical skills consistently when you are improvising all the time?
Therefore it is absolutely necessary to build a professional system that you can finally get rid of the impostor syndrome, code with confidence and become an expert software engineer.
Here is the solution you need:
As a software developer, I have been there myself and I know this situation really well. First when I moved to a totally new country, Germany. Being new in the city, I jumped to the first developer job I could get, just to end up stuck with little progression and no opportunities for growth.
Second, when I left my “startup job” and dreamed of joining a top tech company. I lacked the professional software development skills, the visibility and the mindset to get me there.
Luckily, a mentor opened my eyes. Following his advice, I built a system around my growth, focused on technical skills. As a result, I quickly became an expert in my stack, fast-tracked into the senior level, and landed a better job at a top technology company.
In the last year, I helped more than 40 software developers like you become expert engineers using the same system and now I can show you the 7 steps that will help you solve this:
Step 1 - Planning & Strategy
The first step to building a plan around your growth as a software developer is to make an objective analysis of your current skills.
What are your strengths? What are your weaknesses?
Do you struggle with the programming fundamentals, coding syntax or structuring solutions? Are you able to see beyond the code, to analyse the design?
Find the gaps between an expert software engineer and your skills. Your time is limited, so you can’t learn everything. To get results, you need to focus.
Your time is limited, so you can’t learn everything.
The better the analysis phase, the better your understanding of what are the exact gaps you need to cover and the more effective the time you will invest later on. Now it is time to build a strategy to get you to the expert level.
If you’d like me to coach you to help you go from coder to engineer with a step-by-step action-wise plan, get on a 45 minutes call and let’s chat.
Step 2 - Become a Real “Full-stack” Developer: API Design
Most training and courses focus on "hot technologies" such as React or GraphQL and miss out on more boring but essential topics. They do this because fancy technologies help them sell more courses. But the truth is, these hot frameworks recycle classic concepts from software development all the time. This is why to excel in the hottest new technologies you have to understand the fundamentals.
To excel in the hottest new technologies you have to understand the fundamentals.
The perfect place for software developers to understand the fundamentals? You guessed it: API Design. It doesn’t matter where you come from, backend or frontend. At the API level is where things meet. They talk a lot about what a real full-stack developer is these days, but 80% of those developers can’t even name the main three ways to version an API.
At its core, you are more than a backend or a frontend developer, you are a web engineer.
Here, don't just scratch the surface, explore performance, caching and testing. Go a bit deeper into the HTTP protocol and understand how the web really works. At its core, you are more than a backend or a frontend developer, you are a web engineer.
Step 3 - Understand the Full Software Lifecycle: Continuous Integration
The thing is if you are only able to contribute at the code level, your ability to help your team is limited. If you don't understand how to properly deploy applications, you will always need help to push your code and see it work.
And because of the way teams are structured, most developers can’t usually get their hands dirty with deployment (nobody wants you to mess around with code that will reach the users). But, if you never touch these topics, how will you ever learn them?
You must understand how code gets built, packaged, shipped and deployed.
To widen your perspective as a developer you must understand how code gets built, packaged, shipped and deployed. It is time for you to understand the full software lifecycle, what continuous integration and delivery really mean and how you can deploy your own applications with the best practices.
At the same time, cloud certifications require too much time and they go deep into topics that you as a developer don’t need to care about. Knowing at which network-level an application load balancer works is interesting but nor necessary. Get a good understanding of cloud, version control and integration tools instead.
If you understand how to deploy applications to the real-world, you will be able to assist your team from the coding phase until the deployment.
If you understand how to deploy applications to the real-world, you will be able to assist your team from the coding phase until a feature gets tested and deployed. Now, that’s an expert. And, who knows? Soon enough they will trust you enough and give you access to the company’s cloud account.
If you’d like me to coach you to achieve the same amazing results our mentees are achieving in their software engineering careers, click here and book a 45 minutes FREE initial consultation with me.
Step 4 - Think like an Expert Programmer: algorithmic thinking and data structures
Basketball players train their muscle memory so they don’t even have to think when they pass the ball. They do it almost automatically, out of reflex. The same thing applies to efficient coders when it comes to programming challenges. Seniors do it almost by instinct, some call it intuition, others say it just comes with years.
Expert developers use mental frameworks that they refined over the years to solve any coding problem.
Hear me out, it is no magic and it is completely learnable. It is not about memorising binary trees. It is about understanding the commonalities between those coding problems and having a structured process in approaching them. You have to focus on patterns instead of implementation details. And the keyword here is recursion.
It is not about memorising binary trees, it is about having a structured process when approaching coding problems.
This will come in handy not only in code challenges but also in your daily work as a software developer. Recursion is behind the DOM tree and even behind algorithms of the most popular frameworks such as React.
Step 5 - Specialisation: React, GraphQL and the "hottest" tech out there
At this stage, you developed a strong understanding of the core principles of software development. It is time for that extra step that will make you stand out. Specialisation will allow you to stand out between other hundred developers claiming expertise left and right.
If the backend is your thing, then go deeper into server-side development. If it is the frontend and you have been doing mostly React so far, time to touch other frameworks and dive deeper into concepts such as server-side rendering and performance.
The idea is not to just know about the latest frameworks, but to understand where the community is moving in that area, what are the specific challenges developers are facing on that platform and go beyond what the average developer knows.
In this way you become more than a developer, you will be able to bring innovation to your company, even to the whole industry. Plus it is easier to stand out in a library released 3 years ago than an established one where you compete with more experienced developers.
If you’d like me to help you understand what are the exact gaps in your software skills to go from good to great, click on the link and schedule a free 45 minutes consultation with me. We will also build a step-by-step action-wise plan for you to stay consistent and reach your dev goals.
Step 6 - Software Architecture: the "Big Picture"
Now that you find your way around code and you are also able to understand what happens to your apps after the coding phase, you are ready for the next step.
Expert software engineers are able to have conversations with senior developers, tech leads and architects because they share a common understanding of programming concepts way beyond technologies and frameworks. They can abstract and see beyond the implementation. They understand the common principles of software architecture.
Expert developers are able to discuss with senior developers, tech leads and architects because they understand programming beyond libraries and frameworks.
Now, don't be scared. You won’t become an architect overnight. At this point, you should start thinking about how systems interact with each other. How can your application handle millions of users? How does it integrate with other systems? How can it communicate with the external world?
You need to develop an opinion about topics such as scalability, reliability and performance.
Time to grasp concepts such as scalability, reliability and performance. So that when that discussion on application performance happens, you don’t feel lost and can actually contribute. You will even be able to discuss technical solutions outside of your domain. This will allow you to move into a senior position or technical lead one.
Step 7 - Professional Image: invisible talent is talent no one cares about
Nobody will hire you, contact you or invite you to give a tech talk if they don’t know about you. It is not 2010 and opportunities don’t fall on your lap just because you know how to code. So does every self-taught coder, bootcamp graduate, college student or junior developer.
It is not 2010 and opportunities don’t fall on your lap just because you know how to code.
Now, I know there are many so-called influencers out there saying you need to build up a personal brand, or that you need to Tweet every day. Or that your GitHub has to be extremely polished and the portfolio should grab attention.
All those things are nice to have. In real-world companies care about two things: your LinkedIn profile (that’s how they find you) and a surgically optimised CV. In the end, they are hiring a software developer, not an influencer.
If you’d like me to coach you to master your craft as a software developer, book a call with me to hear about my coaching program.
How can you build a technical blog if you are struggling with React?
Influencers are telling you that you need to build a personal brand because that’s what they do. But just because that worked for them won’t work for you. How can you build a technical blog if you are struggling with React? For now, your time is better invested elsewhere. To connect with other developers and tech leaders, you just need a tidy profile and to engage in conversations.
That’s all - you don’t need anything else to become an expert developer.
- Forget the 10 online courses you bought but never finished...
- Forget about memorising data structures and binary trees…
- Forget about solving all the problems on HackerRank...
- Forget about heavy programming books that take forever to finish…
- Forget about halfway youtube tutorials that always confuse you...
- Forget about technical blogging…
- Forget about building a personal brand…
Many of these things will just distract you.
Others such as your personal brand will become relevant once you are already at the mid/senior level.
These 7 steps will allow you to code with confidence, never feel like an impostor again and become an expert.
It is actually pretty clear.
For more content like this, follow me on LinkedIn.
After you set up this system, you will be able to handle any technical issue at your job or in a job interview. You will be the one choosing for what company, with what technology and with whom to work. You will automatically become a highly demanded expert software engineer.
No more hoping or guessing and waiting on the tech lead to recognise your value.
So far I have set up this system with more than 40 coders, programmers and software developers and they constantly reach outstanding results.
Last week one of our mentees landed her first “high-paying” job (30% on top of the market) after only 6 weeks of working with us. Without even getting to software architecture, a portfolio or a personal brand. Those things are part of week 6 and 7 of the program :)
If you are reading this, then you are most likely also an ambitious coder, programmer or software developer that wants to become an expert software engineer.
So, if that is the case you will definitely benefit from implementing the 7 steps I mentioned above. You will get so much closer to your goal in a proven way.
Regardless - we both know that reading a simple article on how to grow your technical skills will not get you the results you truly want.
If you want to get to that expert level right now, let me suggest: Get in touch with my team. You can apply for a free private consultation call with me, where we will go over each step in detail and build a plan to help you reach that expert level.
The only thing you need to do is click and fill the application form on our website.
Looking forward to consulting you soon.
Dragos Nedelcu
Top comments (29)
No. I was kinda onboard until the very end, and was even going to share this with a few juniors I know. The marketing spiel killed it.
Yes, most of these are good steps. Having a plan and a strategy is a great idea, and it will definitely streamline things a bit. Have goals - reasonable ones - and make a plan to attain them. Hell, that's a good 75%+ of the development process right there, and code and frameworks are secondary.
The whole "Forget...." part is junk. If someone wants to write a technical blog then by all means do so! Do it on WordPress or Jekyll and GitHub or whatever the flavor of the week is. Some of the best advice I've gotten was back when I tried blogging and someone came on and told me how wrong I was. (Not trolling either - it was legitimate.) And trying to explain something is a good way to see if you really know what you're talking about; you sit there and think it over, see what needs to be changed and then you figure out how to change it.
Nobody I know buys heavy programming books anymore. (And it's a damned shame in my opinion - I used to love picking out a book and getting excited about the contents, and now I can't justify paying $60 for something I can Google and find a crap ton of tutorials and articles for free.)
Why not spend time on HackerRank? Hell, check out exercism, and Rosetta code also. Solve problems! Then solve them again - differently. Use a different language. Do it in a functional style instead of OOP. Or procedural. Try to do it in Prolog, or SQL stored procedures. Is it going to directly benefit your career? Probably not - I doubt anyone is looking for a string reversal algorithm written in pure ANSI SQL. But it'll give you a different perspective, a different approach.
There's no real shortcut. How do you become a better coder? By coding. By solving problems. By deploying something, watching the errors flood the logs, then picking yourself up and fixing them, rinse and repeat. You can make the process more efficient, but you still need time in the trenches.
100%. There really isn't. One of my favorite articles is by Peter Norvig, the article titled "Teach Yourself Programming in Ten Years": norvig.com/21-days.html
I want to preface by saying there are many other ways to become a developer — not just a single, linear path. Can you go back to school and learn computer science? Sure, that's one way. But that's not the only way. Can you go through some six month boot camp? Probably ... but it all depends on what type of developer you want to become.
But as the (other) Matthew pointed out, you need to code. A lot. But not in isolation. No No. Find yourself a mentor — we all need at least one. The more, the better. Without solid mentors in my corner, there's zero chance that 5 years ago I would've been able to become a software engineer at Amazon Web Services.
Not only mentors, but find other folks who are on a similar journey. That was my regret: working on becoming a software engineer in isolation.
Thanks for that link - I know I'd heard both 10 years and 10,000 hours before, just couldn't remember where. Even without that as a basis I'm still surprised when I see job postings for a senior developer, requiring 5 years experience. I know some awesome coders with that much time, and they'd be great mid-level, but I'd be wary of having them as seniors. They may be great at it, but 5 years isn't enough time to get a lot of solid experience under your belt.
And yes - mentors are definitely important. I learned that the hard way. The main advice I got from my first "mentor" was always "I'm busy, here's a book about that." I've tried damned hard to not be that guy. It made me pretty self-sufficient, but I wonder sometimes how things might've been if I'd had someone who was a better guide, for both tech and career.
Yea it's definitely difficult to categorize people into mid or senior levels based solely on the number of years of experience. Using my most recent employer (AWS) as an example, I've seen "mid-level" engineers with 15 years of experience and also seen more junior engineers get promoted to "senior-level" within 4 years. Definitely depends on the organization. For me, personally, it'd be difficult to consider someone as senior without 10+ years of experience. The reason being is it takes a significant amount of time to be exposed to different problems. One person can have 10 years of experience but solving the same problem — or different problem with the same solution — over and over and over again.
Being a great mentor is an art. Although I tend to take a Socratic approach when answering questions, it's not always effective. Sometimes, people just need to be told to "read x ... do y." Context is everything. And answers do depend on the person. In some situation x for some engineer y, I might say "go read z." For that engineer, the lightbulb will go off in their head. But for others, they might require a little more hand holding.
So yes, a balance between wanting someone to be self-sufficient but not wasting too much time unnecessarily spinning their wheels (I'm often guilty of this).
This isn't really a counterargument. If you want to do so, nobody is telling you not to (including the author). The article is telling you not to write a blog if you're specifically doing it to become an expert from a beginner stage, or at least that's what I understand.
Fair enough, but in light of the remainder of the article I took it as "forget about doing these things, they won't help - my services will!" If anyone thinks that writing a tech blog - or any such focused-content blog - will take them from beginner to expert they're going to be sorely disappointed. (Well, it might help them along the way as a writer or communicator, but even that's not very likely.) You'll get an added benefit from researching topics, or getting feedback if you're lucky enough to get legitimate feedback and not just trolls or spam. It won't take you from asking "what's a compiler?" to principal r&d engineer at Google though.
Matthew, of course writing a blog is a great exercise for any developer and almost a must after a few years writing code. Yet, timing is crucial. If you are just starting out oh only a few years in your dev career you are better off working on those skills. Seeing big and small projects fail and succeed and building the backbone of your technical career. The software community is one big noisy pothole right now, this article is intended to cut through the noise. And of course if someone wants expert help, I believe they would definitely benefit from my services :) Cheers
After some experience in the field, maintaining a blog is a good way to share your knowledge and showcase your work.
From a beginner standpoint, blogging could be used to chronicle your developer journey.
Thanks. My one-liner advice:
Get a personal project like a website underway, and build on it.
You might also like: How to Master Python Fast and easy: A complete simple Tutorial based on the officiel documentation
Just trying to sell my-course-marketing-article to the next best blind person who is willing giving his money to the next coding guru team that can solve all your problems wow I wonder how much this consulting service costs that can be found everywhere for free on the internet.
Agree with most, except the parts about deployment etc. Devops for developers is a fad. System ops is a different job and if you want to do it then go do it. If you are happier developing expertise wih a language and ecosystem then do that. People pay more for experts than jack of all trades.
Am I coding or buying a used car?
Thanks for your awesome advice
Great article! I really agree with the last point as that was where I really was stuck a year ago. But I do believe that being well known in the tech space opens up several doors for you
Thanks for the advice , I now know where I got it all wrong
it was going all well until the end where you finished the whole thing with a sales pitch. Seriously, this is the reason why article like these can never be helpful or actually make you better at programming. everyone has their own unique journey. go take that instead of wasting time on another big article claiming things it can't do.
Some comments have been hidden by the post's author - find out more