Friday, August 29, 2008

Should I Get an MBA?

Some technical professionals wonder if they should get an MBA to kick-start their career. But unless you are specifically looking to go into management (dev management, product management, or project management), it’s largely a waste of time and money. In fact, even if you do decide to go into a management field it may still be a waste. And this is coming from someone who holds an MBA.

Some may claim that having an MBA from a prestigious school looks great on your resume and opens doors. Sure, that’s certainly the case – if you’re looking for a job in investment banking or consumer product marketing. Otherwise it’s just another shiny star on your resume that attracts attention, but which usually won’t help you make the sale.

So then is an MBA valuable for the things you learn in the program? That depends on whether you actually end up using the material taught there, which is a combination of the following:
  • Economics
  • Finance
  • Marketing
  • HR & Organizational Behavior
  • Information Systems
  • Corporate Strategy
  • International Business
If you come from an engineering background you may be surprised by how lightweight most of the MBA coursework is. Perhaps the most difficult classes are in Economics and Finance, and even they do not begin to approach the difficulty of a freshman Computer Science class. Back in business school I found it funny to see Liberal Arts graduates complaining about how difficult our classes were; obviously they did not stay up nights in college trying to digest 1,200-page engineering texts full of partial differential equations.

So if the value of an MBA is not in the coursework, what else is there? Well, some people talk about the added perspectives they gain from the broader business education, but that is a nebulous benefit at best. Nay, the real benefit is something they don’t necessarily tout up front; it’s the interaction skills that you gain from group assignments, and the relationships that you develop with your fellow students.

The value of such skills and networking is difficult to measure, but it is definitely tangible. Still, is it worth the significant opportunity cost of taking two years off of work and going hopelessly into debt? Only you can answer that question. But if you can manage to take an MBA program part time, or better yet, have your company pay for it, that will make the decision much easier.

Wednesday, August 27, 2008

Do I Need an Advanced Degree?

I’m seeing more and more candidates with Master’s degrees, and even a few with PhDs. Does it make a difference to the hiring manager?

Not a whole lot. I evaluate candidates based on their performance, not what degrees are on their resume. If their Master’s Degree of PhD helps them answer the questions better, then great, but otherwise it doesn’t make much of a difference.

One possible exception is that with H1B candidates with foreign degrees, I may look more favorably upon people who have completed a Master’s Degree in the U.S. I think the more time they have spent in the U.S. the better, as it helps them adapt to the cultural aspects of this country. And if that time was spent studying technology in a degree program, all the better. I don’t particularly care that they might have done it just to get a visa.

Some people feel that there is a kind of degree inflation in the market. At one time you were considered well educated if you had a bachelor’s degree (or even an Associate’s), but now since everyone has a bachelor’s degree, you need a Master’s to stand out.

I don’t fundamentally disagree with the notion that Bachelor’s degrees are becoming commonplace. However, if a Bachelor’s degree is sufficient for a career in software engineering (which it is), then there is really no need to try and distinguish yourself with an advanced degree. It can be expensive, it takes a year or two of your life, and in the end that same amount of time spent in a job may look just as good on your resume.

Monday, August 25, 2008

Do I Need a Degree from a Prestigious School?

If you are reading this blog chances are you’re far beyond the age where you have to decide what college to attend. Still, you might have kids who are facing that situation, or young people might be coming to you for sage advice (hardly likely in this day and age, but you never know).

I once worked at a company that only hired people from the top schools. Places like Harvard, Yale, MIT, Stanford, Brown. Which made me wonder how I ended up there, as my Ivy League credentials were nonexistent. But in any event, what was the result of such selective hiring? Was the company a stellar development shop?

Not really. In fact, it was a dysfunctional organization that produced rather mediocre code. That was the result of their policy of hiring the smartest people from the best colleges regardless of their degree, resulting in physics, math, and psychology majors doing software development. Sometimes that worked okay and sometimes not so well. Pair that with a lack of formal processes, and you had a mess on your hands.

