Why most people fail to become a dev
Published: 2024-01-08 02:37:11

Learning how to code or become a software engineer is a journey that's misunderstood and prevents many people from actually achieving their goals. 

You may have experienced things such as Tutorial Hell yourself, but these experiences are common and easily found online.

After giving advice to approximately 50 people over the past 2 years, I've noticed the constraints on their aspirations are highly unlikely to be unique so by addressing those here I should be able to have some positive impact on people embarking on this journey.

## Programming Courses
Start these courses by all means, but do not finish these courses.

I'm strictly referring to online courses when I say this, but your typical 'Zero To Web Mastery' is mainly 30% useful, 70% waste of time.

You'll typically get to a point in the course where you're building something with the language / framework the course is aimed at such as a 'Twitter Clone'.

The instructor is telling you everything you need to do with step by step instructions, sounds good right? Not really you haven't utilised any problem solving or done any logical / algorithmically thinking

Learn the basic syntax, learn how to create a project if a framework is involved and just start building something you find interesting.

For each step find content to help you achieve it. Let's say you need a login page, google how to do that or look on YouTube or look at the framework documentation. Important Note: Don't just copy and paste code snippets with no idea of what you just added or how it works. You don't need to know entire inner workings but following something with explanations is better.

This will get you used to gathering relevant information and how to use a search engine to get the results you actually need.

You'll definitely have errors or problems and it's just another chance to learn problem solving which is key to being a developer.

## Learning absolutely everything
This is such a common mistake and I've had 2 people with this exact problem speak to me this week. One instance is that an individual was asking me for advice and gave me there plan, the plan involved spending a week or two learning HTML and then moving onto CSS.

It's a similar scenario to courses where active recall is being prioritised over problem solving, logical thinking and finding the information you need, not all of it.

I believe it's caused by approaching development like a subject in school such as History, where you just read material over and over again and use notes and flash cards. Being a developer is something you do and this approach is the misconception that developers just write all the time and they know exactly what to write.

You need to learn to come up with the logic required to achieve a desired outcome from the input, and also the trade offs and pros and cons of using different algorithms or approaches as there's usually thousands of ways to achieve the same thing. If you can write out how to get this outcome in pseudo code from an input then you are actually able to do the job a developer does already, which shows that remembering all the syntax isn't important what so ever.

Developers are learning all the time throughout their careers and day by day uncover more things they don't know, so trying to learn everything will never work.

## BUILD SOMETHING
I'll keep this short but you need to actually build something off of your own back that is unique and isn't something you just followed a course on like I mentioned earlier. Building something is what will actually give you context on all of the tools available to you and when to use them. You will also have more leverage on your input because you'll retain more of the stuff you do.

You also won't get a job unless you've actually built something otherwise there is no proof you can do the job.

_Note: I am aware you might be able to get a junior entry level job rarely, without ever actually building anything but it's extremely unlikely that where you end up will be a good place to work._

**You need a mentor**
Lastly, when you're doing all of this by yourself the only thing you will have to evaluate your work is if the thing you've made works. Most of the content you'll stumble upon on your journey won't be teaching you about best practices or design patterns or security considerations.

Having a mentor provides you with learning the parts of programming that are more complicated and less mentioned when learning.

SOLID Principles, Patterns and understanding how to avoid creating vulnerabilities is what will push you from a junior to a senior developer in your career.

There are teams that you could be a part of that write messy code with no readability, no change management plans in place and no senior reviewing your code to help you improve. This will just heavily affect your growth and if it's worth doing it's worth doing right.

**Extra mentions**
What language you pick likely doesn't matter, don't pick something that seems easy cause you're new or has been said to be beginner friendly. Try different languages and just use what you like, they all have pro's and con's but sometimes you just click with one language as opposed to others and its fine.

All of the skills you'll learn are language agnostic anyway.

Do use AI, but not to do everything for you. Mainly use it to explain code and when you are more comfortable ask it to help you improve code. It can give you code improvements that are actually worse or break your program, so I suggest you have some understanding first.

Learn how to setup an IDE like VSCode / Vim / Neovim / JetBrains. Yes people back then coded on notepad, but it's not back then and notepad isn't superior and you'll just make the skill curve steeper.

Try to learn other parts of IT / Software that are commonly linked together when you are looking for a next step. Some examples are: Databases, HTTP/APIs, SMTP, Queues.

Get off of windows for a month. Linux is superior for most developers based on what they actually work on, I use windows because I occasionally play games and some aren't supported yet. Linux will let you learn more about what's actually happening underneath the layer windows gives you and you'll get comfortable with the terminal. If you do web development it'll probably be Linux servers you deploy your applications to anyway.

_IIS is quite popular and is for Windows Web Servers, don't use windows for web server, it's bad because I said so.

Node with express is also multi platform but again it's bad because I said so._

## Follow me
[Github](https://github.com/fludem)
[LinkedIn](https://www.linkedin.com/in/dylan-marriott-4a2433135/)
[Twitter](https://twitter.com/tenthomay)