Most of our CS students suck at CS
bluntobject.wordpress.com
bluntobject.wordpress.com
Our society shouldn't look down on trade schools so much. There's too much of an importance placed on the prestige of graduating from a university, making everyone feel pressured to go to a university. These kids are wasting their time (and their parents' money) if they don't care about the material and are never going to use the material anyway. They're just there to get the rubber stamp from the university to impress their family, friends, and employers.
This emphasis on the college degree as a sign of prestige has a toxic side effect: the people who do care about the material get a diluted version of the material to better serve the university's goal of graduating as many people as possible.
I want to see more schools in the style of Digipen. Digipen offers a rigorous degree in "Real Time Interactive Simulation" -- in other words, Game Programming. They really do learn to code, and they really do learn the relevant mathematics for 3D graphics, physics simulation, etc. They probably don't sit through irrelevant courses on the theory of computation or programming language theory. Why aren't there similar programs for programming in general? You should be able to go to a trade school or university and get a solid and comprehensive degree in programming. And society should respect you for it.
Sidenote: I do think that it's possible to do this without devolving into a technology-specific curriculum. You can (and should) still teach at a conceptual level, with individual languages and APIs considered implementation details. I'm not advocating creating a degree in ".NET Programming" or "Ruby on Rails Programming" that'll be obsolete in 2 years.
True, it may not be terribly illuminating for a game programmer to rigorously prove historical theorems in computability or complexity theory. However, understanding the practical importance of big-O notation, the equivalence of any Turing-complete language, (as well as the lambda calculus, partially-recursive functions, etc.) and compiler design will all be of massive benefit when they're looking to actually distinguish themselves from the rest of the assembly-line game coders.
Overall, though, +1 on the idea of a solid two-year "Computer Programming" degree. Leave CS as a truly academic realm, and give those who are just looking for a solid white-collar career path a respectable path there.
The secret is that implementation is not interesting nor rewarding -- whether it's done in Java or C or whatever. It only becomes interesting when you are innovating at the application level.
And so, CS as a whole is a depressing field. Most jobs are unrewarding since you are told what to implement.
It's sort of like being asked to translate a novel from one language to another or to improve its grammar. I would rather write my own novel.
I disagree, and I don't think I could write code for a living otherwise, 9-5 or startup.
I've been through the 2nd one and it's just the same as working 9-5 believe it or not.
But yes, I'm also completely tired of elitism. I think it's brought about by the perception that programmers have to constantly compete to be #1, and by extension, to be really worthwhile at all, and while this mentality helps motivate some people, I only see it leading to feelings of inadequacy and complaining about newbies to make oneself feel competent.
EDIT: Nope, we forgot there is no STORE instruction. Thus, no way whatsoever of writing output.
Maybe we don't need a STORE. The ADD instruction could operate directly on memory operands. Then I guess we can ditch LOAD too.
Before I knew better, I used to laugh at those people who found careers doing boring stuff with corporate applications (databases, etc.). The best part of my job is creating something from scratch - a blank screen of an IDE (when not fixing issues). And if we have excess energy after the workday/or on the weekend, we can always exert our creativity on open-source or personal projects. I love software development for the development aspect. How cool is it to say (or not say) to your friends that you could build a cool web startup (the tech is not that hard, except with exceptions)?
What's the difference between algorithms and problem solving?
Now, I think a lot of people are bad at remembering every algorithm they are taught in a class. Unless you use it a few times, it's not likely you will be able to implement it off the top of your head, but that is what the internet and all those useful CS books are for.
On the other hand, you don't really need to be a hacker to make a good living. I know quite a few really excellent programmers / software engineers / designers who can perform all those roles, and who are emphatically not hackers.
For most programming tasks, like billing software, or web-sites, there is a fairly straight-forward way to design something, and a reasonably straight-forward way to implement it. Reliable, predictable timelines and implementations are the high-end of business software consulting.
You can be pretty good at software engineering, and be fairly well-paid, even working regular hours and not letting it consume your life.
What school do you go to?
If it's good enough for MIT...
This current obsession with programming supremacy and geek dick waving is absolutely pointless.
If Universities started churning out uber hackers that were "20x more efficient" than last years model all these guys would start crying about how they can't get a decent paying job.