Anyway, as for the pedigree of your educational institution – the fact is, the longer you are out of school the less your alma mater matters. You can still highlight it on your resume if you’re proud of attending that top notch school, but at some point your experience and work accomplishments begin to matter much more.

Still, this doesn’t mean that getting a degree from Podunk State is just as good as a degree from Cal Tech. Your choice of school will matter earlier on when you are just starting out your career. Since you don’t have much of a track record by that point, companies will ask you where you went to school, what your major was, and inquire about your GPA. Any advantage you can wield at this point can be important in getting a first great job and laying a good foundation for your career.

Friday, August 22, 2008

Do I Need a Degree in Computer Science?

Some people ask whether they should get a degree in Computer Science, or perhaps a comparable degree like Computer Engineering or Information Technology. Or would a Math degree be sufficient? How about one in Physics? Or Civil Engineering? Or for that matter, English Literature?

I have seen plenty of successful engineers with degrees in non-computer related fields. That shows that CS-type degrees are not strictly necessary to do well in this field. Software Engineering is not a tightly regulated field like accounting, law, medicine, or even architecture. Software Engineers do not need a license, nor do they need to pass any exams to work in the field. There are certifications they can get, but the value of many certifications is questionable. Hence it’s fair to ask whether people with degrees other than CS can be just as qualified as CS graduates. There is no simple answer.

On one level, some companies, especially large ones with formal training programs, like to take in the smartest people regardless of their college majors and train them on their approach to software development. For the type of relatively standardized work these companies do, this may be a perfectly valid approach.

At other companies however, formal training is a luxury and new employees are expected to come up to speed quickly. And in these environments the lack of a formal computer science education can be a distinct disadvantage.

Why is this the case? After all, aren’t there lots of teenage kids hacking away and even starting their own Internet companies, all without a CS degree? So why can’t a smart, college educated Political Science major do just as well in software development?

Well, my answer is that people who have focused their studies in non-CS fields are not likely to have the grounding in basic computer science concepts that are necessary to be successful right away in a software engineering environment. Sure, they can pick up these skills and knowledge on the job, but typically that happens in dribs and drabs, and they never get the solid grounding they should have had in the first place. I’m talking about skills and knowledge like the following:
  • Data structures: linked lists, queues and stacks, B-trees, graphs, etc.
  • Algorithms: Sorting, Searching, Recursion, Design Patterns, Big-O notation
  • Object oriented design (Encapsulation/Abstraction, Reusability/Inheritance , Polymorphism)
  • Databases (Table design, Normalization, Indexing, SQL Queries)
  • Discrete Mathematics (Switching theory, Binary logic, Numeric algorithms)
These are not necessarily esoteric, ivory tower concepts; many of them are things that may be used in the context of a developer’s daily tasks. You’d be surprised how many people I interview who have 10+ years of programming experience but do not understand these basic concepts. And not surprisingly, many of them do not have a formal CS education.

Wednesday, August 20, 2008

Do I Need a College Degree?

Many large companies will list a B.S. or similar 4-year degree in Computer Science or a related field as a job prerequisite. No CS degree and you don’t get to play, for better or worse.

At smaller companies the requirements are often not nearly as strict. I’ve seen startups with senior employees (even executives) who never even completed college – and I’m not just talking about Microsoft, either. And in fact not too long ago I hired a fellow who did not have a college degree (but was working on it part time).

As to whether college is worth it for the personal edification – well, I can’t really answer that. It’s true that in many ways you can learn more on the job than in school; however, pursuing the right kind of college education will teach you the fundamentals of computer science that are all too easy to gloss over if you are self taught.

So if you are weighing whether you should head off to college after high school, or return to school after some time off, or just stay in school and finish up that degree, I would heartily recommend it. It opens up more doors for you, and if you don’t do it now you might regret it later in life. And as you get older it becomes exponentially less likely that you’ll actually go back and finish up a degree.

