This didn’t come through my new web-crush Mentii, but it is another bit of advice that I thought deserved to go farther than one email. This is a friend that lives near a tech center and wants to learn programming, but has no background or experience other than normal computer usage. I looked at some of the university programs near him and gave my recommendations, but that’s not widely relevant. The important part was:
tl;dr: YOU HAVE TO TEACH YOURSELF PROGRAMMING
The full version was this:
I highly, highly recommend doing a lot of programming on your own.
First, the programming requirements for college aren’t a perfect match with what you need for a job, and there are not enough intense programming courses to get you fully proficient. You wouldn’t expect to get in shape if you only took P.E. classes, would you?
Second, some people just don’t enjoy or “get” programming – it’s a specific way of thinking that some people take to naturally, lots can learn, and some people truly do not enjoy it. Doing your own will make school easier, prepare you better for work, and let you know really quickly if programming is not for you.
There are many, many sub-fields within programming, but for beginners, I would recommend choosing one of these 2 paths:
- Web programming – server-side languages, HTML, Javascript, CSS. This is probably the skillset that currently has the lowest bar for getting a full-time job. There’s an infinite amount of knowledge above those 4 components, but you can learn enough of these in 6 months to contribute to a web development team.
- “Maker” programming – Arduino, Javascript, electronics, robotics. Smart devices are just now hitting the early adopter phase (Pebble watch, Nest thermostat, lost of stuff on Kickstarter) but there are tens of thousands of products that need to be reinvented with network connectivity and inexpensive microprocessors, and probably thousands more products that haven’t been imagined yet (this smart fork is probably my favorite). In 3-5 years, I think an interdisciplinary electronics+code prototyping skillset will be the next big class of technical skills, alongside web, mobile apps, and desktop software.
I know much, much less about Maker programming than web programming, so I’ll withhold my advice there. For teaching yourself web programming, I recommend the following resources:
- Learn Python the Hard Way (free online) – Python is a simple but powerful language. It’s probably the language that looks the most like the process it describes. It’s also used heavily by Google and NASA, as well as being the most prominent language for science and math. This book assumes no previous programming knowledge and only basic computer usage. It’s 52 lessons going from printing text to a screen, all the way to storing data collected from a web page. It’s a very, very solid and broad introduction to programming.
- Codecademy (free online) – this is a series of online lessons and exercises. This is probably narrower than LPTHW but includes interactive elements and has lessons for more technologies (LPTHW only uses Python but covers a wider range of programming topics)
- Try Ruby (free online) – a short (~15 min) online interactive tutorial to learn the Ruby programming language (that’s what I use and lots of web companies use)
- Rails for Zombies (free online) – a series of interactive lessons to learn Rails, a set of tools in the Ruby language that makes it fast to build web sites. These are aimed at beginners and released by the same people that make Try Ruby
- Rails Tutorial (free online) – an intermediate set of lessons about building websites using Ruby and Rails. It assumes more programming familiarity so it’s not great to start with but if you finish RFZ you’re probably ready for it. It covers more advanced coding practices, web site principles, and more. Very, very thorough.
- Code School (paid ~$25 courses online) – a collection of high quality courses with video and interactive lessons covering a variety of web technologies.
I have dabbled or perused most of these but I’ve been programming for 20 years and professionally for almost 10, so I’m not the target audience. I have heard good things about them and they all come from sources I trust and respect.
The most successful programmers I know are the ones that are the most prolific – they write a lot of code, of different types, to solve different problems, because that’s the way you learn. And the more you learn, the better equipped you are to solve the next problem you face. So no matter what you use to learn, you should program a lot. University CS programs have some intensive programming courses, but it’s too small a percentage of the time you spend learning. You have to supplement it yourself.
Leave a Reply
You must be logged in to post a comment.