I think you're somewhat right, but it's not the whole story. There's another pipeline that goes something like:
1. Technical software problems are more fun than difficult product problems
2. Programmers would rather solve fun problems
3. Programmers end up creating technically elaborate machines to solve simple (buy annoying) product problems