September 26th, 2006
Product Management: Part 3
Time for another installment! This time I’d like to tackle the relationship between Product Management and Development. Part 1 alluded my opinion that this relationship should be close. Anthony kindly pointed out in Part 2 that some designers think product managers should “bugger off” when it comes to imposing too much design input. That may be the case, but my personal experience suggests that most developers appreciate that sort of direction. Regardless of when product management ends, and development start, some sort of framework for working together should be established, and indeed carried over throughout all product management interactions. At least I think so…
With Nuvvo, I didn’t set out with a specific methodology in mind, but common sense simply led us in the direction of one. Agile Development. The more I’ve read and the more I’ve practiced, the more the mere thought of the good old Waterfall model makes me shudder. Please oh please don’t ever make me go back to that again! Not only does it not work well in practice, it makes one’s job boring. Too much structure strangles creativity, reduces efficiency, and makes what should be fun mundane. I’m not saying that you shouldn’t plan, and do the research required. I’m just saying that you shouldn’t treat product managers like French bureacrats, filling out templates.
Agile development appeals to me because it doesn’t assume you’ll get it right the first time. It doesn’t make you feel bad for changing course as new information becomes available. It does make you work closely with your development colleagues. It gives you a sense of accomplishment every step of the way. It acknowledges that software is not like manufacturing a nail - you don’t build the same structure over and over, within limited input constraints. Software, and especially consumer facing software, is alive, and needs a personality. It needs to change depending your customer’s ever changing wants and expectations.
So, developers, product managers, project managers, and software aficionados of the world, tell me your choice method for managing software projects and why. If it’s Agile Development, what flavor (ie Scrum). If it’s something else, why are you using it and why? Don’t be afraid to agree.
There are two levels here: the macro level where the customers/users are involved (at least potentially), and the micro level where only the software development team operates.
At the macro level, I favour agile development. This requires that the customer be available. If you’re a product manager and can “be the customer yourself” there’s no problem, but not everyone is so lucky. Lots of software projects are given at least partial specs that they are required to follow, and getting changes made is often difficult.
At the micro level, my preferred method is to get top programmers and, apart from establishing certain standards such as proper source control, use whatever approach works well for *them*. Top programmers tend not to take kindly to having things forced on them just because the manager likes them. Furthermore, making a big change just because I like it will probably seriously interfere with productivity. The one exception here is that I like everyone to do unit testing: many programmers resist it, but it dramatically reduces the chances of bugs lurking undetected deep down in the code, which “makes it my business” as the manager.