So my bottom line? If you have a chance to get or complete a bachelor’s degree, do so if at all possible. It may open many doors for you that might otherwise be closed, and you’ll also make yourself proud.

Monday, August 18, 2008

Advice for Those Just Starting out of College

If you are a new or recent graduate, you might ask yourself whether you should work for a large, established company or take a chance on a smaller company or startup.

If you have a large, well known and respected company like Microsoft / Google / Oracle / Sun on your resume, you are more likely to stand out than if you worked for “JoeSchmo Savings & Loan” or “Mom & Pop’s Web Shop”. Also, the fact that you were employed by such respected companies means that you’ve already passed through some tough screening processes. And finally, you may also learn more at the larger companies, especially since they are more likely to have formal training programs and knowledgeable employees.

Also, larger companies typically pay better to start with than smaller companies, as they have more financial resources.

On the other hand, people who work at smaller shops are more likely to acquire a wider range of experience. For example, at Microsoft you might work on one small component for Internet Explorer; however, at a small web shop you might be responsible for writing the HTML and CSS, the ASP.NET codebehind, JavaScript on the client side, and ADO.NET in the business layer, as well as setting up and maintaining a SQL Server box and an IIS box. You would never get that breadth of experience at a large company, as that work would likely be divided up amongst at least four or five people.

Plus, at a smaller company it’s possible that you’ll advance faster – if the company grows, that is. Larger companies often have more prerequisites for advancement, such as time spent in a position, advanced degrees, etc. Larger companies may also have restrictions on things like pay raises. Smaller companies are less likely to be burdened by such policies.

So the choice is yours: a better looking resume, or more hands-on experience. Not an easy decision by any means.

Friday, August 15, 2008

Back to Blogging (and rambling)

Well, I'm back after being on break for a couple of weeks. Anyway, starting next week I'll resume blogging about recruiting, interviewing, and management issues.

In the meantime, I realized something the other day. Among my circle of friends I do not know of a single smoker. Not a one. Of course some of those people might have smoked back in the day, but none of them do now. And I don’t think I’m a statistical oddity in this, either, at least here in California.

And yet, at my last company I saw a lot of our engineers hanging out in front of our building and puffing on cigarettes. Many of them were people I never expected would be smokers – not that there is really a smoker profile, of course. Still, in my experience most engineers I have met do not smoke, as far as I'm aware. So it was a bit surprising to me that so many of my colleagues liked to take a drag every few hours. And not only that, they were some of the brightest people at the company!

You might ask, what does this have to do with recruiting? Well, very little, actually. Except that once I ran across a company that required candidates to sign a statement that they were not smokers. I think it had to do with getting a discounted group rate on health insurance. Now INAL, and I don’t know if this is legal. It’s entirely possible someone might claim that a smoking habit is a disability and is federally protected. Still, the company seemed to be not so subtly discouraging smokers from applying.

Anyway, I began to wonder why people smoke nowadays, especially engineers. It should be abundantly clear to everyone by now that smoking can cause serious medical harm; even the tobacco companies have admitted it. And I expect that engineers are pretty smart people as a whole. So I asked myself why they would make a conscious, rational decision to continue smoking in the face of all the evidence that smoking is bad for them.

Then I finally realized (after someone bluntly pointed it out to me) that there might be an upside to the smoking habit. Our smokers regularly gathered outside the building and spent time not just smoking, but also shooting the breeze about what was going on in their respective parts of the organization. And in a large(r) company, current information about what was going on organizationally was like gold. And perhaps this information, and the relationships built with their fellow outcasts, was in some small part a contributor to their success within the organization.

Now of course I'm not suggesting that anyone should take up smoking just to build connections and improve their knowledge acquisition process. But this example points out how social networks (the in-person kind) can form under perverse conditions and create bonds that might not have existed otherwise. And it also shows that trying to screen out smokers in the recruiting process may be a bit counterproductive.