You have explained very well how one should think while designing a product. Your post not only help me but will also help other people who want to know more about product design.As an aside, no product is developed in a vacuum. Even "new inventions" are rarely revolutionary, they are rather evolutionary.
If you are trying to solve a problem, which is what a successful product does, you will have other examples of solutions to the problem or similar problems. You will have pieces of the solution already available and useful to you, and you will have examples of failed attempts (just as important as the successes).
A product design effort is broadly about two things: creating new components and integrating existing ones. Every product is part of a system which includes the user and anything in the environment it has to interact with. This is the reason your hypotheticals fall flat: you are unable to include all the necessary information because you are not dealing with something real.
Many times, in the end, the successful product looks and acts very differently from what is first imagined. This can be mitigated to some extent by focusing properly during the process from conception to delivery on the level of abstraction required for each step.
I've mentioned elsewhere the 4D methodology a colleague and I developed for project lifecycle. The 4 D's are:
- Discover (what is the problem, what is the environment it is in, and what are the constraints?)
- Design (Given the information in the Discovery, what can we create that solves the problem?)
- Develop (Given the Design, what technological and procedural creations will solve the problem in practice?)
- Deploy (Given the developed system, how do we go about delivering it so it will actually succeed?)
So, your question starts in the middle of nowhere. The client is the expert in the problem to be solved. You are supposed to be the expert in characterizing that problem so a technological solution can be created. The list of things you started this with is like something jotted down in the Design phase in some random meeting. It is neither a requirement or a specification on its own.
STEP ONE in a successful product development is to understand what the product will do that makes it useful and valuable. "Storing a picture" or anything like that isn't that. Start with a high level description of what it will be like for the user to use the product to solve the problem. That "story" will drive everything below it. It is the best way to account for all the functional requirements. You start very high level and add details as you work out what is possible given the problem, the operating environment, and the constraints—then you start writing specifications.
For example, you might have a product that needs to communicate with the Internet. When you are describing the actual use of the product you might discover that the product needs WiFI, but also cellular connectivity based on that story of how the product will be used. You might also find, for example, the product must be able to be carried easily, and resist dropping and rain.
This is done in collaboration with the expert on the problem, that is, the customer who will buy it. Sometimes it might not be the people who contact you about it rather the people who work for them who really know how the process of their jobs work and what will make them easier or even doable.
One reason consultants have a bad reputation is because when approached about doing something like "can you make me a handheld device that can read barcodes and send them to our server" they say, "of course I can" and they do, only to have the client discover that it doesn't solve the problem which wasn't the device but what the device was supposed to do.
Suddenly, though the consultant was supposedly engaged to solve one problem (the handheld device), and did it perfectly, the client is very upset the problem they wanted solved isn't. A good consultant works with the client to discover the problem to be solved using the client proposed solution as a way into it. It could turn out the client has done excellent discovery and some design, and your job will be easy going forward. I have found that clients who have to look to the outside have not done so.
What you can expect in the real world from clients is a messy list of things from various phases and at various levels of abstraction. You will find some constraints to be entirely artificial and you have to lead the client away from these when they are incompatible with success within other constraints. You will find a lack of understanding by management of the workarounds used by the workers. You will find attempts to take a system based on manual operations and automate things that are completely unnecessary because of the automation.
In consumer products, you have to talk to the consumers. You have to look at what they can buy now, why they buy it, and how you can have a market for whatever you will make.
All of these things are needed long before a single technical requirement is. You have to understand the problem before you can hope to understand how to solve it.
Many many thanks @Yaakov

