I would not consider myself to be "rich". I have more than enough to retire and do whatever I want, wherever I want and still pass down to my family. That's all I ever wanted and need.
Yes, custom programming. I sold my first custom piece of software at 16. Took a break to go to college (unrelated) and then returned to programming to form a company. Sold that to a Hong Kong company that took the software/solution to South America. Started another software/IT company and then another with engineers until a few years ago. Retired then unretired and started 2 more companies that are still running. Also, got involved with a nonprofit on the science IT side of things that I find very rewarding. I have to say that all of this is NOT just me. Lots of partners and others involved.
The "secret" which hasn't been a secret for, probably, many millenia and is in my previous post .... "Find a need. Fill a need" is really all it boils down to. Oh, and choosing a profitable (money-wise, soul, community, in any combination you deem worthy) need to fill I guess would be the deciding parameter there. I'm not about to custom-make a POS type of application to try to compete with the multitudes of them out there, for example. I don't care how fast, cheap or wonderful the interface is; it's not going to be rewarding for me or my business.
One of my pet peeves, when it comes to hiring employees and when I hear these kinds of complaints from developers or programmers is the inflexibility. I was taught as a child, in a fairly poor, rural area to poor family that, literally, dug ditches and got very dirty for a living (ie, dig and eat, rest and don't), that you did the work for which work there was. Meaning, when I look at a new programming project, or business problem/solution I've been asked about or just found on my own, I don't, first, look at my own tools/skills/experience to decide how I'm going to tackle it. If I have that "tool" in my toolchest to solve the problem in the best way, then I'll use it. If not, then I quickly pivot to either find or simply make that tool. Work the problem in front of you; not the tool in your hand. Far too many programmers, to bring it back to somewhere close to this forum, only see their tool (programming language? experience? comfort-zone?) to solve the problem. Same goes for developers on the wider-view of the world around them and the opportunities therein. Find the problem. Fix the problem. Simple.