3 Steps to Achieving Your “Learn to Code” Goal This Year
You might be among the millions of people who made New Years’ resolutions a few weeks ago.
If one of them was to “learn to code”, and you’re looking at the calendar today wondering how is it February already and you feel like you haven’t accomplished anything, I can relate, and maybe even help — I’ve been there.
A lot of people, from the President to Silicon Valley execs to prominent educators, have said something recently to the effect that everyone must learn to code to participate in the economy of the future. This is very likely true, but what can adults who won’t benefit from this push towards computer science in school do?
If you’re one of those “older” learners, I commend you for taking this on. It’s a great thing to aspire to. However, there’s a significant problem with “learning to code” that you may have already run into: it’s a very vague. You could spend months going through the many free online tutorials out there and not really know what you’re doing or be able to make anything. I’ve been there too.
Ask any developer, and they will tell you there will never be a moment where you will push back from your desk and say “well, mission accomplished, I’ve learned to code!” and check it off your list. It’s an ongoing, arguably never ending pursuit as coding languages come, go and evolve. It’s very unclear where to start, what to learn, and how to know you’ve really, truly learned it.
So, if you can’t decisively “learn to code”, and you’ve already dabbled in some online tutorials, how can you set attainable goals to be a better programmer over the next 11 or so months of 2016?
Here are three mini resolutions that I’m confident will get you there.
#1 — Resolve to build something you feel passionate about, starting now
This is the #1 piece of advice I got from experienced developers when I asked how to get started. Seriously, anything. A portfolio/resume site, a script that translates English phrases into pig latin, tic-tac-toe you can play in a browser, whatever you want. If you’re making something you care about you’re more likely to stick with it and learn a lot from the roadblocks. The worst way to spend time is the mindless and often unproductive copying of code to exactly recreate someone else’s project.
Start with as simple a concept as you can, set a deadline, block the time off in your calendar each week and do it. Google furiously. Swipe snippets of other people’scode. Experiment and if you get so frustrated you want to throw your computer out the window, I promise you are making progress.
#2 — Resolve to really get to know one programming language
When I decided I wanted to “learn to code”, I asked developers I knew what language I should learn, and they all looked confused and asked what I wanted to build (see above). Although the temptation to know as many as possible is strong, especially if you want to put them on your resume, resist. If you know one really well, it’s a lot easier and faster to learn others later. An analogy: if you’re proficient in French, learning other Romance languages like Spanish or Italian is a lot easier because they have very similar grammatical rules, sentence structures, and some of the words have the same roots.
A good 11 month goal, at a high level, would be to know how the basic data structures (like dictionaries, lists/arrays, etc), functions, and loops work and where you would want to use them. Working these into your project is a great way to really cement your understanding. Sites like HackerRank, Project Euler and Interview Cake have some sample problems you can try to solve with code, and are very useful for figuring out where you have gaps in your knowledge.
#3 — Resolve to learn from people who are better at this than you are
I recognize how intimidating and sometimes ego-busting this can be, but it’s one of the best ways to learn. The internet, books, and trial and error are all great tools but they can also be rabbit holes.
If you’re looking for a free or very low cost option, look for Meetups in your area with a “study hall” component where you can ask questions or get help with your project. My best results have come from bringing something I’m really stuck on and getting someone more experienced to help me figure out the problem. Ten minutes watching a good developer debug something and explaining their process is better than an hour Googling for solutions.
Courses, online or in-person where you can interact with instructors may also be useful here, especially if you know where your knowledge gaps are or you have trouble meeting your learning goals on your own. I highly recommend a course that includes a solo or small group project of your choosing at the end where you need to figure a lot of things out on your own or with peers, but can get expert help if you need it.
To quantify this goal, set targets for attending classes or meetups and keep a record of the skills you develop as a result. Despite the wealth of information online, personal interaction around solving a problem is incredibly helpful, and will make you a better programmer.
That’s it. Sound doable? Let me know how this program works for you. I’d love feedback.
But for now, get coding!