Part of the question may be how do you change the users expectations.
If you are building a product the user already knows, that might not be difficult.
We work in the sleep space, where everyone expects a hypnogram and a sleep score.
Even though these things don't actually tell you anything real. They are of little value to most people, but that is the expectation.
The one I get constantly is we want "custom reporting". Well what the hell is that really? Why, why, why do you need that? Then I just build a new feature they will actually use and defer "custom reporting" for another month.
I worked with a guy who specialized in custom reporting tools and pipelines. He said that a majority of the time people are asking for custom reporting tools, it’s because the app’s built-in tools for sorting/filtering/aggregating data aren’t answering the questions they are asking.
Now whenever someone brings that up, I ask “What question are they wanting the answer to?”. It usually leads to either a new feature or just clarifying where that question can be answered. Looks like you’ve caught onto that same school of thought.
Sometimes people just want to feed data into their own warehouse so they can query data across different pieces of software, or they are too stubborn to get to the bottom of what question they’re trying to answer.
I see this all the time... custom reporting, reports... I have seen this so many times in so many places and I wonder why the fuck are people asking about it. Most of the time they have little clue of what they want reported, or how they want the data to look like. Nearly 100% of the time what they mean by reporting is "join all the tables that have a foreign key, force join all the ones that do not have a foreign key by using a union against some arbitrary value picked at most-likely-to-be-the-right-one and dump everything on an "excel spreadsheet". This is the golden standard most people go by.
I would say that 'what not to build' is the second most important decision.
The most important decision is what limitations and constraints you are prepared to accept. There are always limitations and constraints but they are rarely identified up-front.
The most difficult, hard-to-revert decisions are those related to hard constraints imposed by the systems and/or data you have to rely on. Maybe it's not physically possible to obtain the data you need to solve the problem you need to solve for the price you need for it to be viable. Maybe you need to be able to process large files which may take many hours to complete. Or your input data grows father than you can process on a single CPU core. Or the security requirements of a particular piece of data means that you can't efficiently connect it to some external piece of data as you need.
If you are building a product the user already knows, that might not be difficult.
We work in the sleep space, where everyone expects a hypnogram and a sleep score. Even though these things don't actually tell you anything real. They are of little value to most people, but that is the expectation.
As an engineering leader you’ve got to advocate for it against product/design all the time.
Now whenever someone brings that up, I ask “What question are they wanting the answer to?”. It usually leads to either a new feature or just clarifying where that question can be answered. Looks like you’ve caught onto that same school of thought.
Sometimes people just want to feed data into their own warehouse so they can query data across different pieces of software, or they are too stubborn to get to the bottom of what question they’re trying to answer.
The most important decision is what limitations and constraints you are prepared to accept. There are always limitations and constraints but they are rarely identified up-front.
The most difficult, hard-to-revert decisions are those related to hard constraints imposed by the systems and/or data you have to rely on. Maybe it's not physically possible to obtain the data you need to solve the problem you need to solve for the price you need for it to be viable. Maybe you need to be able to process large files which may take many hours to complete. Or your input data grows father than you can process on a single CPU core. Or the security requirements of a particular piece of data means that you can't efficiently connect it to some external piece of data as you need.
I’m not building space elevator.