Fog Creek Software
Discussion Board




Quality of Professors / Graduate Students

Without egotism, let me put forth that I am an above average software engineer. Or at least I am good enough to be paid six figures after round after round of layoffs in *this* economy.  I claim no more than being above average.

Anyway, 49% of software engineers are in the same category as I - above average.  Have any of you gone back to grad school?  Have any of you been subjected to professors (and/or graduate students) with an obvious lack of practical technical skills or ability?

I find it utterly fascinating that people who have never actually produced an enterprise software solution are in charge of instructing and rating our future developers!

Quite literally, these deficients often distribute code with their homegrown linked lists, trees & hash tables.  (Mind you, they are not distributing code with sophisticated, cutting-edge algorithms - just run-of-the-mill, amateurish data structures that are mostly less efficient than STL templates.)

Have you ever been graded by an idiot who just can't grasp SQL, but who somehow passed a graduate level Database course, and is now "knowledgeable" enough to grade a professional data modeler?

I believe this is a serious problem.  Maybe this problem has been around for decades!  (Are there any mechanical, electrical, chemical. etc. engineers who have experienced the same thing?) 

Any thoughts anyone?

Anon for Obvious Reasons
Wednesday, October 30, 2002

Your first mistake is thinking that graduate school is the appropriate place for developing "practical technical skills."  It's not.  I hope you weren't banking on that.

Your second mistake, I'm assuming, is assuming that one graduate program is a lot like the next.  Graduate programs are *vastly* different between schools in what is taught, how it is taught, who teaches it, and how well it is taught.  I hope you researched your decision carefully.

Finally, I will sympathize with the statement "those that can't do, teach."  It's a half-truth in the sense that there are some who choose academics for high-road reasons, and they tend to be quite good at either teaching or research, and in rare cases, both.  But there are also those who ended up in academics because they had traits which more or less blocked them from, shall we say, more lucrative pursuits.  These people tend to be crummy in all respects, and limp through their academic careers, inflicting pain on students along the way.

My advice: If you wanted to develop "practical technical skills" for their own sake - get out now.  If you wanted to pad your resume with an MS and are sure it will buy you something - suck it up and tough it out.  If you entered into this with a genuine interest in academic pursuits, you need to re-align your expectations with reality.  I guess the only way to do that is to talk to lots of people both at your school and others.

Bob

Robert Anderson
Wednesday, October 30, 2002

Recent research suggests that getting an MBA won't really help your career in the long-run:

http://www.business2.com/articles/mag/0,1640,41346,FF.html

I suspect that software engineering is the same.  Why go to grad school, if you already have a decent job?

Anonymous coward
Thursday, October 31, 2002

The idea that universities are at the top of a hierarchy is out of date. As a software developer, you would do much more software development than a lecturer / professor, and if you're intelligent, you would be better at it too.

Also, remember that most teaching jobs don't pay as well as development jobs, so in many cases the best people aren't taking the jobs in universities. Not all, of course. But it has an effect.

Maybe top software houses should issue credentials. And I suppose that's what resumes are, in a way.

steve b
Thursday, October 31, 2002

Universities are seriously behind the times and I don't see that as changing any time soon.

A bachelors from a reputable university is fine for getting your foot in the door someplace, but there is no point getting anything above that, unless for some reason the bachelors program you took was especially miserable and their PhD or MS program is the same as a bachelors from a reputable university.

When you see a candidate with a MSCS or PHD, you have to wonder what is wrong with them. They couldn't find work? They didn't want to work? Who knows. Usually, people with advanced CS degrees are not fit to code.

In a related subject, it seems to me that a MS or PhD from an Indian university is about equivalent to a 2-year degree over here. Anyone else notice this?

Ed the Millwright
Thursday, October 31, 2002

<<I find it utterly fascinating that people who have never actually produced an enterprise software solution are in charge of instructing and rating our future developers!>>

I would point out that the type of education that a graduate program is supposed to give, by all accounts, is almost entirely orthogonal to "producing enterprise software solutions."  And if a graduate program *did* claim to be teaching that?  Run the other direction.

Bob

Robert Anderson
Thursday, October 31, 2002

