I asked him how the location of products is stored now. "Is there a system, a database that keeps track of where in the store, on what shelves, product is stocked? Something the app could use so it knows where your pasta can be found?"
He didn't understand the question. So I asked him how workers who stock the shelves know where to put what products. There must be a system that gives the workers that information, right?
"Oh no", he said, "there is no system. They know through experience and gut-feeling."
It seems so inefficient. I can sort of understand having the garden center on either side of the building depending on the lot but the inside of the store being different from location to location is baffling to me.
Wouldn't the entire ecosystem from people who stock shelves, to customers to store managers benefit from an identical layout in every store nationwide?
I'm picking on home depot here but the same question could be asked of any big box store.
From what I can tell, it's based mostly on optimizing to the local foot traffic. The one that throws me off seems to be more consumer focused. It's in a suburban area and has a _lot_ more internal space dedicated to home decor (lighting, curtains, flooring, etc). Then every other department seems to be rejiggered like Tetris blocks to fit within the remaining space.
The store with the more intuitive/familiar layout has mostly the same product assortment, but far less space dedicated to displays and "consultation" style areas (the consumer oriented store has an entire section carved out for custom curtains, complete with an associate consultation counter).
Perhaps they simply don't mind customers having to wander or ask though.
I wasted a 3-4 minutes of a Safeway employee's time in this way the last time I was there a few days ago (I couldn't find birthday candles).
Theoretically, the solution you described would probably save a ton of money overall. I have no doubt it will exist in the not-so-distant future.
I.e. In order to replace those store employees, you have to build all your buildings the same way, stock them in a certain way, hire maintainers to input tracking data, hire auditors to ensure customers aren't tampering with the store.... So on and so forth.
It'd be a great way to protest though. Every customer goes out of their way to disorganize the store until they hire locals.
Of course the economics has to justify it. And they will. Everything you say could be applied to just about everything that has been automated in the past. I mean, it sounds like someone arguing "but librarians can do this or that that Google can't do." And yet, most of the time, when we need information, we can find it a whole lot more quickly than going to a library and asking someone for help getting us what we need.
In this case, there will still be store employees if the system fails to identify what a customer wants. But that will be the exception, and asking for help finding things will be like, today, someone asking for directions at a gas station. Most of the time, you can just say "where are the birthday candles?" to your phone and it will tell you, and it will have been far less effort for both the store and the customer vs. having to go find and employee. (and yes, I'm counting development time, entry time, and all that, averaged out)
For a typical Safeway or Home Depot or Target, there are already tons of benefits to keeping track of their inventory and where it goes on shelves. It's already almost certainly in a database somewhere. They need this so they don't have to spend so much time training employees, for one thing.
I guess all I can say is, come back in 5 years. I'd bet big money you will see this, whether in Google maps or in the various apps by retailers. (I mean, even 10 years ago their was an app that did this on some level: https://mashable.com/2010/11/22/aisle411/ )
Okay, I assume the client's next question would be: "Why does it take 10 years and 10 million dollars?"
Check out this image search, for "grocery data cleanup robot": https://www.google.com/search?q=grocery+data+cleanup+robot&r...
The merchandising information is typically well known along with product taxonomy, but the mapping of this relative information to a physical layout isn't always cleanly implemented or available.
A typical scenario is sku 85111 is grouped in a product hierarchy (family > sub category > subdepartment > department or the retailer equivalent) and that sku is assigned to a planogram or set of planograms associated with a display fixture (which sometimes have a hierarchy of their own (e.g. peg > shelf > section > aisle) with mixed relative distancing. There's generally a departmental divide between who manages product and merchandising information.
Many of these robots to my knowledge use the products or special tags as unique identifiers as opposed to an indoor-positioning system that ties back to an exact product location. So it's frequently easy to say that a product is in aisle 20 section 2 shelf 1 it's not easy to say from your current location go down 8 aisle and up half an aisle, look on your left.
Work backwards from the customer need. If they truly need this system, and are willing to pay for it, then it sounds like what you need to build is:
* A database for product taxonimies/locations * An internal tool to make it easy and quick for staff to go through and log the locations of products to build out the data model * The actual maps UI and display tech.
The thing is, this might not even be that much work. It's all a factor of how many "categories" the store expects customers to be able to search for. If the granularity level is "pasta", you can probably get away with 100 entries, and 1 days of grunt work for a staff member to log the location in the store where "pasta" and "coffee" and "condiments" etc are.
This story is not a good example of a difficult customer or a difficult technical problem.
i get it, you're trying to give an example of an impossible request, of which there are many, but this just isn't one of those.
Pissing off an enormous number of customers in the process. You will run out of customers at the store willing to use such a useless app before the thing learns where the pasta is.
Your stock person idea makes sense if they keep the shelves stable, but "gut feeling" organizations tells me that things can shift around over time.
and you can give an incentive to customers. give them a 10% discount on their total order when they checkout, if they've reported the correct location of an item. don't tell them about it until they checkout, to avoid gaming.
there's many more ideas here, i don't need to iterate through them all. i'm impressed by the lack of creativity on this subject.
> things can shift around over time.
not just that, but products come and go. it should be obvious that this is an ongoing task when stocking, not a one time inventory location task.
In other words, nobody has an idea how it will work. ML doesn't generate essential data for you, or solve problems which you cannot reasonably describe a solution for.
i actually do think that customer-finding is a good approach, but it's up to the client to decide isn't it. the comment i'm replying to was about impossible requests by clueless clients, not about bad but possible implementations.
even if the idea is in fact bad, which again i dispute, it's always good to give a client an alternative that stinks, so that the idea you want them to accept seems "obviously" good. i forget what this technique is called.
EDIT: after an hour of searching, I believe it's called a "duck". based on the legend of Battle Chess, but of course the technique has existed long, long before Battle Chess.
I spent a goodly amount of time preparing a questionnaire about the client's business needs and purposes for doing ad-hoc database queries. None of the questions were leading or simply offered up a feature. They required some thought and would yield useful information.
The project manager was baffled by it. NO! he said, clearly flummoxed by this divergence from what apparently was his (and perhaps the firm's) lazy, half-assed approach: Look up all the available products for the customer's task, put all of the features they claim to offer in a big list with checkboxes next to them, and hand it to the client. This is exactly what I was told to do, in the rebuke I got for doing it right.
I referred to this as the grocery-list approach. Of COURSE the client is going to create an imaginary need for most of the features and check them off. Who wouldn't?
Another great example is "customizable UI." How many thousands of man-years of work have been wasted on this boondoggle?
A business software developer's job is to help the people you described overcome those problems.
Some have more money than others. Some are smarter than others. Some are better people than others. But ultimately, that's the job.
That's the job, it's a huge job taken a whole and to do that job, a variety of systems have arisen; object orientation, functional programming, agile process, etc, etc. All of these tools for helping to decrease complexity. And professions are generally studying at least some of these to "up their chops", so to speak.
The thing is, I think the GP was responding to the OP's headline "customers do not ask for software complexity". And the thing is, of course customers ask for a variety things that imply complexity. And, unlike what the OP's discussion, the particular soft approaches that been partly, however much, successful in preventing customer demands from spiraling into unmanageable complex have been ways of dealing with discreet, defined, parts of the development process. The problem with the OP, the article, is that it's a panacea, a vague and general call to make complexity unnecessary with either only a vague explanation of how to do this or an explanation hidden under several layers of rhetoric. "But designing simple software solutions is not simple and requires good principles along with solid experience." I could substitute "supply chains" or "aerospace solutions" and have something plausible sound though I know little about these. Which is to say I don't see OP offering things to make my job (or my former job) easier.
That's a claim one could make. If you're going to make it, you need to be ready to defend it. "A implies B" is typically not the case in the sense of "gravity causes objects to fall towards the ground".
There is code that I literally prototyped myself in a week and that I am told would take years to rewrite by IT.
What you have is incredibly common in non-technology companies. Good engineers are now very hard to recruit and expensive. Unless your company values them enormously, your engineers are going to generally be pretty mediocre[1]. On top of that, your company isn't going to understand engineering projects - when you need to invest in infrastructure, tooling and technical debt.
These factors together multiply up over time until everything grinds to a halt.
[1] An aside - in my experience of organisations like this and also mediocre engineering organisations, there is usually one guy who knows his stuff, and is holding it all together. Some of it is like Brent in the Phoenix project, but some of it is that the rest of the people are just rubbish.
More commonly it's a lack of ambition and a comfort with where they are. They're happy with their environment, they don't want to to risk the change and they don't see why they would. They may have only worked in that sort of place (or only in that one place), and haven't seen how much greener the grass might be elsewhere.
Its difficult to see all perspectives in organizations and operations as complex as this.
That's generally why management gets paid what it does. Although they're not any more immune to this exact problem...
This one. I'm primarily familiar with the "internal customer" scenario, and so it becomes uncomfortable to have to go back and forth clarifying details that are crucial to the development of the solution but seem trivial or even entirely inconsequential to the 'customer'.
It highlights the size of the knowledge gap between 'customer', who's been doing their process for years and 'developer' who's just finished a project for a completely different aspect of the company and is therefore a blank slate as far as this new project.
Another poster mentioned sitting with the people that actually do the process. I can't see a good solution being possible without this - one way or another. That's the role of the Business Analyst isn't it? The translator between requester / user and developer.
There are many questions only relevant to the digital domain.
That's just one more layer between you and the person doing the work.
That usually gets them to rethink that one.
Some Agile here is also a good way out of these kinds of things. Quickly build something they can complain about, then fix it. Either they will start to take responsibility for their software (that is clearly theirs) or they will just keep burning money and that will put an end to it too.
However, who you are describing is actually a bad customer. So make sure you get PAID very regularly as you are on this death march and if you ever do not get paid, stop work immediately.
Indecision and abdication of responsibility are hallmarks of an incompetent customer.
I always found they assigned the most junior and inexperienced person on their team to liaise with the developers.
Eventually I started putting a risk section in the proposal that covered stuff like this. What I found was the more they pushed back on the risks the more likely the risks would occur.
Ps. Raising prices mostly helps
I have never heard of internal customers, I have heared of internal projects ;) . But then the cost are not discussed, deadlines are.
And it's still the mission of the product manager to coordinate features to build.
In case it's only 1 developer, he has to take the lead and say pro's and cons.
Most of the time the billing is just budget shuffling.
They want it quickly so there is no time to plan.
They want it cheaply so there are no resources to test.
They want it according to the drawing they prepared which you then later need to find places to stuff any extra features they ask for later.
They quickly get tired of answering clarifying questions about it and ask developers to "just figure it out." They also don't really care about reliability, or at least that doesn't come up much in discussions.
They insist up and down that their use case is unique and that the way they do things cannot be modified.
They have immensely complex business rules they never wrote down and can't agree on the details of as when the process was done by humans, the answer was up to the human.
So they may not ask for complexity, but that is the end outcome of everything they do ask for.