And why not all condos come with a washing machine
If you have ever gone condo-hunting, you might have come across one place that’s “almost perfect” and thought “If only they had X or Y”. Clearly, they can afford it! Why don’t they get a microwave or a washing machine? Why not increase customer satisfaction and sales for a tiny tiny investment? Well, brace yourselves as I shatter this “sales/satisfaction for cheap” argument in the next few segments.
First of all, this example perfectly applies to software as well, and project management in general. So when I talk about washing machines or microwaves, consider those analogous to potential additional features you might include in your product.
Both project managers and software engineers often try to cram more features in a product thinking they can impress the client. More often than not, the client is not impressed and they end up investing more than they can afford in project time, cost, and maintenance debt.
Let’s first introspect a bit, why on earth do we feel inclined to add more features than what is required? Well, the good news is, you might be comfortable with what you are doing and possess the skills to do more than what’s required. The bad news is, you are probably not estimating the time correctly, you are a bit inexperienced, AND the user is unlikely to be impressed with your fancy features.
This brings us to the next logical question, why won’t the users be impressed? Those ungrateful spoiled brats! Well, two reasons:
- You probably don’t possess psychic abilities.
- Inherent negativity bias in human beings.
Let’s go back to the washing machine example. Because you are a wonderful property owner, you put a washing machine in every single condo and you didn’t increase the rent cost, what an insightful person you are! Those who don’t want to use the machine won’t, those who need it will, it’s a win-win!
Except, prepare for complaints about the washing machine being too noisy or leaking or not having extensive wash programs (yes, people complain about that). Actually, someone would rather have more space under the kitchen board to put their unused pots so can you please take that useless washing machine to storage? Oh, you have to pay for more storage space? Sucks to be you. BTW, you better upgrade this thing every few years. And don’t forget to make more money and have more satisfied customers!
Exit psychic abilities and enter research
Simply adding a washing machine won’t cut it, so it seems. You might have just opened pandora’s box of requests and complaints. More customer satisfaction they said, it will cost almost nothing they said.
An argument can be made here that some people would have been turned off by the lack of a washing machine and would rather rent somewhere else. Exit psychic abilities and enter research. The decision to buy a washing machine should have been inspired by solid market analysis. How many people actually asked for one? How many of them decided to rent regardless? How many free condos do you have on average? Can you increase the price for condos with a washing machine? What’s the recommended percentage of condos to put a washing machine in? How long do washing-machine-loving customers rent on average and how does that compare to others?
Additionally, if your decision was based on thorough analysis, it would necessitate its own project or sprint. It won’t be part of your MVP or an add-on to a completely different scope. Just as a thought exercise, try to think of reasons why or why not to buy a microwave and share your thoughts in a comment.
I’m sure most readers have already picked up on what I’m trying to say with the washing machine example but, after all, this is a software-focused article. So how exactly does this apply to software projects?
A project manager or a software engineer thinks it’s a super-awesome idea to add feature X. They go on to develop this feature and after the deadline getting pushed back a week or two, they finally finish thinking it was worth it.
So here are a few different things that can come out of pandora’s box, that is, if the client notices the feature at all!
- It’s broken! Looks like you didn’t cover all the corner cases and urgent unasked-for maintenance is now due.
- Ok that’s a decent feature but can you do Y on top of/instead of X? Y will take you a sprint to do. Do you say no or ask for extra payment and upset the client? Maybe just swallow the cost? Either way, you lose. Looks like you forgot to propose your idea first.
- Actually, this feature is confusing my team and they might misuse it, can you disable it? They are the smartest I can afford to hire, sorry about subverting your expectations, I guess…
- Upgrading the application, exciting times huh? Except remember that useless feature you added a few months earlier? It’s proving a bit problematic. So you can feel free to omit it and upset the 5% of your users utilizing it (or the client, by proxy) or spend a week or two trying to get it to work in the new version. Such a fun decision to make!
- Oh btw, a few useless features down the line and it looks like bugs have been getting a longer and longer lifespan and we have a bunch of angry users. We need urgent maintenance. Do we pause other projects and potentially miss on opportunities? Or maybe we can hire more developers, increase our maintenance costs, and introduce a bit of newcomer’s chaos into the team! Or perhaps we can just ask everyone to commit to deadlines and work unpaid overtime and risk them suddenly disappearing to work somewhere else that is more organized and less stressful. What can go wrong with constant recruitment costs and team chaos?
What do we do about it?
It’s your job to have a proper conversation with the client/users to help them understand and convey to you what they really want.
Make a plan and stick to it! You might think that this is easier said than done but, let’s think about it. You do want to impress the client, maybe you are worried they will go for another provider if they don’t like the product and you don’t want to scare them off with too much commitment. Maybe you think you will lure in more users with nice features. You want to impress them by giving them “extra value” or “special features”. So far so good but the moment you decide you know what they want, things go south.
The best way to design a wonderful product is to do your homework beforehand. Do research, write user stories, have conversations, and most importantly don’t assume you know what the user wants! In fact, do you think they even fully know what they want? It’s your job to have a proper conversation with the client/users to help them understand and convey to you what they really want.
You should also realize that everything has a cost. The immediate cost might seem plausible but how about future costs? Software is not too different from a washing machine. You will need to maintain it and upgrade it. Every time you upgrade the frameworks you are using or move to new technologies, that feature is going to be a task “make sure it still works”. Every time a user finds a scenario that breaks it or an OS/Platform update renders the way it’s implemented obsolete, you will have to maintain it. So, think ahead!
So, before adding a new feature, think about the following points:
- Has the user requested this? Otherwise, is there any research/statistics to back up your claims? Do you have psychic powers?
- Have you properly estimated the implementation time?
- Have you thought of future maintenance costs? Is it worth it?
Finally, make sure to follow if you don’t want to miss the upcoming articles providing similar analyses for other software and project management issues. You can also check my previous article, Why Engineers Cannot Estimate Time, if you haven’t already.