I agree completely that "enterprise application development" has little bearing on a CS graduate degree. So, what would be the pillars of a rigorous graduate program in CS?

1. Machine Architecture.
2. Compilers and Languages.
3. Operating Systems.
4. Graphics: transforms and optimization.
5. Crypto and security.
6. Artificial Intelligence.

What other topics should go up there?

My experience with MSCS degrees or above is pretty much at odds with most of what a saw written here.  Additionally, I found working toward my MSEE was very challenging.  I'd suggest you switch to a school that is more than just a diploma mill.

Nat Ersoz
Thursday, October 31, 2002

"Anyway, 49% of software engineers are in the same category as I - above average."

Not necessarily. For example, suppose that out of every 100 programmers there are 50 who score a 3 (on a scale from 1 to 10), 30 who score a 4, and 20 who score an 8. The average score is 4.3, so only 20% of the programmers is above average here.

Frederik Slijkerman
Thursday, October 31, 2002

Nat,

All the things you mentioned are covered in depth in any BS program worth its salt.

I agree with you about the MSEE -- my comments only apply to CS degrees.

Ed
Thursday, October 31, 2002

MSEE?

Ged Byrne
Thursday, October 31, 2002

"Usually, people with advanced CS degrees are not fit to code"

Post your proof.


Thursday, October 31, 2002

Universities are crap, most "professionals" in any given field are crap.  Even the best of us are crap from time to time. 

What's new?

ya think?
Thursday, October 31, 2002

Maybe you should have gone to a better school?

Also, don't forget that you are studying computer _science_.  Not computer _programming_.

Computer science is to programming as maths is to engineering.

Computer science is Donald Knuth and Edsger Dijkstra, not Bruce Eckel and Jesse Liberty.

Not Anon?
Thursday, October 31, 2002

An MBA is the best way for me to get a job in corp. finance.

amp
Thursday, October 31, 2002

MSEE: MS Electrical Engineering.

Nat Ersoz
Thursday, October 31, 2002

Well, just as solid state physics and electric & magnietic fields were covered in my BSEE, the MSEE took it to a quantitatively different level.  I'd expect the same would be true of MSCS.

Nat Ersoz
Thursday, October 31, 2002


  The best thing to do is to join the two worlds.  I worked as intern when was taking my BSCS, and I am working now, while taking my MSCS.

  A degree will give you the foundation, where you can build your career.  And you build it with hard work, and the experience that you´ll get over the years.

  It´s all about that thing of being expertise after ten years.  You don´t leave college being a top notch coder, if you don´t code.  You learn it by doing it.  And it´s up to you.

 

Ricardo Antunes da Costa
Thursday, October 31, 2002

There are other reasons to get a Master's degree, besides getting a higher salary:

1. If you want to teach at a college level, you have to get a Master's.

2. A Master's environment should provide a unique learning environment that can educate in a way that no other educational system can, even home study.  For example, my local university provides a Master's in Computer Science with a focus on Artificial Intelligence, which guides you through a wide variety of AI topics.  And this is done with people who devote their lives to AI research.

Brent P. Newhall
Thursday, October 31, 2002

Universities are doing some of the best computer science in the world, but it's in the cutting edge fields - A.I., speech recognition, alternative computing models, robotics,  not programming techniques. Microsoft thinks enough of academics to found a research institute at Cambridge UK specifically to make use of the academics.

David Clayworth
Thursday, October 31, 2002

This is an interesting topic to me since I have been thinking about getting an MSEE.  One of the local universities has a program with evening and weekend classes to accomodate working students.  The courses also tend to be of a practical nature and are often taught by instructors from local industry.

Due to what I see as rather dim prospects for software development to evolve into a worthwhile career in the next couple of decades, I am considering a shift to something a little more technical.

I would be interested in hearing any comments from the MSEEs on this discussion.  Engineering work is fairly low in the business hierarchy and an EE oriented job may be no better than CS, but I'd like to get some input.

mackinac
Thursday, October 31, 2002

mackinac,

Here are some of the "pillars" of the EE trade:
1. Solid state.
2. Electromagnetic fields.
3. Communication Systems.
4. Computing & digital logic.
5. Lumped Elements (passive circuits).

