There's lot of talk about computer science basis in hackernews, but in most job descriptions I see only mention of web frameworks and other stuff like javascript, dbs and what not.<p>Though I do see computer science degree as requirement in most of them and fully understand that with Rails and other frameworks its easy to create a web app thanks to numerous open source libraries and tutorials online.<p>The reason I'm asking is I was wondering if I should spend at least the next 3 months learning about the computer science basics or spend that time getting better at Ruby and learning new technologies that I'll directly use.<p>Sure learning both is better, but I'm more interested in web programming than writing a compiler or other intensive tasks. (True the experience and critical thinking would be helpful.)<p>Thanks.
Yes and no. In a vacuum, I think the more you know about CS the better--for instance, if you want to be a "full-stack"[0] programmer, reading a bunch of Rails tutorials won't be enough. Unfortunately, studying CS for three months probably won't help much either.<p>It's kind of a dumb analogy, but I think learning how to do "pedestrian" programming is a bit like learning to translate a Chinese newspaper. There are broadly speaking two main algorithms: (1) read until you get stuck, ask for help, and then repeat until finished; (2) go study Mandarin in college for four years, and <i>then</i> translate the newspaper.<p>If you need to translate the newspaper by tomorrow, then yeah, do (1). If you think you'll need to translate a ton of newspapers and have the luxury to study for a while, the second method might yield better results in the long run.<p>[0] <a href="http://www.facebook.com/notes/facebook-engineering/the-full-stack-part-i/461505383919" rel="nofollow">http://www.facebook.com/notes/facebook-engineering/the-full-...</a>
From experience, I can tell you that you will feel a lot better about what you create and you will feel a lot more confident in your code if you are creating things according to proven design patterns and not just hacking together applications from tutorials.