112 ms·
I'm a computer scientist, not a web monkey (FOOTNOTE). I'd say these are not the things all CS students should do before graduating. The field has much more to
by raffi 15y ago
I'm a computer scientist, not a web monkey (FOOTNOTE). I'd say these are not the things all CS students should do before graduating. The field has much more to it.
How about:
1) add or modify a significant feature of a working kernel
2) write a toy programming language
3) program in a programming language with concurrent constructs (e.g., erlang)
4) study some theoretical area, develop a practical application based on the theory
I don't know, these are some things a CS student should aspire to. Setting up a WordPress blog and configuring a basic Apache instance? Yeah, good stuff--but I would in no way attach computer scientist to these activities. It's like calling the Best Buy Geek Squad folks electrical engineers.
(FOOTNOTE let me caveat that I do on occasion, work as a web monkey.)
- presidentender 15y agoStuff on the list gets you jobs. Your stuff doesn't.
- artmageddon 15y agoI know people who do stuff on the parent's list won't find the number of job postings as plentiful as the ones who do the items in the link, but let's face it, those are hard to come by skills. If a recent grad finds himself lacking in confidence with his or her abilities, then taking "baby" steps like those outlined in the link are perfectly fine. I know I could stand to try some of those myself. The hope though is that should a person have the drive, that they can eventually be able to do the computer science tasks.
- urwrong 15y agoUmm... I don't think so. If you are thinking of CS as in Computer Science then that is CS and what the list mentions is what someone who wants to work in IT would need to know. Computer science is much more than just web technologies and many many people on HN will testify they got jobs because of knowing what this list mentions I am not denying that there are many others who would say they got jobs by knowing stuff on the list in the link, but hey its just plain wrong to say these things do not get you jobs. Many university professors have this as a minimal requirements for their job, thats one example.
- presidentender 15y agoIndeed, university professors, programming languages researchers, compiler and IDE developers and others do certainly need theoretical knowledge. Could you speculate for me as to the number of job openings for compiler writers as opposed to the number of jobs for web monkeys like me?
- ryansde11 15y agoThe skills learned from writing something like a compiler or operating system can be applied to any type of software development job and are more valuable than anything on the OP's list. College isn't a vocational school where you learn X so you can get a job doing exactly X. The idea is to learn a broad range of CS, Mathematics, and general problem solving skills. Doing so will allow you to write any type of software.
- presidentender 15y agoYou believe that a toy compiler or operating system (which are common in CS curricula) will teach you more about software development than a toy LAMP application?
- GrooveStomp 15y agoI would be wary of confusing the idea of pursuing an education with that of getting a job. There's a correlation between the two, for sure, but they're not the same thing. I think universities themselves have been pushing this correlation, but I don't think it's necessarily the right idea to push. raffi's point is a very good one. If you're a computer scientist, then study computer science. If you're a professional programmer, then practice programming that you'll need for your job. It's like comparing technical institutes with universities.
- notJim 15y agoIsn't the distinction kind of academic? Most people study computer science with the goal of getting a job as a professional programmer.
- arethuza 15y agoI don't think it is academic at all - CS is pretty much irrelevant to most programming jobs in the same way that theoretical physics is irrelevant to a plumber or electrician (both very skilled jobs) - it's not that the subject is inapplicable, it's just not very useful. Note that I did a CS degree and have been lucky to have jobs that built upon that foundation (in order: research, start-ups, industry) - if you want to do fundamentally technically difficult stuff then a CS or engineering degree may help, but that is the exception not the rule.
- pvarangot 15y agoI think you are being a little shortsighted. You may mean it doesn't get you jobs in the specific area that employs most of the people you share online/offline time with. I'de bet most of the guys that programmed the operating system you were running when writing that post got paid for they job. The same goes for people developing compilers or VMs, like, you know, the one Python/PHP runs on... and don't get me started on database servers.
- presidentender 15y agoThat is definitely true. But how many compiler and VM jobs are there? How many web monkey jobs are there? It's like automotive engineers, as opposed to mechanics and drivers. Now, I realize that we're being trained as automotive engineers, but most of us get jobs driving. I think the blog post's advice is much more useful for that.
- demian 15y agoGood analogy, but then developers are more mechanics than drivers. You can use your cool and deep automotive engineering knowledge to "do mechanics", but most of the time is not efficient cost/benefit wise. Most of the time it's more important to get the thing running in order to start the business.
- presidentender 15y agoThat is what I am trying to say.
- dkersten 15y agoWait, are you saying I can't get jobs? I wonder whos been paying my bills all this time!
- rednum 15y agoConcurrent programming (#3) is covered in most CS courses, as well as studying some theoretical areas (#4). Many universities seem to also include courses that include both writing some level stuff (#1) (like OS course) and writing at least a toy compiler for some given language (#2). The point of post is to give students tasks that are not required in their courses, but may give some knowledge/skills valuable in their future work. However, I think that your points are valid too - all of the things you mentioned are something worth spending a longer while when studying, not just being a homework assignment you forget about the day you submit it. (Also, please don't use asterisks (* ) to indicate footnote or put a whitespace after each one. See http://news.ycombinator.com/formatdoc http://news.ycombinator.com/formatdoc)
- illumin8 15y agoPlease allow me to use a car analogy: If you want to get a job as a mechanical engineer and design car engines for a living, you don't necessarily need to know how to be an auto mechanic, however, if you spent a summer rebuilding a classic car engine, you might be surprised to learn a few things along the way that help you to design better engines when you do get a job. I think this analogy works very well for simple web monkey tasks. Sure, building a simple LAMP application will not help your CS chops like writing your own toy programming language will, but you might learn something along the way about Apache, PHP/Python, Linux, or MySQL that will help you in your career. It also gives you a chance to question some of the fundamentals that have been with us for years - why do we use SQL for so many things? Maybe a key/value store would work better for certain apps. Just like a mechanical engineer might be able to design an engine that is easier to work on if he rebuilt an engine in a garage once or twice, a software engineer might be able to write code that is more easily maintainable if he installed WordPress once or twice. Learning the difference between a good and a bad install procedure can at the very least help you write an installer that doesn't suck.
- demian 15y agoThose sound like engineering problems, not science problems.
- tassl 15y agoIn the original link there are useful problems for a web developer, but they are far from being science problems.
- demian 15y agoTrue, I didn't mean that to say they were, but only to clarify that what's considered computer _science_ problems, sound more like engineering ones.
- raffi 15y agoI have a bias towards the systems side of computer science. I didn't mean to neglect my theoretical brethren. Maybe we can both agree that the OP is off the mark.
- demian 15y agoCompletely off the mark. It seems to embraces the popular distortion of the term, when we are suppose to correct it.
- wisty 15y agoSurely these are already in the course. Unless the course is bogged up with useless crap like OOP, COCOMO, XML, SQL, and so on. There is a case for CS courses to be nothing but algorithms and compilers; but that's not the way they work in the real world.
- rubergly 15y agoI go to a small liberal arts college, so our CS department is rather lacking in course breadth (although that is made up in 1-1 interaction), and so I haven't been privileged with being able to take classes on web technologies. Are you saying that all courses on things that aren't web-based are bogged down with useless crap?
- Game_Ender 15y agoHe is actually saying the opposite. He is saying that your CS department is doing you a disservice if it hasn't covered the basics listed by the original poster (OS hacking, theory, making a toy language, etc.). My schooling covered all of that, and they even had a web development elective (separate from low level networking and database classes). I was also told by my professors that when the CS college first started, OS, compiler, networking and database classes were mandatory (now they are just part of a large pool of electives), so this is pretty standard stuff.
- deleted 15y ago[deleted]
- tdignan 15y agoAgreed, this stuff is lame. Most CS students worth a dime could write programs to do these things.