As you won't find "enterprise application design" in the MSCS course catalog, you likely won't find "Designing with VHDL/Verilog" in the EE course catalog.  Actually, you might, but it wouldn't be a "core course".

But, designing with VHDL/Verilog is what employers are looking for in a digital hardware design candidate these days.  Verilog and VHDL (equivalent modlling languages) are the C/C++ of hardware design.

There are othe direct applications to EE grad courses.  Examples:
You (very likely) wouldn't write good DSP code without the comm sys course work.
You wouldn't be designing advanced antennas without the E&M course work.

But for a large part of ASIC design, the course work has only indirect application - mostly based on the target application.

Clear as mud, right?  I think the key is that you have a passion for the raw material and you'll find the applications as necessary.

Nat Ersoz
Thursday, October 31, 2002

<<In a related subject, it seems to me that a MS or PhD from an Indian university is about equivalent to a 2-year degree over here. Anyone else notice this?

Ed the Millwright
Thursday, October 31, 2002 >>

Any reason/experinece that would lead you making this statement?.

Steve
Thursday, October 31, 2002


I always thought that my school could do itself a huge favor by not admitting anyone to its grad program unless they had spent at least 2 years working professionally after they finished their BS.  Same idea for Phd's, too.

Jason
Thursday, October 31, 2002

I'm in my MSCS right now, as a counterbalance to my daily work experience.  The academic side is very nicely complementing the practical stuff I do every day, and I've started to think it's a necessary complement to avoid becoming a code janitor.  Make no mistake: just as there are academics who don't know things that real coders know, there are things that academics know that people with purely practical experience never learn.  How many people understand the real performance characteristics of btrees from reading websites?

That said, I'm taking an excellent class right now in Data Structures & Algorithms from a woman who's coded professionally for twenty years, and who came back in the evenings to teach expressly to improve the quality of programming taught at school.  She's the most knowledgeable programmer I've ever met, especially compared to the guys at my employer's parent company who designed and built the ERP we're using.  She's adamant about good coding practices, and a wealth of knowledge about the practice.

So, slagging academics in general is useless.  Like everything else, it comes down to the circumstances.  Get with good people, and you'll be better; get stuck with bad people, and you'll be worse.

Justin Johnson
Thursday, October 31, 2002

>>>When you see a candidate with a MSCS or PHD, you have to wonder what is wrong with them. They couldn't find work? They didn't want to work? Who knows. Usually, people with advanced CS degrees are not fit to code.<<<

I find that statement rather offensive. I have 12 years of professional development experience, 10 years of hobby experience before that, I regularly teach and mentor other people on software development and engineering, AND I have an MSCS.

Why get the Masters? If your employer has a tuition reimbursement program, why in the world would you *not* get it? It can open doors that would be closed to you otherwise, gives you the chance to see out from behind the cubicle walls and the VB6 forms into some of the larger areas of the industry, meet lots of peers you wouldn't have had a chance to otherwise, and maybe, just maybe, you might actually learn something.

Chris Tavares
Thursday, October 31, 2002

"When you see a candidate with a MSCS or PHD, you have to wonder what is wrong with them."

Ya, I can see it now:
I'm sorry mister Torvalds, you don't have what it takes to be a code monkey in our org.

optional
Thursday, October 31, 2002

David Clayworth, there are many companies doing cutting edge research in A.I., speech recognition, alternative computing models and robotics. Why do you think non-university research is restricted to "programming techniques?"

You yourself mention Microsoft, which has a ginormous research facility, quite apart from the development in its business units.

steve b
Thursday, October 31, 2002

