Be a slash dev(eloper)
Starter kit for learning to code
I’m not a code ninja (yet), more of a code monkey, but if you are just starting out I might be able to save you some frustrations. At least, that is my goal here. This is for you if you want to be a “slash dev”: to code as a part of your profession. You might be a product, marketing or project manager who wants to be able to build some stuff and understand even more tech stuff.
I work as a project manager. About 6-7 months ago I started learning how to code (JS, SQL, a bit of Python and VBA). I’m now learning AJAX and contemplating learning node.js. Along the way I’ve build stuff that is used daily by other people at my workplace, saving us quite an amount of money and work. There has been many other benefits, but you already know that if you’ve chosen to read this, so I’ll get right to the point(s).
So here are some of my learning experiences, condensed. I would recommend doing 1-3 before 4 and 5, others might disagree. But I think the initial learning phase should be explorative / fun driven, and then in 4 and 5 you can focus and learn a lot in a short amount of time.
1. Pick a language, any language (almost)
Honestly, I think you should learn Javascript or Python. Both can be used for front end and backend development, both are relatively easy to learn and enable you to build something real — and fast. Instant gratification is the way to go on this journey.
There’s a religious war out there on what language is best, but we don’t care. We want to learn basic programming skills and principles and have fun along the way as we build our coding skills and general tech knowledge. (And once you get going it will be easier to learn a new language, so your effort will not be wasted).
2. Learn the basics
Do the track on your chosen language at Codecademy. This will not teach you how to program a lot of cool & very advanced apps, but it will def give you a basic understanding about what code can do, how it is organized on a very basic level — and also give you the vocabulary you will need to start exploring on your own.
3. Save time and money while you learn
Get a subscription (about $25 each / month) for Code School and Safari flow (if you want to learn Python, skip Code School). Now you have access to tons of learning material without buying book after book or spending way too much time trying to find info on the web. Slash devs are busy people: we don’t want to waste time.
For JS, do the exercises at Code School. They are more challenging than Codecademy’s and will get you thinking about your code and how to use it to solve real world problems. For Python, try the online Python Bootcamp.
Off course you could substitute these with any other service providers with the same offerings.
4. Build
Now try to build some stuff (small stuff) on your own. Start very basic, you can always expand both your code and your knowledge along the way. At this point a huge motivator for me was to build something work related. Having real people try out your application (remember: still a small one) gives you valuable feedback, and having to explain what you did and why (and not least debugging the problems that will appear), is where it suddenly begins to sink in: “Hey, I can do this — and it could really work and benefit [insert here]”. You will automatically start thinking about documenting your code, structuring your files and version control: how you save your code (debugging will do all of this to you in no time).
Having a hard time at this point? We all do. Remember that you “just” want to be a slash dev. You don’t have to be a full stack professional programmer and know everything about *. Instead, focus on solving problems as they arise, improving and learning along the way, tackle new challenges and revisit your code for previous attempts. If you still enjoy coding, even though it’s suddenly become much tougher, here is some really time saving advice:
5. Get training with some degree of personalization
Get a mentor and / or join a learning environment where you interact with other people who are also learning code (this could be a Hacker Space, a course provider like Thinkful or it could be colleagues or friends who are also learning to code). There are two kinds of mentoring worth differentiating — and trying:
Informal / problem oriented mentoring
Having read about basic SQL and trying to use it, I got help with my code from the CTO and the CFO at my company (we’re small, and they both wanted to help, partly because it would save them time if more people at our workplace knew SQL. And it did). Sometimes I would sit down for 15 minutes with our CTO and have him point out flaws in my code, other times I would shoot a quick email asking if they had some code of their own for a problem of the form x that I could tweak/adapt/have a sneak peak at. But you could also ask code knowing friends or co-workers — most people like sharing their knowledge. Just remember: only ask when you’re really stuck, otherwise you will not learn by doing / trying for yourself.
Formal / learning oriented mentoring
I recently signed up for the 3 month front end web development course at Thinkful (there‘s also a Python course). Two main points:
- Having someone structure a curriculum for you is a huge time saver (and also stops you from fretting about if you are learning the right things in the right order etc.). Remember, you want to cover the basics as quickly and painless as possible so you can move on to more interesting stuff.
- They assign you a mentor that you talk to on a weekly basis. Your mentor can quickly help you over hurdles but is also an excellent resource for answering general questions about e.g. code documentation, design patterns etc. Best of all: You won’t be a pest, because it is their job to help you. Also, it is a huge motivator to have to actually present something to someone, and not just having your code in a file on your computer. And also, it is inspiring to be taught 1:1 by people who really know how to code.
6. Think about what you learned and how to maintain it
At this point you should reap a lot benefits from your coding adventures: The ability to understand the principles behind what the tech people say or write (even if they are programming in another language) will make it much easier for you to ask intelligent questions and get relevant answers. It will also help you read documentation, pinpoint issues with specifications and allow you in general to “translate” and mediate between the commerce and it development side of your organization. You will have a “feel” for the technical side of your business that you simply didn’t have before.
At this point it will be easier to maintain and develop that knowledge through projects at work (and hobby coding. Have a child? They will love even the most basic game if they know you build it) or further learning.
So… I think you made it. Where you want to go from here really depends on what you specifically want to achieve. If you’re looking for more advanced learning, have a look at Udacity’s offerings (mostly Python) where I’ll be heading myself at some point.
If you have comments, ideas — please share.
Also, visit me on Twitter.
Email me when Peter Byriel publishes or recommends stories