Tuesday, April 19, 2005

Master in Software Engineering

The difference between a software engineer and a computer programmer as similar to the difference between a civil engineer and a carpenter. -- T. Scott Ankrum on comp.software-eng

Only recently, I found out some Universities offer such programs as Master in Software Engineering. The curriculum is definitely interesting for it addresses many skills that are missing in CS education but are essential for man in the trench. I only wish I had time and money to attend such a program.

Technorati Tags:


Anonymous said...

I'm sure I'll get flamed for this, but I've actually noticed a definite negative correlation between good developers and advanced CS degree-holders.

I think advanced CS degrees are good, esp from the top CS programs, but I also think the folks who get most attracted to those programs skew heavily toward folks who are less interested in the "non-academic" qualities that make a great developer.

Performance issues I've seen much more commonly in advanced CS degree holders:

-tendency to extreme over-abstraction in API design; API's that push the bounds of flexibility, but are virtually unintelligible to anyone new to them, and very hard to debug

-lower interest in testing-related tasks, including writing automated unit tests and especially manual testing

-lack of pragmatism when considering "purity" of design vs ease of use/maintenance

-tendency to drive technical discussions toward "interesting" but irrelevant/academic points, such as spending 30 minutes explaining to a peer why DCL is broken in Java when there is a mission-critical bug waiting to be fixed

-poor self-assessment and estimation skills, on the underestimation side

-poor interviewing styles; tendency to prefer giving problems that give a massive but artificial advantage to CS majors, such as implementing a binary search, but overlook assessment of "soft skills" in candidates

-general disdain for front-end programming in general, and for javascript in particular

Hope that didn't come across as high-and-mighty; I've worked with many great developers who have advanced degrees, but I've found the presence of an advanced degree in a co-worker to be a better indicator of the above behaviors than anything else. My background is with small-mid sized enterprise software firms who really focused on caliber of people, working on Java web-based development teams of 5-20 people. The teams worked great generally, and even the people who had the worst of the behaviors detailed above were still probably slightly above average for the industry in terms of performance.

Anonymous said...

It's so true. When I came out of university with a CS degreee and started working at a small startup, I thought, "Holy crap! All that studying and I feel like I know nothing. What a waste of four years."

Of course, it wasn't a complete waste, it's just that CS (at least the faculty I went to) does not in any way prepare you for real-life projects with real deadlines, where the code actually has to work and be complete for you to 'pass'.