Hello Hacker News,<p>About five years ago I dropped out of art school for psychological reasons and I've been living with my parents almost ever since. Fortunately I have parents who have been kind and supporting of me during this time but as you can probably imagine I feel like a total leech. In an attempt to do <i>something</i> with my life I started taking classes at the local community college about two years ago but was mostly taking them for my parents' sake rather than my own.<p>Even though my college 'career' has always been in fine arts I've personally been programming as a hobby on and off for over a decade. Until recently this wasn't something I really thought I had any 'real' ability at, and left it at that. This changed during a recent stay at nearby community where you pretty much just worked to earn your keep. While there I ended up building a system to log and graph their off the grid power system to help monitor usage patterns. Building that project forced me to get a much deeper understanding of Perl (the language I ended up using) than I previously had. After that was finished I helped a few other people build a wireless network using XBees to monitor some other of their utilities from around the property. Previously, I didn't think I was capable of programming something that would make people's lives easier; having done so was a real revelation.<p>A few months have passed since then and I'm currently living with my parents. After seeing that I can build a usable and helpful program I'm rethinking things and am starting to take this hobby of mine more seriously than I did before. What I'm wondering now is what sort of things I should do to grow more as a programmer. I feel like I have a decent understanding of how to program but have never taken any formal classes. I'm thinking about taking some CS classes at the local community college in the fall (seems they have at least a decent department if the fact they teach C++ and Assembly as their intro and advanced languages) but wonder if this would be worth my time at this point.<p>Any advice/comments would be appreciated.<p>edit: As for knowledge I have... I have a pretty good grasp on C and Perl, have spent a decent amount of time with ARM assembly and some AVR, and recently played with Scheme (I've been reading The Little Schemer). I've played with a lot of different languages but these are the ones I feel most comfortable with. I'm also reading through the Android documentation and learning a bit more about OOP in the process (as well as touching Java for the first time).
Rather than your community college, use these:
MIT OpenCourseWare: <a href="http://ocw.mit.edu/index.htm" rel="nofollow">http://ocw.mit.edu/index.htm</a>
iTunes U: <a href="http://www.apple.com/education/itunes-u/" rel="nofollow">http://www.apple.com/education/itunes-u/</a><p>Formal education isn't necessary, but it's real world helpful to get some education on data structures and algorithms IMO.<p>Publish everything you can on Github and ask/answer everything you can on StackOverflow. Then use both of those as resume references, and just get a job. :)
Thanks for the advice everyone. I forgot to mention it above but most of the recent projects I've worked on have been JS/Canvas stuff (how I managed to forget about the only somewhat formulated work I've done outside of the projects mentioned in my post I attribute to late night posting). I think I'll work on some more general HTML5/CSS3/JS stuff in the future and try getting through some OpenCourseWare material. Also, being able to link to a GitHub repo wasn't something I'd really thought much about but that's a really good point; I'm moving my work there now.
Get some books, build some stuff, use that stuff as a reference to get a job, learn from the people there.<p>In reality, you are probably more prepared than you think.