links for 2008-01-16

4 comments

  1. Joel has a solid point there about the CS departments not preparing students to actually develop software. They don’t. That would be like saying that an undergrad degree in Physics (a science degree) has prepared you to design the next generation of space vehicles. Sure, you’ve got the raw tools you would need, but you don’t know the applications and you certainly don’t have a bit of experience. Computer Science at many schools is just that… a science degree, not an engineering degree.

    Joel undercut his assertion that it should be a BFA when he presented two examples where they went the route of software engineering as a major. SWE is all about process and how to realize in a product what the customer actually wants. If my understanding is correct, it is very much a marriage of CS to IE. The two universities he listed are at the top of their field, Waterloo (as in the developers of Maple) and Rose Hulman (rated #1 undergrad university year after year because they actually focus on undergrads rather than research).

    But the focus in your typical CS department is very much at the low-level on giving you the fundamental tools of programming, of which Java is not a bad language to learn in. As far a software construction goes though, they never move past the basics. You’re not graded on how solid or maintainable your projects are… you are graded on whether or not it works.

    I can talk about this a lot more, but I’ll stop here. I’ve made the argument for years now that CS should be considered a part of the engineering family. I came from a school where CS was more focused on construction than theory, and we were also the first in the nation to have an ABET accredited SWE program.

    (sorry for the disjointedness of this)

  2. Well, but even engineering degrees don’t prepare the degree-holder for acting like an engineer. Only job experience does that, which is why I’d like to see co-operative education be a requirement for upperclassmen in all engineering fields. [Plus hey, what engineering company doesn’t want 1) cheap labor and 2) a crack at the good talent early?]

    But …

    You’re not graded on how solid or maintainable your projects are… you are graded on whether or not it works.

    Sadly, though, isn’t that applicable to a lot of software? You get a lot of just-good-enough, especially when designing in-house stuff.

  3. My perspective is a little different than most, I suppose, because of the nature of the SW we produce here at my major avionics manufacturer company. Another difference between me and the CS wannabes of today: I had very little hard programming experience when I started college. I knew I liked computers and math and stuff, and that was about it.

    What I learned at LeTU in my CSE degree was a lot of programming (making it work), a little bit of documentation (writing requirements), and a bunch of EE-type-stuff that was cool but that I don’t use much today at all, (though it’s good to know to understand how the HW works at a low-level, especially on the embedded stuff I do). What I didn’t learn: much of anything about SW development process or verification… which today are the two things I’m worried most about. Again, if I were programming web apps with Alex King or Jeff Holland, it’d be a bit of a different paradigm.

    High schoolers that already are already good programmers need to get taught the process stuff in college. For the in-house, just-get-it-to-work apps? they probably know plenty enough to do that with just their HS experience.

  4. “Sadly, though, isn’t that applicable to a lot of software? You get a lot of just-good-enough, especially when designing in-house stuff.”

    The problem is that most customers are not willing to pay a premium for solid software. (yes, I know there are quite a few exceptions to this) They’ll upgrade to a new version of the software if you add features, but not for a bunch of bug fixes.

    Another problem is that many of the developers out there are converted from other disciplines and have no formal training. They’ve picked it up on the job. Getting good software processes in place is tough for any organization, but if only your junior members have any training in it, it won’t do much good.

Comments are closed.