Comment by ACS_Solver

2 hours ago

> Even if you deeply into tinkering, 1 can be an insanely exciting and rewarding step: for example "how could an abstraction look like in which 2-4 become trivial special cases for many classes of programming problems?".

Yes, but I think there's really two different definitions of point 1. It's "figure out what non-software problem you can solve with software" vs "figure out what technical problem to solve".

As the tinkering type, I also find 1 very rewarding but using the latter definition. Exploring a sizable code base and finding the part that, if simplified, cascades to a lot more simplification, that's very exciting. Figuring out what problem some companies or people have that could be solved? Very hard, very unexciting, not rewarding.

> Yes, but I think there's really two different definitions of point 1. It's "figure out what non-software problem you can solve with software" vs "figure out what technical problem to solve".

In my opinion these variants are not very different:

For example keep in mind that physics is basically a descipription of the software that runs reality, which automatically gives you are huge portfolio of potential problems. :-)

For mechanical engineering, observe that the advances in 3D printing and home CNC milling mean that a lot of problems that were previously in the domain of mechanical engineering now become partly software problems.

Or for more "human" problems: If you are very trained in mathematics, you start to see mathematical structures in a lot of "more human" problems (or areas that are not associated with "software") basically all the time. If you find these mathematical structures that you see interesting, it is often possible to turn them into software.

Thus, "figure out what non-software problem you can solve with software" vs "figure out what technical problem to solve" is rather a litle bit like "in mathematics: do you prefer analysis or algebra?" - yes, they (often) represent a different style of thinking and many mathematicians do have their preferences, but in the end both analysis and algebra is mathematics.

--

So, I disagree with your point:

> Figuring out what problem some companies or people have that could be solved? Very hard, very unexciting, not rewarding.

In my opinion the boring part is not finding or solving problems that companies or people have. As I wrote: after some time, you often start to see highly interesting, often very novel mathematical patterns in these problems (of course not always, but it is not an uncommon situation). Why are these patterns often so novel and interesting? A heuristic answer in my opinion is: if they weren't, someone would typically already have implemented them in software. :-)

The really annoying part is rather convincing the people/company of your solution (which can be considered to be part of step "5) You ship/deploy/publish the program. This means you see people be happy users and/or you get paid for it and so on.").