How to educate business managers on the complexity of adding new features? [duplicate]

We maintain a web application for a client who demands that new features be added at a breakneck pace. We’ve done our best to keep up with their demands, and as a result the code base has grown exponentially. There are now so many modules, subsystems, controllers, class libraries, unit tests, APIs, etc. that it’s starting to take more time to work through all of the complexity each time we add a new feature. We’ve also had to pull additional people in on the project to take over things like QA and staging, so the lead developers can focus on developing.

Unfortunately, the client is becoming angry that the cost for each new feature is going up. They seem to expect that we can add new features ad infinitum and the cost of each feature will remain linear.

I have repeatedly tried to explain to them that it doesn’t work that way – that the code base expands in a fractal manner as all these features are added. I’ve explained that the best way to keep the cost down is to be judicious about which new features are really needed. But, they either don’t understand, or they think I’m bullshitting them. They just sort of roll their eyes and get angry. They’re all completely non-technical, and have no idea what does into writing software.

Is there a way that I can explain this using business language, that might help them understand better? Are there any visualizations out there, that illustrate the growth of a code base over time? Any other suggestions on dealing with this client?

5

A few pieces of advice. First, use an analogy – pretend you were implementing this without computers, such as doing it by mail (not E-mail). As you add features, visualize the form customers fill out getting more and more complex. Think about the increased breadth of skills required by staff and the number of staff required to fulfill each function. Talk about the increases cost to manage the increased staff, such as management, training, HR, payroll and so on. Computers can do this faster but most other aspects still apply.

Second, gather code and QA metrics such as the number of bugs found, code complexity, automated test coverage, time to develop, time refactoring (if any) and so on. If you have QA, capture the number of tests required for a full regression and the time needed to run them all. Support increased costs with facts makes them much harder to argue with. Even a simple diagram showing the number of and interdependencies between different modules may help.

Third, gather analytics about how customers use your software. If you create a feature no one uses, being able to point to an automatically generated, auditable source of truth can help you prioritize work (at worst) or avoid unnecessary features (at best).

Fourth, get an outside opinion. This may or may not be viable depending on the company size and structure but pull someone senior in from elsewhere and get an unbiased opinion. They will likely suggest a mix of improvements to development practices (a win for you so you can get time for refactoring or increasing your output) and better prioritization of features (also a win for you so you have fewer, better features). Alternatively, suggest relevant reading like “The Lean Startup” by Eric Ries.

Last but not least, try to understand the business case. Why do you think the business is driving these new features as hard as they are? Are they trying to keep up with competitors? Are they under pressure from their management to deliver? Perhaps the people driving you are the symptom and not the cause. An “us and them” mentality is counterproductive. It may be extremely difficult at first but this will help you in the long run.

I have been in your shoes before. And its a little more simple than you think. Put yourself in their shoes. Which means you need to stop using words like fractal and code base… they have no idea what that means. I am not trying to be mean here. However, you need to address your audience in a way that they will understand. In my case I fully involved them in the development process and made sure they knew what each resource was doing and how adding a new feature would impact that resource. You may even have to reveal cost to them by letting them know that, this engineer who is working on the feature you asked for last week is getting paid x per hour. You now need him to split his time to work on these two other features you are wanting next week. He is the only engineer on the team with that skill. The business managers need to know a lot more detail but in a less techy way. Does that make sense?

I am using simple way to manage requests for adding new functionality.
Each new functionality that out of initial scope should be estimated.

So when customer asks to add some feature, I and my team think what should be done, and how
it could be done. When we have all necessary information we prepare estimations and
describe what parts of the system should be updated to have requested feature done.

Without many technical words. And when customer see ETA he can calculate final price.
Then he decide, do he want this feature or not.

Do not agree on each customer request without any word.
Each feature should be discussed, agreed and estimated.

Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa Dịch vụ tổ chức sự kiện 5 sao Thông tin về chúng tôi Dịch vụ sinh nhật bé trai Dịch vụ sinh nhật bé gái Sự kiện trọn gói Các tiết mục giải trí Dịch vụ bổ trợ Tiệc cưới sang trọng Dịch vụ khai trương Tư vấn tổ chức sự kiện Hình ảnh sự kiện Cập nhật tin tức Liên hệ ngay Thuê chú hề chuyên nghiệp Tiệc tất niên cho công ty Trang trí tiệc cuối năm Tiệc tất niên độc đáo Sinh nhật bé Hải Đăng Sinh nhật đáng yêu bé Khánh Vân Sinh nhật sang trọng Bích Ngân Tiệc sinh nhật bé Thanh Trang Dịch vụ ông già Noel Xiếc thú vui nhộn Biểu diễn xiếc quay đĩa Dịch vụ tổ chức tiệc uy tín Khám phá dịch vụ của chúng tôi Tiệc sinh nhật cho bé trai Trang trí tiệc cho bé gái Gói sự kiện chuyên nghiệp Chương trình giải trí hấp dẫn Dịch vụ hỗ trợ sự kiện Trang trí tiệc cưới đẹp Khởi đầu thành công với khai trương Chuyên gia tư vấn sự kiện Xem ảnh các sự kiện đẹp Tin mới về sự kiện Kết nối với đội ngũ chuyên gia Chú hề vui nhộn cho tiệc sinh nhật Ý tưởng tiệc cuối năm Tất niên độc đáo Trang trí tiệc hiện đại Tổ chức sinh nhật cho Hải Đăng Sinh nhật độc quyền Khánh Vân Phong cách tiệc Bích Ngân Trang trí tiệc bé Thanh Trang Thuê dịch vụ ông già Noel chuyên nghiệp Xem xiếc khỉ đặc sắc Xiếc quay đĩa thú vị
Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa
Thiết kế website Thiết kế website Thiết kế website Cách kháng tài khoản quảng cáo Mua bán Fanpage Facebook Dịch vụ SEO Tổ chức sinh nhật