4 ms·
Ask HN: One thing you wish they teach in your undergraduate CS course?
After some 10 yrs in IT, I still dun see much value in my CS degree, why dun they just teach me these instead;
Step 1 - Find a(another) problem.
Step 2 - Build an awesome product to solve the problem in Step 1.
Step 3- Tag a price to your product.
Now go back to step 1.
It make so much more sense.
- bd_at_rivenhill 16y agoBeen out of school for a while, but based on the new hires coming through the door I wish they would spend some time on software process: how to use source code control (including branching and merging), how to approach designs in the context of a system with cooperating programs so that compatibility is maintained without big-bang releases of multiple programs, proper use of bug/feature request tracking systems, why it is important to have consistent coding styles, how to read and modify code that was written by others (and how to write your code to make it easy to modify), how to work with other programmers on a team. These are nuts and bolts issues of the practice of writing software, but everybody seems doomed to come out of school and make the same mistakes unless they start in an environment with a good remedial training program to fix these deficiencies.
- iworkforthem 16y ago@bd_at_rivenhill agree with you totally on the whole source control issue. They should teach graduate what is merging, branching, tagging, etc. even better if they know how to do continuous integration.
- zachallaun 16y agoI'm not arguing in favor of CS degrees -- surely, there is more pragmatic material to be covered -- but what you've stated is overly simplified. What I would argue is that CS programs give you the background knowledge required to pick up whatever is needed for a certain task. For many, that task is not entrepreneurship. Would a Software Entrepreneurship degree be cool? Of course, but it doesn't negate the worth of another degree.
- bartonfink 16y agoI wish my degree had more emphasis on working with an existing codebase instead of a constant stream of greenfield applications. I wrote plenty of programs in the n-thousand lines of code range, but never had to worry about interoperability or maintenance at all. In my life after formal education, those have been FAR more problematic than the things I learned.
- zipstudio 16y agoI think a two (or more) semester course where you write some libraries/functionality during the first semester from a blank page, and then use/refactor/enhance that code in the second semester would be very valuable. "Eat your own dog food" is something everyone should learn in school. Perhaps the third semester could be based on getting some other students code to enhance as well as being a resource for someone using your code from the previous classes.
- bdon 16y agoTesting! Unlike other necessary skills like using source control and writing documentation, testing can't really be mastered on the fly. I think the myopic scope of class projects doesn't let students grasp the long-term benefits of having well written unit and integration tests. Here's a shot at such a course that covers testing through RSpec and Cucumber: http://tinyurl.com/ucb-cs169 http://tinyurl.com/ucb-cs169
- iworkforthem 16y ago@bdon yes! effective testing and writing good technical documentation are often missed out too. There are so much to testing; automated, security, regression, etc. All of it caters to different phase/part of a proj/app, I guess partly most people think that testing is not necessary. Name one good technical documentation you see recently? Not easy really, there's a few threads on HN on it. I guess that's why most used a wiki for their technical doc, so that anyone can just come in and help correct any error documentation.
- dangrossman 16y agoWhere I got my undergraduate degree, software testing is an elective course for CS and SE majors -- http://www.cs.drexel.edu/~spiros/teaching/SE320/index.html http://www.cs.drexel.edu/~spiros/teaching/SE320/index.html
- kakaylor 16y agoThis is why good internships are so important while your an undergraduate in CS (or many other majors for that matter). Depending on the university you go to, CS != Software Engineering. You don't encounter, and may not be even aware, of concepts like code reviews, build systems, or version control. By participating in an internship you are forced to address these gaps in your knowledge. That being said, I don't think I would take away a single CS course I took as an undergrad and replace it with a course on software engineering practices. There is just too much strictly CS knowledge that is necessary for an undergraduate to learn.
- dangrossman 16y agoMost colleges do have an entrepreneurship course in their business college, and many colleges allow you to take electives outside your degree program. I did, and entrepreneurship was one of them.