2 ms·
This sort of thing is a good indication of the technical maturity level of a programmer. Over simplifying the design of software and "feature list" thinking are
by InclinedPlane 13y ago
This sort of thing is a good indication of the technical maturity level of a programmer. Over simplifying the design of software and "feature list" thinking are perfect examples of technical immaturity and naivete. Even a very simple system with a small number of moving parts requires a lot of skilled and subtle work in order to ensure it works reliably, at the appropriate level of performance, and in a way that is usable. In a way good programmers make it more difficult for younger programmers to notice these things, since an elegant design might reflect innumerable man-hours of careful decision making and improvement but it works so well and so smoothly and with so few parts that it can seem almost trivial.
When someone sees a line of code such as the classic "fast inverse square root" it's obvious that it's necessary to take a step back, to realize that you're not going to understand the depths of what's going on intuitively, that there is likely a lot of deep optimization and balancing going on with that code. But when we see code that doesn't have a big clanking WTF in the middle of it, when we see code that seems to make intuitive sense, we don't tend to ponder the optimization and tradeoffs that went into it. But in truth those can be just as deep and just as profound for ordinary looking code as for obviously clever stuff. That goes double when you only use the software.
Consider a thought experiment: replicating google. The naive answer is that it's easy, all you need is a big DB, a web crawler to load up the DB, and a search frontend. And that might work, but it would be terrible. It would be horrendously expensive and produce profoundly disappointing results with even more profoundly disappointing performance. From an end-user perspective google is simple, but the complexities and the elegances underneath are the important bits, and those are much more challenging to replicate.
- canadev 13y ago"In a way good programmers make it more difficult for younger programmers to notice these things, since an elegant design might reflect innumerable man-hours of careful decision making and improvement but it works so well and so smoothly and with so few parts that it can seem almost trivial." "[W]hen we see code that doesn't have a big clanking WTF in the middle of it, when we see code that seems to make intuitive sense, we don't tend to ponder the optimization and tradeoffs that went into it. But in truth those can be just as deep and just as profound for ordinary looking code as for obviously clever stuff. That goes double when you only use the software." Yes, yes, a thousand times yes. I want to write more, but in those two quotes you've managed to articulate something that I've been thinking about quite a bit recently. Good software doesn't seem good. It is invisible.