Nat (or any other MSEE'd readers) -

Please forgive my ignorance on the field of EE, but it seems like I see a lot of debates regarding whether a MSCS or MSEE background is preferable as the foundation for becoming a high quality programmer.

As an EE, do you feel that the coursework you completed had value with respect to becoming a better programmer in general (improved your logical and problem solving skills, made you more able to make good design and organizational decisions, etc) or would you say that the EE field is actually highly specialized and probably overkill for someone who just wants to open some doors and grow as a developer?

In other words, if I am interested in writing really high quality business/productivity software but I'm happy to let someone else invent the next great breakthrough in wireless networking technology, would I be correct in assuming that an MSEE probably isn't the path for me?

If not, what is?

A natural aptitude and several years of practical, real-world development experience (hobbyist and professional) has gotten me surprisingly far in my programming career at this point, but of course I'd be lying if I said that there have not been plenty of appealing job postings I've shied away due to my college dropout inferiority complex.  (Back then, I was an English major - go figure!  Maybe I should just try writing a novel instead.)

Tim Lara
Thursday, October 31, 2002

>>An MBA is the best way for me to get a job in corp. finance.

Reason enough in itself for not doing one, IMO :)

Andrew Reid
Thursday, October 31, 2002

There are a lot of false canards being tossed around here, sadly. I can't speak to CS programs specifically, but I recently finished my Ph.D. in another branch of science so I speak in some generality.

The worst notion thrown around here is that a person's salary indicates their ability and worth as a technologist. Not everyone holds net worth as their driving ambition. Many teach because they love to teach; that they make less than if they worked says nothing about their skills or abilities. Others go into academic research for the freedoms it provides gives to pursue their research interests, compared to working for a company; their salary has no correlation to their ability as a researcher.

A lesser evil is the old lie that "those who can't, teach." If you've every tried to teach something then you understand that in truth it's generally those who can do something really well that are best able to teach it. If you don't understand something well enough to do it, then you're generally even less able to teach it.

Likewise the notion that professors are those students too incompetent to get a "real" job is a silly stereotype. The job market for academics is extremely tight and competitive. For those people, industry jobs are what you take if you're aren't up to a University's standards. In other words: some would say that those with "real" jobs are the ones too simple-minded to become Professors. (which is, off course, just as foolishly bigoted.)

And many science and engineering professors have solid industrial experience, through freelance consulting, starting their own companies, or working before becoming professors.

There are good and bad, skilled and unskilled people in all jobs, be it academics or industry. No need to overly generalize because of one pinhead professor.

Or maybe you're right. But then all industry people are crooks and incompetents (as seen by Enron, Xerox, Arther Andersen, etc.)

David Fischer
Thursday, October 31, 2002

<< There are a lot of false canards being tossed around here, sadly. I can't speak to CS programs specifically, but I recently finished my Ph.D. in another branch of science so I speak in some generality. >>

Keyword:  recently.  Wait until you've had some experience outside the University system.  Your opinion will gain further shades.

<< The worst notion thrown around here is that a person's salary indicates their ability and worth as a technologist. ...>

I saw almost none of this save a few inane comments.  I think the point is more that the salary difference draws away a lot of talented people who might have otherwise been terrific academics, leaving more room for those who are not so terrific.

<< A lesser evil is the old lie that "those who can't, teach." If you've every tried to teach something then you understand that in truth it's generally those who can do something really well that are best able to teach it. If you don't understand something well enough to do it, then you're generally even less able to teach it. >>

The second and third sentences are true, IMO.  But in order to draw the conclusion that professors are really good at doing, you'd first have to assume that they are good at teaching.  Eh.  The second problem with this is that the "something" matters.  The "something" that professors teach is not really what industry requires of the do-ers, so to speak.

<< Likewise the notion that professors are those students too incompetent to get a "real" job is a silly stereotype. The job market for academics is extremely tight and competitive. For those people, industry jobs are what you take if you're aren't up to a University's standards. In other words: some would say that those with "real" jobs are the ones too simple-minded to become Professors. (which is, off course, just as foolishly bigoted.) >>

I personally know several internationally recognized academics who will tell you point blank that if they could compete and do well in the business world, they would do it in a heartbeat and stop screwing around with 1/3 of the pay on problems that only a few people in the world care about.  But they can't, so they do what they can compete in.

Others, of course, want no part of it.

<< And many science and engineering professors have solid industrial experience, through freelance consulting, starting their own companies, or working before becoming professors. >>

And these people do tend to be good, IMO.  Anyone who does this must have passion for teaching, otherwise they would take the other leg out and never look back.

