

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

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.
======
happy4crazy
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-...](http://www.facebook.com/notes/facebook-engineering/the-full-stack-
part-i/461505383919)

~~~
jackbean
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.

~~~
happy4crazy
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!

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

~~~
jackbean
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.

