Life of a Software Program Manager

A first person accounting of what it is really like to manage a commercial software product.

Archive for June, 2006

What is More Important? Time or Quality?

Posted by Program Manager on June 12, 2006

I came across a post that raised a few very good questions about the software business, so I thought I would respond.

  • How partial can the initial result be and still matter?
  • Partial in features or partial in quality?
  • Is a later corrective delivery a separate, on-time delivery, or a completion of the initial delivery, thereby making it late?

The underlying question here is how do you make the decision when you can’t deliver on scope, quality, and timeline, how do you choose what to sacrifice? The original author makes a good analogy:

If you’re running for a plane and lose a shoe. Better to make the plane and buy new shoes at the other end, right?

And of course, the counter point:

What happens when the client you were going to visit by plane is on the plane, sitting next to you?

To be consistent with the focus of this blog, I think there are a few rules that apply here to software development teams:

  1. Know your users. What will your users accept? If this is a critical, life or death piece of software, quality probably can’t suffer but timelines are allowed to move. If it is an business process automation application, then maybe quality can slip since the ship date is critical.
  2. Use your Product Manager. I made a previous post about the value of product management (link), and this is another benefit. Usually, product management owns the customer base and profit / loss accountability. (In your organization, this could be sales, marketing, or a business unit GM. In those cases, target them with this advice). At the end of the day, your team is not held accountable for P & L. Your team is responsible for fulfilling requirements provided by product management. You are not directly tied to the customer or the sales cycle (yes, I know this is slightly different in small companies, but realize that the roles are there, you are just wearing different hats). Let the product manager determine which aspect of the project to sacrifice.
  3. Use your best judgment. In the event that you are left to make the decision, go with your experience. If you were the user, what would you prefer? Could you postpone a feature? Could you delay part of the product? Someone has to make a choice, you just need to accept that no choice is going to be popular. Everyone will want all features with all quality on time. Your job is to get past the emotion, and recognize that it just isn’t going to happen this time, so it’s time to make a mature, rational decision about how to proceed. The inevitable “how did we get here” question will certainly come up, so you need to be prepared for it. Remember, history is a great instructor for the future, but it can’t be changed regardless of how much you talk about it.

These are decisions that come across my desk all the time. As a general rule, I try to stick to rules #1 and 2, but in the event I need to decide, I do so. Trust me on this one, indecision is far more costly than the wrong decision. I’ve made a bunch of decisions about projects and scope. Some were right, some were wrong, and some were very, very wrong. Bad decisions happen, the trick is to manage past them, not to let them define you.

The full post can be found here: Link.

Technorati : , , , , ,


Posted in program management, Software development | 5 Comments »

Scoble is Leaving Microsoft

Posted by Program Manager on June 11, 2006