<< Or maybe you're right. But then all industry people are crooks and incompetents (as seen by Enron, Xerox, Arther Andersen, etc.) >>

No.  But a good portion of them are.

Bob

Robert Anderson
Thursday, October 31, 2002

This is a topic that I can speak about. After ten years of working in development, I went back to university to do a BSc in Computer Science. The reasons for doing so are unimportant, but it was not to improve my skills as such.

The quality of the lecturing was infinitely variable. Many of my lecturers had never set foot outside of academia, and it showed. Many were openly dismissive of work in the outside world "just COBOL hacking" they said. I went to a number of lectures where the lecturer would talk about how things were done in "real world" when in fact he was talking complete bollocks. After the lecture I usually had words with them to point out their errors. I had the advantage of being older than most of the lecturers and they knew that I had real world experience so they didn't argue.

I did have some magnificent lecturers, one was an ex-practitioner like me, who held many of the same views as me about ivory towers etc. Some were just so impressive in their knowledge that they took my breath away, the problems only seemed to arise when they tried to related to the outside world of computers.

What I learned did not really help me with my work, except maybe a re-inforced belief in doing things properly and the correctness of code. Some of the things I learned I would love to put into practise (Z anyone ?) but for the most part is unrealistic given constraints of time and money in commercial organisations.

One very sad event happened when I was there, a lecturer (who was also my tutor) taught graphics. Over the last few years he had a problem, many of the undergraduates already had many years of coding behind them and many were already highly skilled in graphics from writing demos and games. The lecturer found that he was being corrected by the students and being introduced to new techniques that he did not know about. He had a nervous breakdown. A really lovely guy. I think this happens if you lecture in an area which is "sexy".

I am currently unemployed and I am considering doing an MSc next year for two reasons:
1. To get out of the job market for a year.
2. To add a new skill, I am fascinated by DSP and would love to learn about it properly. The fact that it may improve my employability is a secondary concern.

Jonathan

WhatTimeIsItEccles
Friday, November 01, 2002

you sure are CLUELESS for someone who claims to above average.  Here is a simple lesson on natural selection.

Anyone who knew ANYTHING was out making $150/hr for the past decade.  Who do you think would be left to teach college for minimum wage?  The bottom of the barrel.  If this surprises you, I am shocked that you have ever been able to compile a line of code, let alone tie your shoelaces.

Bella
Friday, November 01, 2002

"Anyone who knew ANYTHING was out making $150/hr for the past decade. "

Back it up, troll boy.

lct
Friday, November 01, 2002

Ya, I can see it now:

"You know that Knuth guy?"  "He was CLUELESS cause he wasn't pulling 150/hr".

optional
Friday, November 01, 2002

<<Keyword:  recently.  Wait until you've had some experience outside the University system.  Your opinion will gain further shades.>> I've got some small industrial experience now. My Ph.D. didn't prepare me to prepare cost estimates or schedule meetings in Lotus Notes. Nor did I learn all the details of how things are done industrially in my sector. Rather, it gave me some specific skill sets, a deeper grounding in fundamentals than you'd ever get with a B.S., and taught me how better to analyze, understand, and solve difficult problems.

<<I think the point is more that the salary difference draws away a lot of talented people who might have otherwise been terrific academics, leaving more room for those who are not so terrific.>> My experience is that it's not the money but the heavy workload that pushes people away from academia. The first five years or so, trying to get tenure at a research university, are extremely difficult. The money situation doesn't help, but people don't get Ph.D's for the cash. If you want cash, you get an M.S., MBA, J.D., or M.D. A Ph.D. can be very lucrative but it's not obvious that it's big money they way e.g. corporate law can be.

