To all of you Comp Sci majors out there: How well has the major prepared you for programming modern frameworks and languages? Will the work pay off for someone who wants to learn frameworks like RoR or languages like HTML5, CSS3? I'm asking this because with comp sci, you usually need to take heavy math courses. Would a programmer be better off going into design so he/she has more time to teach themselves?
No, eventually the math will catch up with you and limit your programming ability. You don't need a comp sci degree to do web design, but if you are designing the infrastructure of a web application a computer science degree is nice to have.<p>I graduated in 2009 with a degree in comp sci from a decent college. I am working now programming a web application for non profit companies. When I first started my duties were slim, but nowadays I do a good range of tasks competently, and I credit that to my degree.<p>The other bonus to a computer science degree is the hours it takes to achieve the major. Those hours of practice are vital to becoming a good programmer, be it for the web or otherwise. It teaches you good work ethic and focus and gives you the ability to solve tough problems.<p>Get a comp sci major.
True innovation requires hard math and CS.<p>Take Shazaam for example, who built an empire on audio data indexing/search, sound recognition = numerical analysis + probabilities + statistics + search algorithms + a lot of knowledge about systems architecture, distributed systems, databases etc.<p>Of course you can build products a la 37signals but is a lot more to software than that (and also note that 37 guys are not code monkeys/script kiddies/you-name-it, they actually know lots about CS - sample here: <a href="https://github.com/rails/acts_as_nested_set/blob/master" rel="nofollow">https://github.com/rails/acts_as_nested_set/blob/master</a> /lib/active_record/acts/nested_set.rb )<p>At some point in your career you'll want to: write a parser, search a graph, optimize some storage thingie ...<p>Epilogue:<p><a href="http://steve-yegge.blogspot.com/2007/06/rich-programmer-food.html" rel="nofollow">http://steve-yegge.blogspot.com/2007/06/rich-programmer-food...</a>
Two answers, sorta:<p>You should play to your strengths/interests.<p>Staying up to date in the tech world requires a bit of passion, so choose a path that you'll enjoy over one that makes the most sense. If you have a design eye and prefer building interfaces a CS degree might not help you much. If you like hard core problem solving that requires heavy analysis, CS might be more suitable.<p>Secondly, I don't think that a CS degree will 'pay off' in HTML5 and CSS3 skills as much as it will pay off with language and knowledge around how the nuts and bolts of programming works. My experience as a non CS major is that a CS degree isn't really required for a lot of things in the tech world. There will be some problems that will be terribly difficult and confusing if you don't have the depth of education that a CS degree would provide. I accept that as a weakness and try to work around it and to keep learning.
Take comp sci. You will (should) get exposed to at least a few languages (in my case java, scheme, prolog, lisp, c, c++ to varying degrees, mostly java) but more importantly you will learn about other stuff like various data structures, logic, etc...<p>Once you start to learn a few languages and how to build with them it becomes easier to transition. It still takes time, but you spend less time trying to figure what you want to do and more time trying to figure out how to do it in a specific language.<p>That said, I honestly believe that if you just want to be a programmer you should try to find an alternative to a full 4 year program. A couple of years at a school that focuses on teaching you to be a programmer might be a better fit than a more theory heavy comp sci program.
If all you want to do is program, then you don't need a Computer Science degree; in fact, you don't need a degree at all. A reasonably intelligent person can read all the free tutorials on the web and develop a decent sense for programming.<p>If what you want to do is think critically, write better programs, and possibly even tackle problems that have never before been solved or even addressed, then you need a Computer Science education.
As a double major in Math and CS,i usually concentrate on coursework Monday to Friday,then switch to a free spirit mode over the weekends in order to learn modern frameworks and languages.