9/29/2005

What can you do about over-commitment?

I just heard a fellow on NPR talk about his book called Results : Keep What's Good, Fix What's Wrong, and Unlock Great Performance. His name was Bruce Pasternick. Someone called in and asked him about the increased workload in the corporate world today. He pointed out that employees have been taking issue with this forever.

The Internet boom and follow-on Tech bust may make you feel like the problem is worse today. Do things on Internet time with less people. The squeeze is on. Large companies play catch up and leap frog quicker with competitors. Small companies get led around by customers for new features and products. Your employees either get burnt out or ignore the pressure and work to the level that meets there abilities like water seeking it's own level.

The results are unhappy customers with missed expectations and unhappy employees with little in the way of sanity or home life. Is there a way to do it all and within budget? Is there a way to retain your humanity along the way? There are good solutions to this issue and like all good solutions everyone will have to compromise.

It is all back to basics. Here are the steps to avoid over-commitments:

  • Create a budget
  • Get buy-in from product management, sales and support
  • Instill development hygiene
  • Handle surprises and requests

As a manager, your first job with the highest priority is to get a budget in place with a proposed set of deliverables. Your team has to develop estimates. Everyone hates to develop estimates, but you cannot do planning without them. Divide the work into external work that the customer sees directly and sales cares about and internal work that has to be done to keep the infrastructure going. Prioritize the projects with product management. Make sure you account for ongoing maintenance.

Plan regular frequent, smaller releases instead of larger releases with a lot of features. Large releases are hard to integrate and requirements often change during their development which often leads to delays.

Balance internal and external work in your releases. If you do not have some balance, your company will fail. You need features to meet customer demands and be competitive. You also need the basis and infrastructure to scale and extend your product.

Once you have a budget and plan for releases, you must get buy-in. I favor actual signatures by key stakeholders on the executive staff. Nothing like a signature to make people pay attention. Both the overall plan and individual release plans need approval. Often, you will find last minute intense discussions when you hit this step.

Now you have a budget. Go to work. All of the things you learned now come into play. PRDs, design specifications, architecture, code reviews, automated testing, adequate integration cycles, design patterns, coding conventions, well-defined APIs, detailed schedules, documentation, diagnosability, etc. Pay now or pay later. You can streamline processes and procedures but skipping them will cost you more time in the end.

Finally, the hardest item. What happens when you get a critical new unplanned requirement? What happens when you find a bug in the field that requires unplanned effort from your best resources? This is where many plans fall apart. You need a mechanism to evaluate and approve any changes. You only have four areas you can adjust: resources, schedule, features, quality. If you go back to the same area each time you have a change, your company will fail.

Make sure the business case for fixing a bug or doing a new feature make sense. Make sure the change is weighed against the other work you are doing. Get creative: bring in contractors, find bridge solutions, look at third party solutions, employ swat team efforts, learn how to say no, learn how to sell what you have, etc. Don't start work on a new feature until it is clear how you can afford it.

Don't assume you can just add one more thing your development team has to do without some other change to the equation. Especially when it is the third, fourth, or fifth change! Don't get caught in just saying yes. In the end your customers will suffer will late or low quality products and therefore your company will suffer with lost reputation or sales.

Use these basic steps and you will manage your commitments.

More later ...

9/23/2005

Who is responsible for quality?

I had the pleasure this week of speaking at a chapter of ASQ (American Society for Quality). I chose a topic which is near and dear to me: Roles and Responsibilities. Applying that topic to this venue meant speaking about quality.

I felt I had a big challenge going into a group of quality professionals because both my book and my consulting practice help organizations strive for excellence and that is part of what quality professionals try to accomplish as well. I was heading into their home turf. I was going to preach to the converted.

The way I approached it was to discuss what I would try to accomplish with product development engineers. I asked them to suspend belief and maybe they could use some of my philosophies and techniques to their advantage. With me being the only thing between them and dinner, I was pleased by their interest, excitement and acceptance of the talk.

So who is responsible for Quality? The answer is obviously everyone. If you ever cordon off responsibility for quality to some group you will not achieve quality in your product.

I am also, as I say in my book, a firm believer in having one owner for each task or goal (they may delegate pieces but they must make it happen). So, who is responsible for Quality in a product? The answer is the person responsible for developing the product. No finger pointing, no blame and very simple.

This is a leadership thing. Your leaders must make quality a priority and legitimize time. The must set expectations that everyone must do their part and be held accountable. Without these critical pieces, you will not achieve quality in your product.

So what does this mean on a practical basis? Here is one example that I try to implement in each company I participate in: exhaustive functional unit tests. I require the engineers development products be responsible for the basic tests that prove what they developed works. Code cannot be checked in without those tests complete, run, working and code reviewed just like the product itself.

What does this accomplish? It pushes quality earlier in the cycle, makes it easier to get a quality product and enables accountability. It is hard. It is different. It is effective.

How does this affect accountability? Imagine, if you will, a salesman who sells a lot of product but his customers never pay or we have no idea if they ever pay. There is a reason why commissions are paid out on receipt of customer payment. The same thing goes for software. If a developer codes away and never proves their software works then they are not completing their job and the value to their company is significantly reduced.

More later ...

9/09/2005

Welcome!

This blog is all about helping you and your teams succeed at your goals!

I have moved this blog from it's previous location and will re-post previous entries.