Here’s a process that you can follow. The exact journey will be different for everyone, but there are steps you can take to get you on the right path.
1. Realize that you can do this
Anyone can teach themselves to be a developer. There’s this idea that being self-taught is something only a certain type of person can do. They’re right in a sense. You need to be self-driven and motivated by something other than immediate payment. But anyone can become this type of person.
There’s this idea present in our society that some people are born with certain traits and others aren’t. It’s detrimental to growth, and one of the reasons why so many people feel unfulfilled in life.
If you always felt that you either “had it” or you didn’t, it would be very easy to get discouraged.
I want to put that myth to bed right now. Anyone can learn to be self-motivated and teach themselves programming. Or start a successful business. Or achieve a long-term goal.
It’s not about catching a big break, or being born with the right traits. It’s about perseverance.
If you can put your head down, push through the hard times, and commit, you can do anything you want to.
That last part is super important, but I want to provide a warning before moving on.
People are often too quick to embrace their own successes and the successes of others. It’s known as survivorship bias.
There is an element of luck in everything. Sometimes things just work out. For example, I contacted a web development agency and was lucky enough that they happened to be looking for someone at that moment, and I happened to fit what they were looking for.
But what is luck?
Sure, I was lucky to get that job, but I never would have been lucky if I hadn’t made the decision to teach myself development. And then made the decision to apply to that job.
Luck does play a factor, but the myth is that it is all up to luck. You can increase your odds of getting lucky, you just have to be willing to put yourself out there.
But luck will never find you if you don’t commit to being great at something.
2. Commit to being incredible at your craft
One of my biggest weaknesses is that I get bored and distracted. I want to jump into the next project. This tendency will kill your success.
It feels like freedom. Being able to bounce between whatever project happens to suit your mood that day, but...
It’s a trap! If you take away nothing else from this article, let it be this:
The number one key to succeeding in becoming a professional developer is to commit. Commit and never stop until you make it happen.
This applies to everything.
People stress out about which framework to use. But what matters is picking one and sticking with it. You can transfer and learn new languages and frameworks later.
What matters is the problem solving skills you will gain when developing. The ability to think like a developer.
I taught myself programming using Laravel, but the company that hired me used CakePHP. It didn’t matter. They knew I could pick up the technical skills required to switch frameworks.
Pick a direction and see it through, no matter what. You have to remove the possibility of getting distracted by something else.
Few feelings can compare to the relentless pursuit of mastery of a craft.
It isn’t easy. Once you learn to ignore distractions, you will notice an increase in enjoyment of your work.
Mike Rowe is fond of saying that people shouldn’t start with finding their passion.
People are so unhappy because they look for the perfect career. They look for the one that they are passionate about.
But passion comes from an unstoppable desire to be incredible at your craft. Once you adopt that mindset, your abilities as a developer will take on a new life.
3. Start building things immediately
Aspiring developers can get stuck in the trap of reading too much without taking action.
Tutorials and books are great for learning the basics. The problem is that they instill a false sense of confidence in the developer.
Have you ever finished a programming book and gone to build something on your own only to realize you had no idea how to go about doing it? Then you know what I’m talking about.
The solution to this is simple, but not easy.
Make something. Make an app that solves a problem you have in your own life, or that addresses an issue for someone close to you.
Make something for fun.
Make something and put it out there. Make it open source and put in on GitHub. You aren’t doing it for anyone else, it’s for you, so don’t worry about other people’s opinion of it.
Your code will be ugly at first. I look back at some of the code I wrote even a few months ago and want to vomit. But you can’t learn development without building stuff. Books are fantastic, and I am obsessed with reading as many as possible. Then you must apply that knowledge.
You’re going to run into issues and you’re going to struggle. That’s good. Those are the times we learn the most.
Start off by building things that solve problems, I’ll talk more about that in step 6 below.
4. Set up an online presence
As soon as you start building things, you’ll want to set up an online presence. Your GitHub account will be a great start.
This is where you’ll be able to house the projects you are working on and share them with the world.
But you want to go further than this. I recommend setting up your own portfolio site.
This site will do a few things:
It will serve as a public place to tell potential employers about yourself
It will be another place where you can showcase your work
It will serve as your platform
That last one is huge. Once you start building things, you should immediately start writing about them. Start a simple blog where you share what you are working on and teach everything you know.
This is one of the best ways to give potential employers a taste of who you are and what you can do. It’s a way to get your name out there and start building a platform for yourself.
This can lead to job opportunities and the possibility to make more income on the side by writing books or freelancing.
Your site should serve a very specific purpose.
Most people create an online resume, but you should do more. What is your specific goal? Your website should be designed and created around that goal.
If you want to get a job working on a certain kind of project or with a certain framework, put that in your site.
I recommend having 4 core areas for your site:
1. Home page
Your home page is the entry point to your site. It should provide a very brief overview about who you are and what you do. And should direct people to go where is most relevant for them.
For example, you could have two main buttons. One leading people to your writing section to learn more about web development, and one leading to a hire me page if someone is interested in hiring you.
This is where your blog and your tutorials will live. Write as much as you can here, and don’t be afraid to share it.
A simple about section that goes into more detail about who you are and what you do. Don’t make this a life story. Again, target this section to be relevant towards what you want to do.
Rather than talk about your personal life, talk about what led you to web development, your journey so far, and where you want to go. Mention some of your favorite projects and link to them.
4. Hire Me
An essential part of your site, this is where people will go if they are interested in hiring you as a developer.
Make sure to find the right balance between selling yourself and being honest. There may be some overlap between this page and your about page, but this page will be more specific about your skills and what you bring to the table.
This page should also have a contact form so people can get in touch.
In addition to your own site, start offering to write for other major publications. Then you can provide a link back to your site in the bio section.
Reply in comment section, if you have any idea about this.