Is having a good grasp of computer science basics required for web programming?

2 points by jackbean ↗ HN
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.

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.

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.

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.)

Thanks.

5 comments

[ 4.3 ms ] story [ 17.0 ms ] thread
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.
That was more of a general example rather than personal practice. I completely agree when you say using proven design patterns makes you more confident, just the other day I was implementing something I read from Design Patterns for Ruby. What I'm more curious about is whether I should stay the course to try to become an intermediate Ruby programmer or try to learn some basic computer science stuff, since everything I know about programming comes from Ruby related books. Not just half pay online tutorials, but "real" ones like "Meta-programming for Ruby" and "Ruby Way." At least from what I can tell, they are one of the most advanced Ruby books around.
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.

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 then translate the newspaper.

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.

[0] http://www.facebook.com/notes/facebook-engineering/the-full-...

That's actually a really good analogy and a great link. But I don't think "full stalk developer" is what really suits me. Maybe my definition of web developer is more limited than its original meaning, I was thinking more in terms of designing a decent sized, complex web app, but not going as far as building hulu or facebook singlehandedly without an actual scalability engineer.
Yeah, then I think you're better off relentlessly building things. You'll have plenty of opportunities to learn CS incrementally as you go.

Personally, I know that I have a pretty extreme bias towards wanting to "study forever", which is really irritating. I have to keep reminding myself that building things takes practice too!