Re: Paul Graham on Holding a Program in One's Head
Posted: Aug 28, 2007 4:30 AM
> > In order to innovate (through software), we must solve
> > increasingly complex problems. In order to solve those
> > problems, we must understand them.
> In some sense, the process of solving is the process of
No, I don't think they are the same process. The process of understanding and the process of solving definately exist in a tight feedback loop, but I believe they are separate.
In order to solve very complex problems you need to know how to partition them into sufficiently independent smaller problems. You need to understand the problem domain in order to do this. Yes, your understanding will improve considerably as you solve the problem, but ultimately the quality of that first division and of successive attempts will determine how quickly and effectively you solve the problem.
It's like the difference between a A* search with a good hueristic and just doing brute force. Domain knowledge is your huerstic function to guide the search. If it doesn't exist, is painfully slow (i.e. you have to go ask the customer), or grossly inaccurate (i.e. the customer doesn't understand what you are trying to do enough to give good feedback) then while the search may eventually terminate given infinite processing time and memory...
> The language you choose will have huge
> influence on how you understand the problems, and it also
> will give you a better approach to solving the
> problems(same as the oil medium to the painters)