Hi I started a new web development company and have some clients. At present one of my clients regularly complains about loss of time and poor quality of the work. How can I simultaneously increase the efficiency of the team, the quality of the output, and reduce the time spent on development?
The principle is that all projects involve a tension between three factors: scope, cost and schedule. Some people use scope and quality interchangeably, while in other cases (including the diagram above) quality is seen as the factor affected by each constraint. A useful way to think about the triple constraint is that - generally speaking - imposing a limit on two factors will increase the third, so a project with huge scope and a limited schedule is probably going to cost a lot. Similarly, a project with a tiny budget/limited resources but huge scope is probably going to take a long time.
Now, in your particular situation you want to maintain quality/scope while reducing or maintaining schedule commitments. That probably means that your costs need to go up. The important thing to remember is that cost isn't just about cash, it's also about resourcing. If you want to maintain quality and keep everything on schedule you may need to hire more staff - this will ultimately cost you more but will mean you can actually deliver what you've agreed (which is presumably what you're being paid for!)
If you feel like your team is properly resourced but isn't working efficiently enough then you may need to review your working practices but my instinct is that your problem is really to do with under-resourcing or over-commitment. Be good to hear a bit more about how your team works now so that the community can share their thoughts on it.
I would like to add my thoughts as follows:
Understand what your one of the client complaints "At present one of my clients regularly complains about loss of time and poor quality of the work.".
Get the specific details about what he meant by poor quality and loss of time. How can you fix the quality issue you have and how can you avoid the loss of time. The more specific inputs you get from your client you would be able to improve the same.
If whatever client says is true acknowledge the specific inputs and issues from him and go with strong action plan to solve those and get a strong buy in from him on your plan too and assure him that these actions items and plan should solve this issue permanently. Implement the leanings from this to all other tasks too. Hope this helps.
This is a real problem that many teams face. The first is to start empirically observing the problem and start adapting to make changes to improve.
What you need to do, is really inspect your situation with you team to find out why this is happening. Then start making changes for the future. You need to learn from your mistakes
Willl is more likely correct with the iron triangle, however I would say you know your situation better than any of us. What you need to do is a little retrospection.
Insanity: doing the same thing over and over again and expecting different results. - Albert Einstein
You can't. However according to Jason Cohen's studies in Best Kept Secrets of Peer Code Review, the cheapest way to improve software quality is introducing peer code reviews in your development process. I think it is really worth giving a shot :)
As for productivity I think that you have to motivate better your team. Maybe some trainings and courses also would be a good investment.
efficiency of the team: Efficiency itself means good quality and better productivity. the quality of the output: This can be improved using multiple strategies
- Agree with the client about quality goals for various stages. You cannot achieve quality without defining it.
- Generally speaking lower defect delivery should be a goal. For that you can create coding check lists, code review, unit test plan review.
- Ensure that various defects are logged and later analysed using pareto diagram (or any other tool). Try to figure out why you have defects and fix the issue
reduce the time spent on development
- Again you need to ascertain how much Time spent of development is right amount of time. You should define your productivity figures and then you can decide on strategy
- Generally speaking, creating reusable components, automating manual tasks, training the team in the technology you use and keeping a good working environment will more or less ensure that you have good productivity.