Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

One of the author's frustrations, seeing months of work abandoned - is the byproduct of training programmers as scientists and engineers rather than designers...or rather it is the byproduct of a pedagogy which attempts to extend mathematical logic and proofs to messy social problems.

Landing pages and NoSQL backends are not deductively better or worse: at best they are statistically or inductively so. Typically, however, choice is simply intuitive.

Making good intuitive choices is the essence of design and the way to develop good design intuition is not to sit down and bash on one's first solution until it plausibly works. Education should attempt to teach students that falling in love with one's first idea is a tarpit.

Teach students the practice of coming up with three independent design schemes and developing each to the point that the merits and flaws of its underlying design concept is evident. Maybe one is worth developing.

Throwing away months of output is not wasted effort - just as lines of code are no more a relevant measure of productivity than pencil lines on a blueprint. Artists have stacks of sketches and studies, architects stacks of abandoned schemes.

Most ideas are not worth loving, let alone executing and most solutions cannot be demonstrated correct via mathematical logic. The education of programmers should align with this reality.



The problem is that "developing each to the point that the merits and flaws of its underlying design concept is evident" is software engineering. It takes a substantial amount of work to get to that point, including usually having actual customers bang on the product. If you develop 3 independent solutions to the point where the flaws on each of them are apparent, by definition you will throw away 2/3 of your work.

I don't think that's necessarily a bad situation - hell, the bulk of my work is prototyping, and I throw away probably 90% of it. I just don't think this is unique to design, and I think that software engineering differs in that you usually need to proceed farther to see the flaws in your design. Science is a more apt metaphor - the scientists I know easily throw away 99% of their lifetime output, because the point of science is to prove yourself wrong as quickly as possible.


"Teach students the practice of coming up with three independent design schemes and developing each to the point that the merits and flaws of its underlying design concept is evident. Maybe one is worth developing." That seems like a good idea but then you would need software designers and programmers because what is good for one is not good for the other. We're no were near this becoming a reality.


The idea of developing multiple independent schemes comes from my background as an architect. I mention it on the off chance that it won't the discipline of software development as long to incorporate it as the 4500 years since Imhotep.

I'm optimistic because functional programming is already seen as an often viable alternative to bashing on an array - garbage collection is a useful abstraction outside the computer too.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: