Coding is hard
This is a mantra lots of experienced developers will say and this is a very honest thing to say but it's also a bit misleading. Coding can be hard, but coding is just the act of typing on a keyboard — that part is easy! The hard part is solving problems. This should say: solving problems is hard.
So I'd like to start this article by saying: set your expectations.
Don't assume coding is going to be easy and you can learn a little bit and get a high-paying-work-from-home-with-benefits job right away. I see a lot of developers learning to code, but they get stuck on things (like understanding functions or object oriented programming). And that's OK. This is a problem worth solving, and once you understand the solution (ie. how OOP works) you'll be much better off. But it's that initial learning curve that can be hard.
Coding takes time
Coding is a skill. Think of it like a trade. If you wanted to be an electrician.. well.. it's not going to happen over night. There's a lot to learn, and lots of different scenarios to learn. You'll make lots of mistakes (and that's OK). If you stick with it for long enough, it becomes second nature and it's no longer a difficult trade. Coding is the same way — practice, practice, practice.
Here's what nobody ever tells you: practice takes time.
Unlike a trade, like electrical work, you don't have a goal line. After 4 or 5 years in a general skilled trade, you become a journeyman ticket and, well, that's it. Coding doesn't have that, and that's what makes coding so hard. After 4 or 5 years you might not be a super awesome/amazing/prodigy of a programmer — once again, that's OK. But coding has something skilled trades don't have: unlimited access to real world problems, and the ability to solve them quickly.
How to learn faster
Becoming a good programmer (coder) shouldn't take 4 or 5 years. Imagine having to study for 4 years before you could get a job.. that's INSANE! You should be able to learn and find work at the same time.
I'm going to talk about ways to learn to code faster. But first...
The slow way
Coding the slow way goes like this:
- Learn the bare minimum to get a job (maybe go to school, or learn online),
- Learn the requirements of the job you just got,
- Stop learning because you're good at that one role.
Unfortunately I've seen this happen far too often. I see "senior" developers who were, at one point, very good coders.. but they stopped learning, and the world moved on without them. Now, they aren't considered "senior developers" because the world got more advanced and they fell behind. The less here: never stop learning!
The fast ways
I'll give you the bullet points (for those who like to skim blog posts). To learn fast, you must iterate over real world problems.
- Find real world problems.
There are probably millions of real world problems. Just ask anybody you walk by on the street what kind of problems they have with technology.
- Solve real world problems.
Making a calculator or a todo-list app is fun and great for learning, but it's unlikely you'll become a professional digital calculator developer. Every problem is slightly different, too.
- Expose yourself to other problems.
- Meet new people.
If you can solve 3 real world problems per day... imagine what 20 people like you could do; 60 real world problems per day. Learn from other people. Let them share their knowledge and guidance with you.
- Find mentors.
You don't know what you don't know. Too many developers get stuck here. They think they've mastered it all, but lo and behold they're just unaware of what they don't know. A mentor can help push you in the right direction and provide personalized guidance. But don't just ask people to be your mentor. You're more likely to find a mentor by making friends with developers who can code circles around you, and talking to them about ways to solve problems.
- Find a support group.
So many developers think they can do it on their own. And you can.. at least for a little while. But eventually you'll hit a wall and you need opinions and ideas from other people. In the world of coding, there's always more than one way to solve a problem. There are good way, better ways, and not-so-good ways. With a support group you can ask for guidance from several people at once. I have 3 other close friends who are all really good at different things. We talk on Slack almost every day and share resources, ideas and talk about nerdy things. I'm constantly exposed to new real world problems by 3 other people who I consider to be mentors of mine.
- Push yourself.
Get good at something. Then go a step further and learn the inner workings of things. Then go back and relearn the basics. For example: if I asked you right now, "How does a computer store data inside of a variable?", could you answer that with confidence? Variables are a simple subject, but the inner workings are not.
- Teach it.
Once you're confident you know something, write a blog post about it (you can even contact me about submitting a blog post here!). Teaching is the final (and best) way to solidify knowledge in your brain.
To learn fast, you must iterate over real world problems.