<<...you'd first have to assume that they are good at teaching.  Eh.>> I've had my share of horrendous lecturers (though I've found some horrible lecturers are fantastic one on one).

<<The second problem with this is that the "something" matters.  The "something" that professors teach is not really what industry requires of the do-ers, so to speak.>> I personally think this is a problem with industry. If they want people trained in how to do their specific business, they should hire people from trade schools. But if they want to think long term, and get people with deep knowledge and the skills to tackle hard problems and hopefully bring fresh insights, they need to hire those with broader educations.

<<...internationally recognized academics who will tell you point blank that if they could compete and do well in the business world, they would do it in a heartbeat...>> I've not met these people (and I know some very sharp folks) But I suppose there are some. There are still areas of academia where you can take the time to really grapple with hard problems and work out the answers. It would be a hard switch from that to the zero-thinking time corporate America seems to require (at times).

A post-graduate degree is neither a silver bullet nor a sign of incompetence. I've found to be as much a calling as a professional choice.

And personally, I think a Ph.D. is a pretty spiffy thing to acheive :)

David Fischer
Saturday, November 02, 2002

I'm writing up my PhD at the mo (in finance), I'm at a decent UK university. I did a BA in Computer Science and an MSc in AI before.

Many different types of people start PhDs. In my mind there are three distinct categories:

1. The Academics, Many of my friends are very intelligent and have a deep interest in (love of?) their subjects. They accept that they're not going to earn huge salaries as academics, but this isn't important to them. They do Good Stuff.

2. The CV-pointer. Some people are in it just for the prestige of the three letters. They typically produce sufficient but unremarkable theses.

3. The Drifters. These are people who started PhDs because it was easy to get onto a programme and nothing else sufficiently interesting jumped out in front of them. Doing a PhD was the 'default option' and they produce theses late or drop out.

I reckon 20% are Academics, 5% CV-pointers, and the vast majority (75%) are Drifters. I'm a Drifter. This has an obvious effect on the quality of graduates -- very few have actually genuinely been stretching their brains for three or four years!

So sadly, as a PhD student, I agree with the original poster -- PhD students aren't anything special, and certainly would have learned a lot more in three years of doing something else.

PhDs were, of course, designed to set people up for academic careers: if you've done a PhD then you're supposed to have a good knowledge of your subject, have contributed something new to it, and most importantly be able to assess the quality of other people's work. They're supposed to teach you how to do research. With non-academic sectors having placed value upon the PhD programme (it looks good to be Dr X you're a consultant, for example), PhD programmes, and the students who take them, have lost focus trying to cater to all. It is very similar to what has happened with undergraduate degree programmes: good academics are those who understand and can extend the theory, industry requires people who can deliver practical results. In a limited time a compromise must be struck, which invariably satisfies neither side.

Tom Payne
Saturday, November 02, 2002

One of the problems with advanced degrees is that there is more supply of academic knowledge than demand.  Sure, there are hundreds of "CompSci" problems that are solved every day: Google searches, compiler writers, SQL engine experts, etc.  However, this number is likely dwarfed by the boring "enterprise app" work that most of us do.

Where does this unused capacity go?  Too often, the sad answer is that software is made needlessly complex by individuals looking for a "creative outlet".  For example, a custom hashtable might be somewhat more efficient, but using the default STL implementation costs less, both up front, and in maintanence dollars.

I have quite a lot of sympathy for the brilliant, introverted engineer.  Perhaps no one really understands her ideas, perhaps those ideas are overkill for the project.  If I was a ditch digger, I would be constantly looking for ways to build a better ditch.  The problem is, ditch digging is solved; you just need to dig and find a way to be happy doing it.  Enterprise software development is kind of like that for these people.

IMO, there is a drastic undersupply of people who understand software engineering as a business and who can adeptly balance costs vs. benefits on a projects.  This skill is not identified by letters after one's name.

Bless the academics, but let them take out their needs for complexity on someone else's project...

Bill Carlson
Sunday, November 03, 2002

1. My understanding is that the algorithms inside STL were written by PhD's at SGI.  It is rare for anyone to improve upon these algorithm's performance.
2. I takes dedicated effort to simplify software.  The explosion of the alphabet soup within this industry, I think, is due to average people claiming "greatness"  (great - an overused term at MSFT, only exceeded by the word "technology").

The Rube-Goldberg monstrosities of today are the result of not enough attention to detail and a rush to be first in the market.  Its all well and good - it is what it is.  But the place for academics to add value is in simplification and reduction, not complexity.

Nat Ersoz
Sunday, November 03, 2002

*  Recent Topics

*  Fog Creek Home