Outside of them all being engineers, there will likely be nothing else that all 1,000,000 have in common.
This is how software is made today, find a job that has a problem and create software that makes things better. So far it has worked great for many companies. The problem is now scale.
My day job involves talking to people about their software usage, and it’s crazy how many times it comes up that SOLIDWORKS has pissed them off due to not working on an issue they are having. I don’t even believe it is something SOLIDWORKS doesn’t care about, it’s just their scale prevents it. If 10 people care about an issue, but 10,000 care about plenty of others, sorry the 10,000 win. With millions of users, the software improvement becomes democratic. Those with fringe needs don’t get met.
While thinking to yourself, well 10,000 people happy and 10 angry isn’t such a big deal, but understand this is a long tail problem. The number of issues that has 10 people that didn’t get resolved is significantly larger than the ones that have 10,000 people. In all likelihood, it could be you’re pissing off more people than making happy.
How can a company resolve this?
Staying small isn’t always in the cards for every company, but there is a likely a critical mass, where it’s time to split your software into tools for new “subgroups” within your audience. Craft new features for them. Deal with problems for them as they arise. If you’re serving 1,000,000 perhaps it’s time for 10 “flavors” of your product serving 100,000 people. Or 100 “flavors” each serving around 10,000 people. Or some mix. If you pick based on the work they are doing, some “flavors” may have 100,000 and some may have 10,000.
The point is for each “flavor”, you then need a product manager, and a developer or two. That’s a small investment if split over enough people. Well worth the payback if your customers start loving the product(s) again.