What next?

####Find a study partner

Studying alone is hard. Put some effort into finding somebody to study with.

####Find a project

I am not entirely sure when project-based study is a more effective form of learning than following a lesson plan, but it might be always. There is a big literature on deductive versus inductive learning. The times in my life when I have learnt most are when the pressure has been on, like the weeks leading up to my university finals or when I blagged a contract programmer job at The Guardian without most of the requisite skills for the job, but also when I have been involved in projects where I cared about the outcome: my first programming job at university or writing a stock control system for my own business.

Cramming for exams aside, I learn most and most easily when I am working on something that matters to me.

So, find a project that matters to you (and to your study partner) and work on it.

####Have clear, achievable goals

Finding a good study partner is more important than the decision of exactly what you study and what project you work on, but once you have found somebody and you have a project in mind, then decide on a series of clear, achievable, short-term goals.

####commit to it

Open-ended commitments are hard to follow. You might want to try a commitment contract.

####Find a form of study that suits you

To support your chosen project, try out different websites for learning new programming skills and memorising syntax and vocabulary; sites like codecademy, Udacity, Khan Academy, GitBook, Coursera, edX, Node school, Codewars, Fight Code, CSS Diner, JSFiddle, Codepen, Memrise.

####Study a little every day

Putting aside a four-hour block once a week is probably harder than 30 minutes every day. Follow John Resig’s advice and write code every day.

####What to study?

Three (or seven) languages:

  1. JavaScript, because it is the language of frontend web development. If you are looking for junior web developer roles, it is the language you will be expected to have. With Node.js, it is also an increasingly serious option for backend development, with a lot of new and interesting projects based around it.

  2. Python, because there are lots of people writing their web applications in Python and there are plenty of jobs out there for Python programmers. You have already made an investment in learning Python, so there is a lot of sense carrying on with it–especially if you want a job as a software developer.

  3. Clojure, because it is a modern Lisp. Read Paul Graham on Lisp. Watch Stuart Halloway, Clifton Cunningham and Clojure creater, Rich Hickey, for more insight. This is programming for grown ups. Clojure has a good shot at being the future of programming–and it may arrive quicker than expected.

  4. ML, Racket and Ruby, because of Dan Grossman’s Coursera course, Programming languages. This course is not currently in session, but I believe you can sign in to view the course archive. Otherwise, put it on your watch list. If you are serious about learning to program, then this is a great course to go for.

  5. Oz, because of Peter Van Roy’s Paradigms of Computer Programming course on edX. This is another great programming concepts course.

####Keep an eye on GitHub

If you want to get a good sense of which software projects are in widespread use, bookmark this GitHub page.

Take a look at Bootstrap, jQuery, Node.js, d3.js, Backbone.js, Underscore.js, Angular.js, Foundation, Jekyll, three.js, Express.js, Meteor, animate.js, normalize.css, Modernizr, Docker, Ghost, less.js, Ember.js, Bower, grunt, coffeescript, jasmine, react, vagrant, jade, sails, gulp, yeoman, LightTable and GitBook.

The growing preponderance of JavaScript-based projects is telling.