Hacker School is a three-month, full-time school in New York for becoming a better programmer. It's free, and there's no curricula, so it's up to me to decide what to work on.<p>I'm a self-taught web programmer who's skill-set is incredibly narrow: node.js, browser js, extremely basic ruby, python & PHP, comfortable with git, linux, mongodb, redis.<p>The question:<p>What would you study if:<p>a. You wanted to become more employable. By this I mean having a skill-set applicable to the greatest number of opportunities in the market.<p>b. You wanted to become the most 'powerful'? By this I mean capable of doing really novel/magical things even it means working with languages & frameworks that most people, and employers don't.
Congratulations on heading to HackerSchool!<p>A and B seem mutually exclusive to me these days. You seem to have an interesting (and not necessarily narrow) skillset, so don't sweat "broadness" much. The greatest number of opportunities are probably in enterprise Java or C# and I would feel bad recommending you use HackerSchool for that <i>unless that is personally compelling to you.</i><p>For B, I scanned your webpage. You have a short posting on predictions. I have this theory that I intend to more fully explore that building up a real strong background in stats and applied modeling would be a superpower. The applied part might be great fun at HackerSchool. Maybe tackle something with Clojure and Incanter. Or really push your Python chops.<p>If you feel like you really want or need to build your foundations, maybe you could take a book like Concept, Techniques, and Models of Computer Programming and grind through. I wish my formal CS education had spent at least a year doing a kind of "paradigms of programming" path, studying functional and logic programming <i>deeply.</i> Ask around about this, I often think that doing this with one or two others would be better than alone.<p>I feel like I'm writing this comment to myself. Hopefully it's at least somewhat helpful to you.
A is something HackerSchool can answer, given that they are paid by startups to recruit (<a href="https://www.hackerschool.com/faq" rel="nofollow">https://www.hackerschool.com/faq</a>). In addition, the participants range greatly in experience, so you can a lot more datapoints there.<p>B. There are different types of 'becoming powerful'. Given that you are self-taught, you may want to identify and fill some holes in your knowledge. Maybe you could go through SICP, Algorithms, learn about functional programming in scala, etc. I would personally try to find something really challenging to learn on your own that I've really wanted to learn for a long time. On your website, you mention doing predictions with twitter. Maybe you could go deeper into AI / machine learning. I'm currently going through Algorithms, and it's been a really frustrating / rewarding / mind bending time, and it's definitely shown in my code.<p>Powerful in the sense of creating new and innovating things seems to come more from ideology / beliefs than from using a specific programming language or framework. You might want to read more into Bret Victor and Richard Reynman if you haven't already.<p>Bret Victor's Inventing on Principle comes to mind:
<a href="http://vimeo.com/36579366" rel="nofollow">http://vimeo.com/36579366</a><p>Richard Feynman's approach to research problems is also really enlightening. Have 10-20 hard problems floating in your head, and as you go about your day, reading, looking, exploring, match everything against those problems to see if you can make any progress on them.