Before I explain what I mean by “Effective Software Teams,” first I want to be clear on what I don’t mean. Do a search for “software best practices” on Google or Bing. Great stuff. But I’m not talking about that. Don’t get me wrong: best practices are important. But your company could do all those things perfectly and still not be as effective as they could be. I know. I’ve seen it before, many times.
Why? Because it’s not just about the mechanics of the software development process. It’s about the interaction and communication—or lack of it—between the people creating the software and the rest of your company (and, frequently, the people who run it).
Effective software teams have seven skills:
- Aligning all technology investments with business objectives. As basic as this sounds, often this just doesn’t happen, usually because senior management assumes everyone knows the business objectives and how they relate to the company’s software projects. Sometimes that’s true. Often, it’s not.
- Understanding the customer. This starts with knowing who your customers are. Is the project/feature aimed at consumers, advertisers, or partners? Paying customers or non-paying customers you hope to convert? Enterprise customers or small business? You’d be surprised how often people are confused on that most basic question. But that’s just the starting point. You also need to know your customers’ most important problems and greatest unmet needs, and most importantly, what, specifically, you plan to do for whom.
- Allocating the most resources to what delivers the greatest business impact. This doesn’t mean you have to re-organize all the time, and it doesn’t mean you have to centralize all of your software employees in a single resource pool. It does, however, mean that you think about your business objectives first and your org chart second. Many companies get this backwards: resources are allocated via the org chart, which makes it difficult to allocate resources based on a rapidly evolving business environment. Even worse, sometimes rigid resource pools define the projects themselves, for example: we have X people who work on area B, therefore we must fill their capacity with B-type projects, whether the business and its customers needs them or not. Of course, if no one knows what the business objectives are, it’s hard to get this one right.
- Delivering consistently and on schedule. Of the seven skills, this is the most dependent on how well a team follows best practices. But even if you have a well-oiled machine, you need to know where you are going, the path you plan to take, a realistic idea of when you’re going to arrive, and minimize the number of unplanned stops or detours.
- Giving all stakeholders a voice. A stakeholder, literally, is someone who has an interest, or stake: in this case, in the successful outcome of a project or a set of projects. It’s all the team members, certainly, and the business owner and/or customer who’s asking for the project(s). Depending on the project it could be marketing, or support, or even legal or HR. The trick is doing this without a heavyweight, bureaucratic process, because that doesn’t work either.
- Minimizing wasted effort. This can mean many things, but it’s often about not starting on a solution before you completely understand the problem.
- Managing execution risk. Of the seven skills, this is the one on which there is the least awareness, yet which perhaps impacts teams the most. In the world of finance, risk management is relatively well-understood (alas, if not always consistently practiced, as we learned in 2008). In the world of software, however, the concept is virtually unknown. The funny thing is, managing execution risk is not difficult, and teams already know how to do it. The problem is that they often don’t know when to do it, or to communicate to senior management when and why it’s necessary. If there’s a secret sauce to the Roadmap Integrity planning process, this is it.
The takeaway? Today, being an effective software team means more than following software development best practices. That’s just where it starts. Effective teams have seven skills which they use to outperform their competition.
Tweet this: @bill_bliss New post: Seven Skills of Effective Software Teams http://wp.me/p1pkik-A #prodmgmt