Here’s a few assumptions that I’m going to make about you.
First, you’re smart and you have lots of potential. You know this, so you read articles to broaden your horizons and increase your knowledge. That’s great! For the record, that’s awesome. Skookum is the perfect place for that. You are well on your way to becoming dangerous enough with your skills to put a dent in the technology space. Keep it up! Secondly, I’m going to assume you have no idea who I am.
My name is John (nice to meet you!) and long story short I’ve gone from being a ballroom dancer, an Army officer, to finally becoming a developer. Considering the financial and time constraints I have had to go through to get here, I think I have learned a thing or two about the principles of becoming a developer that I’d like to share with you. If you can pick any of them and they are of use to you, then this article is a success.
Principle 1) Your learning will never stop… Everyone is junior at something.
I’ve had a few conversations with people that want to become a developer. It’s weird that a lot of them talk about "learning how to be a developer" in such a way that it’s almost a one time event. Wrong. With the progress of technology, it takes a lot of learning just to keep up. Once you learn a skill, say making web apps with Rails, you still have not "arrived" at becoming a developer. That skill may become obsolete in a few years, who knows. This may seem overwhelming, but it’s part of the game. You will always be a work-in-progress. If you want to be a developer, consider yourself a developer now and sign yourself up to become a life long learner. And when it gets overwhelming, remember — everyone is junior at something.
Principle 2) Your ignorance is holding you back.
While I was in the Army, I had VERY little time to learn how to code, yet somehow I became proficient in a very short amount of time. What’s my secret? I hired a life coach and spent big money to make sure my priorities were straight. I had my life coach make sure that I was literally the best that I could be at the time. One of the most valuable things that I learned is that the biggest obstacle you will ever face in life is YOU. It seems common sense now, but it was such a huge breakthrough to realize that the barrier between myself and becoming a better developer was simply ignorance. That’s it. Ignorance.
For some reason, understanding this removed a lot of stress and anxiety for me. The formula was revealed. I realized that if I knew how to program at an expert level, I would already be doing it! Once I grasped this concept, everything came down to this:
YOU + KNOWLEDGE = LESS IGNORANCE
Reduced down to this simple formula, I made it a game to learn something every day. After I did that, I skyrocketed. Make learning your mission. There’s no mystery to it any more. Ignorance will always be one of your biggest blockers. Chip away at it every day.
Principle 3) Your lack of muscle memory is holding you back.
Have you ever played an arcade game but didn’t know all of the controls and combinations? I definitely have. To me, Mortal Kombat was the worst arcade game to play. Why? Because I didn’t know any of the sweet combos. All I ever did was violently and mindlessly mash on buttons as fast as I could which only resulted in wimpy punches and kicks. Meanwhile, the computer character would do all of these exotic moves like breathe fire or bite my head off or something. There is wisdom here, I promise.
It’s frustrating playing video games (especially against more experienced players) when you don’t know the controls. In these instances you’re not just fighting against the other players, you’re fighting against the video game itself because you don’t have any muscle memory of the controls. But, there’s a huge shift once you start getting the hang of things. You start winning, and things become way more fun. What’s the difference? Skill. Being skilled at something makes it more fun.
The same concept can be applied to driving a car with a stick shift. When people start out, it can be a terrible experience at first, but once they learn the skill, all of a sudden driving a stick shift is a blast. Same thing with dancing. Ever found a really good dancer that hates dancing? Me neither.
Why does being skilled make things more fun? My theory is that being skilled takes you to the land of flow. You don’t have to think about whatever you are trying to operate, you just do. When you’re in the zone, your quality of work become so much better. And the satisfaction of what you do goes through the roof.
Be careful with the word skill, though. It’s easy to view skill as this nebulous thing that is extremely difficult to obtain. While it admittedly can be difficult for some activities, it boils down to muscle memory.
SKILL = MUSCLE MEMORY
What does this all mean as a developer?
Learn your tools. In our case that means two things: knowing what to type and knowing how to type.
Knowing what to type means knowing the solutions you have to common problems. You need to write a method, a class; you need to sort a list; you need to make an HTTP request and update a specific item in a database; etc. Strive to get all of these things into muscle memory. I enjoy solving katas on Codewars.com. Another option is Hackerrank.com. The point is to solve simple problems enough times that things become ingrained into your muscle memory.
The second is to get really good at typing text. Vim.org is an awesome choice for an editor because it allows you to create all sorts of key bindings and shortcuts. I had the same dragging feeling about Vim, and that’s because I didn’t have any muscle memory yet. After dedicating two weeks or so going through Vim tutor every night, I got enough muscle memory to actually enjoy the process of writing code. Whatever editor you choose, dedicate some time to learn the combos.
At the end of the day, becoming a developer is not rocket science. It’s not a mysterious skill that is unobtainable. It’s merely a combination of constant, dedicated learning mixed with intelligence. Everything comes down to knowledge and skill. Make a point to learn something and/or increase your muscle memory every day.