I realize this is all over the web, but I’m just getting it now. Robert Scoble, one of Technorati’s top 100 (#26 as of this morning) bloggers, is leaving Microsoft for startup PodTech.Net, Here are a collection of links that are a valuable read.

  • Scoble’s take – Link
  • Niall Kennedy’s Homage
  • Chris Pirillo – Link
  • Silicon Valley Watcher Article- Link

I’ve been reading Scoble for over a year now, and I must say that he is truly a blogging superstar. He is the first blogger that I can think of who did a great job of balancing his insider access as working for a major software company with his general geekdom passion by writing very openly about anything in the world of technology. While no one in the blogosphere will miss out with his continued postings, and Microsoft will continue to have over 3,000 other bloggers, they have certainly lost their heavy hitter in the blogging community. Good luck Robert!

Posted in Reading | Leave a Comment »

Digg to Expand Beyond Nerds

Posted by Program Manager on June 11, 2006

According to Rob Hof from Business Week, Digg’s CEO announced today that his team is hard at work to expand Digg beyond tech news and sites, and expand into news, politics, and all other worldly events. Read the full posting here.

Technorati : , ,

Posted in Reading | Leave a Comment »

As usual, Joel is Right on Point

Posted by Program Manager on June 11, 2006

Joel Spolsky is an incredibly interesting author. He’s written a few books, posts regularly on his blog, and at the same time runs a successful software company. You can search through his blog and see some of his other postings on software management and development, his process and theories behind hiring summer interns, but I recently came across what I think is his best idea yet: The FogCreek MBA program. His premise is that to be ready to run a software company, an MBA doesn’t do you any justice, but he is planning a three year crash course for recent graduates that at the end should prepare them for anything the world of software has to throw at them.

You can read all about the FogCreek MBA program it here. Joel also posted a recommended reading list for this program that can be found here.

Technorati : , , , , , , ,

Posted in program management, Reading, Software development | Leave a Comment »

How to Hire Talent

Posted by Program Manager on June 10, 2006

I may be in the software industry, but this is a problem that affects every manager in every field. How do you recruit and hire the best talent? There are the general cliche's like "Hire people smarter than you" or "Hire someone you could work for," but these don't actually give any information you could use.

Everyone has their own process for hiring and I've been through several as both a candidate and an employer. The best tip that I can offer for how to run an interview is that the candidate should meet with several people, and all on the same day. This makes it a one-stop shop for the candidate, and allows the company to react quickly if they decide to move ahead with an offer. I'll make a future post on my idea of a recruiting / interview process.

Anyone who's ever given an interview should know that they are walking into the interview preparing to answer one question when they're finished: "Should the company hire this candidate?" The question sounds fairly easy to answer, but the process to get there is complex, and sometimes requires a crash course in psychology 101. I've compiled some tips below that I try to follow with each interview I give.

First, let me put my interviewing frequency in context. I am one of the key interviewers for my company, usually giving 5 – 10 interviews / week, ranging in candidates like test engineers, software engineers, software architects, project managers, program managers, and product managers. While a typical interview with me lasts for 45 minutes, I probably have 2 – 3 hours worth of interview material.

The biggest struggle that I see, especially in first time managers, is the ability to recognize talent. Senior people are always easy to hire; they know their area of expertise, they pass all of the technical interviews, they have the experience of several software projects, and they are mature enough to give the expected answers during the interview. For them, it just comes down to personality fit and they either mesh with your team or they don't.

It's the diamond in the rough that seems to be the most difficult to identify. And these people are the most critical to your project; the 'B' players; the group who makes up 70 – 80% of your team; the group who'd you love to see a few grow into 'A' players. So how do you sort out the candidates with potential from the ones who are just repeating what they memorized in the latest programming book they read. The basic knowledge is usually the same. The candidates most all be competent in your technology of choice, they must get along with your team, and they must fit your budget range. Now the hard part, once you've identified a few candidates that fit these basic criteria, how do you know who will really succeed? Who will improve your team? Who will exceed your expectations?

  1. Evaluate Problem Solving. Try and find out how the candidate works through a problem that they don't know the answer. How do you weigh a 747? Why are manhole covers round? How many cars are there in New York City? Questions like this are not designed to reach the answer, but to see how the candidate thinks. How do they respond to help? Do they ask questions? Do they break down the question logically or randomly? These are some key indicators for imaging the candidate 6 months down the road when you have to develop a solution that no one on the team has ever seen before. Maybe an obscure defect that you can't reproduce These situations will inevitably come up, and you want your team best prepared to handle the unknown, and be able to breakdown a problem logically.
  2. Hire Smart People. When in doubt, hire based on intelligence. Generally speaking, intelligence has a direct correlation to ability, adaptability, and efficiency. I'm not saying this is a black and white issue, but when you can't decide between a few candidates, the smarter candidates have a higher probability of success
  3. Admitting Ignorance. Throw out some questions that the candidate has no way to answer. Don't throw out a brain teaser for this one, but throw out something extremely technical or deep, or on a technology just outside of their knowledge level. You already know that they don't know the answer, the test is whether they'll admit it, try to dance around it, or engage you in a conversation to get to the answer. As a rule, anyone who tries to give me a b.s. answer, I immediately won't hire. Anyone who can admit they don't know something when they are engaged in an interview is someone with the maturity you are looking for. Professional maturity is a great indicator for future success, knowledge transfer, and constant growth.
  4. Communication Counts. Try to get the candidate to explain something complex to you. Did you understand it? Was the information presently structurally or randomly? How long did he consider his answer? Was he comfortable launching into a diatribe? At the end of the day, communication is key for any team, and yours is not any different. As long as someone can clearly express their status, position, opinion, thoughts, really anything, then your chances for team success have just gone up exponentially.
  5. Career Goals are Good. Senior talent generally know what they are looking for, and have usually already achieved some career goals. Entry level people probably have no idea what they're looking for, but just have some skills out of school and are looking to learn. Again, it's the middle group who really have something to prove. You want to make sure that your candidate has some goals, and he's on the path to reach them. The actual goals aren't very important, it is that there is a career plan being executed. It shows forethought, direction, and purpose. The one exception to this rule is if the candidate's career goals don't map to your field. For example, if someone came in and told me their ultimate goal was to save up some money and move to Outer Mongolia, and they are 4 months away, I probably wouldn't hire them. Outside of that, you're in good shape.

I'm sure that there are other beneficial characteristics to look for, but these are a few that I use. Anyone who'd like to post more tips, please comment this post. And remember, interviews can never determine if someone will be a successful candidate or not. Interviews can only increase your probability of selecting a good candidate, and all you are trying to do as the hiring manager is to hire the candidate with the highest likelihood of succeeding.

Here are some other links around the web that I've found as good reading.

  • Guy posted a reader's email – Link
  • article – Link

This will be a future post, but here are some postings about how to retain talent once you hire them.

  • Why Developers Leave – Link
  • Harvard Business School on Lost Motivation – Link

Technorati : , , , , ,

Posted in program management, Software development | 3 Comments »

Upcoming Posts

Posted by Program Manager on June 8, 2006

I thought it might be nice to post a list of the initial topics I plan to post on. I'll update this post with links as I post the content

In no particular order

I'm open to any input for other topic suggestions. Like I said aboe, I'll be posting in a fairly random order, but I'll be trying to post at least one topic a week.

Technorati Tags: , , , ,

Posted in program management, Software development | 1 Comment »

Comment if you see me …..

Posted by Program Manager on June 8, 2006

I have no idea whether anyone is actually reading this blog or not. I followed all the steps I could find, registering on technorati, bloglines, feedburner, etc… If you actually are reading this blog, just leave me a quick comment. Any feedback on what you’d like me to write about would be fine too. I’m just wondering if anybody “hears” me.

Posted in About | 5 Comments »

Abu Musab al-Zarqawi is dead

Posted by Program Manager on June 8, 2006

Breaking news, I'm sure there will be plenty more coverage by mid-morning.

 Full Story

Posted in News and politics | Leave a Comment »

Finally, a (somewhat) fair comparison of Windows Mobile vs. Blackberry

Posted by Program Manager on June 8, 2006

Well, the research is Microsoft hosted and funded, so of course it is somewhat biased, but it is not a rediculous endorsement of Windows Mobile.What I'm really hoping for is that the Motorola Q (Link) will help bring Windows Mobile to the general mindset as a real competitor to Blackberry.

Personally, I've used three different smartphone platforms, Blackberry, Windows Mobile, and Symbian (Nokia, Sony Ericsson), and my personal preference is the Windows Mobile platform. The reasons for me are fairly straightfoward: Multi-tasking, familiar Windows interface, easy synchronization with Microsoft Exchange, 0 incremental cost for my IT organization to support real time device mail push, and the ability to develop my own applications. Yes, I know I could develop for Symbian or Blackberry, but I am skilled and comfortable with the Microsoft dev platform, and it is virtually no effort to write for the WM platform.


White Paper

Technorati Tags: , , , , , ,

Posted in Cell Phones, Windows Mobile | 1 Comment »

Dopod S300 / Qtek 8500 Mini-Review

Posted by Program Manager on June 8, 2006

This post has been moved to my new blog address: Link

Technorati : , , , , , ,

Posted in Cell Phones, Windows Mobile | 1 Comment »