Wednesday, November 18, 2009

Job Advice?

Not for me, thank goodness.

A very talented graduating senior (who may or may not be Harvard...) has obtained a number of job offers, and asked me if I had any advice on what job would make the best place to start a career -- or look best on a resume. (Similar questions come up most every year.) I explained that besides having some potential conflicts of interest, I was removed enough from the job circuit these days to not have any useful advice. But I could ask others....

Let's consider a number of possible jobs a talented student might easily obtain:

Software Developer at Google
Program Manager at Microsoft
Developer at Facebook
Entry-level position at a tech-oriented "boutique" consulting firm
Something else you'd like to suggest

What advice would you give them on what to choose? Or how to choose, which is probably more useful?

A warning to students: free advice is often worth what you pay for it....


RiskTaker said...

My personal opinion is that, if you're a strong enough candidate, certain jobs will always be there (software engineering jobs at large companies such as Google, Microsoft, Facebook, Amazon, etc.). While young without a family you're responsible for, I advocate taking large risks for potentially larger reward and either going to a startup, or starting up your own startup. If things fail after a couple years, Google et al. will still be there waiting for you.

Anonymous said...

Do something that you think you will enjoy. If you take a job just because you think it will impress your family or peers, or that it will "look good on a resume", then 10 years from now you'll end up being miserable.

Anonymous said...

The first question I'd ask the student is whether he or she wants to code. A developer at Google or Facebook will spend a lot of time coding. A PM at Microsoft will write little code, if any (they will manage multiple projects, interface with outside teams that are affected by or integrating with a given project, write specs, think about and influence UI, glue together developent and testing folks, etc).

The second question is what kind of environment you want and what you might like to do next. If you have entrepreneurial spirit but have to wait on making money and/or finding your idea, a place like facebook would probably have the most likeminded people. I'd rank Google second and Microsoft third in that respect. If you want to be in development and algorithms in some capacity, I would avoid a Microsoft PM job and probably the tech consulting gig--I think those skills would atrophy in one of these jobs compared to developing at Google or Facebook. No disrespect to MS PMs or tech consultants, I just think they tend to be less about coding and algorithms than a Google or Facebook coder and one loses sharpness in those areas if he's not doing it constantly.

I know people who work at Google, Microsoft, and Facebook, and have a good sense of the jobs there, but admittedly not so much for the tech consulting gigs. My feeling, though, is that they're profitable ventures with product demand, but the job itself isn't super stimulating (think repackaging and massaging the same solution over and over again for outside companies, sometimes with travel included in the deal). This is surely not a fair assessment of all tech consulting jobs, but it's my feeling for a few of the established ones in DC that I'm familiar with.

All of these are great jobs and I don't think anyone would question taking one over another (i.e. look at your choice imply that you forewent a better position), but I would still give a general prestige nod to the Google developer position (disclaimer: I have never worked there!). This is just my perception.

JeffE said...

Do something you think you'll enjoy and that you think you'll do well. (You may not figure out whether you like your job or whether you're good at it you've been at it a while. And both your enjoyment and your success will change over time. Go with it.)

And never underestimate the importance of life outside work! Would you be happiest working in (ie, living near) Mountain View, or Redmond, or Cambridge, or Manhattan, or New Orleans, or Ithaca, or Beijing, or Johannesburg? How much do you want to drive, versus take the train, versus bike, versus walk? How much do you need to be near the beach, or the mountains, or the theater, or sushi, or bowling, or organic farms, or microbreweries, or a university campus, or a major airport, or good fly fishing, or a thriving gay community, or a particular church, or Central Park, or your family? How much space do you need to live comfortably? How much money? How much time?

Claire said...

The Microsoft PM job is high level design, and very, very little coding (except for a few PMs; it depends on the group/project). PMs also go to *tons* of meetings on a daily basis. I know PMs who absolutely love their jobs, but my impression is that it's very personality-dependent.

(Redmond/Seattle is awesome, though, and their health benefits are totally unparalleled.)

Otherwise, being an SE at any of the big companies is relatively comparable. Time is spent coding, triaging bugs, implementing features, etc. So long as none of them are in a field one finds truly brutal, I'd probably look to location to decide. I mean, obviously compare starting salaries/benefits/entry level first, but after that...

I know a couple of people who have worked for boutique tech-oriented (legal) consulting firms, and though they can't talk about their work specifically (NDA!), they seemed to really enjoy the work. My impression is that there's more variety in terms of what one works on, since it depends on the needs of the client. However, it probably varies hugely with the firm, so the student should do some research.

Andrew B. said...

You haven't told us anything about the person other than that they're talented! What motivates them? What makes them happy?

Without any more information, I'll agree with RiskTaker's post, but disagree with their pseudonym: startups aren't really risky. Unless you're putting in your own money, it's a job with a good salary and decent benefits with the EXTRA potential of a high-payoff event. It's only risky in that you're earning 70k plus that diceroll instead of 100k at Google or whatever.

Anonymous said...

Claire wrote:
> The Microsoft PM job is high level
> design, and very, very little coding
> (except for a few PMs; it depends on
> the group/project). PMs also go to
> *tons* of meetings on a daily basis.

Wow! If you put it that way, the job
description sounds *exactly* like a
professor's job description.

Anonymous said...

What about the financial sector?
I still believe that they offer the highest expected pay over time. Some math heavy jobs do not require working crazy hours and are moderately interesting.

The main downside is working with alot of shmucks.

Anonymous said...

I tend to agree with Anonymous #2. It's important for people who wish to enter the software engineering profession to realize that over the lifetime of their careers (given the current market realities), they will largely be judged by their ability to write software. This means that significant amounts of time not spent doing that, e.g, doing some kind of management or consulting, will cause them to fall behind others who spend the majority of time on software engineering concerns. These others will judge job applicants (at interviews) based on their ability to do software engineering, regardless of what types of jobs they've had.

David Molnar said...

Things I would look for --

* Which project and team excites you the most? This is the most important, but keep in mind...

* Now what would you think if you went to a different team and project in the same company?

Projects change and sometimes a new hire does not start on a specific project that was current while interviewing. Plus if you're there for a while, you'll end up on a different project eventually. Finally, you're going to need to work with other teams in the company. If the vibe you get is "my team is great, everyone else is an idiot," think long and hard before taking that job.

* Which day to day role excites the student the most? Depending on the project, the different jobs might have different expectations for amount of time spent coding, number of hours in the office, and in-person vs. IRC or email interaction. Other commenters have alluded to PMs vs. developers, but even different developers can have different "days in the life."

For consulting, long hours and travel are typical. I've never done that but I've known several people who have. It's revealing that some consulting companies apparently have as a benefit that they will buy your significant other plane tickets to come visit you in whatever place you happen to be. I like travel, but not that much. Your student may feel differently.

* What are the evaluation metrics for the job? Do they match what the student enjoys doing? If you poke around you can find a lot of information about how reviews work, how compensation works, and what is valued at established companies. Startups are harder, since people are less likely to have written Harvard Business Review case studies about their compensation practices, but you can always ask.

*Much* more importantly you can get an idea of what's rewarded on a day to day basis with attention and support. This can save a lot of grief down the line if your personality and career goals are not a match. Also pay attention to home office vs. branch office and whether that matters.

This is an area where startups and established companies diverge sharply -- a startup stereotypically needs to get things done yesterday, has little or no formal HR structure, and rewards heroics. Stereotypically, an established company needs to think longer term, may have a lot of institutions around HR, and rewards consensus building. Of course stereotypes are wrong so it is the student's responsibility to find out what the truth is. In a small enough startup the student will end up influencing this for better or worse.

* Finally, overall direction+future of the company. This is not top of the list because most people in our industry seem to change companies every couple of years, but it's worth noting. Startups the obvious thing to ask is if you think it'll take off, be acquired, etc. Be clear with yourself that unless you're a super early stage employee or unless it's another Google, the startup won't make you nine figures. Established companies this is maybe less important but it's still worth asking because it will affect you down the line.

Unknown said...

A few things:

- A less prestigious company or group often pays more, due to the lack of snob appeal and/or perception of stability/excitement.

- Startups are like dysfunctional families, and all will tell you that they're different from the rest with a can't-fail product. It's a risk, so use your own judgment. If they creep you out, run.

- Take the long view. Not doing so can lead to dead ends. Then again, doing so can also lead to dead ends if you're unlucky.

Luke said...

Let me reiterate Anonymous' suggestion of finance. There's a lot of very interesting math and programming projects. Most quant-y positions are around 60 hours a week, much less than ibanking, but still have high earning potential. The culture is intense, but for those who fit, it can be a rewarding experience.

Anonymous said...

Take the long term view, and take a job that will encourage good habits as you get started on your career. I've seen engineers forgo the large company experience ("too big, bloated and slow") for the hot startup, and pick up some bad habits that take years to undo. Most large companies are that way because they did something right... learning how to scale yourself and the group you work in is valuable. Spend the first few years in a large company, then possibly move on to something more on the edge.