|
|
|
|
|
by lucianbr
592 days ago
|
|
> In the old days, developers had to really know their stuff. Coding wasn’t just a checklist—it was a craft, and every line was written with care. There's a name for seeing the past through rose-colored glasses, isn't there? "In the old days" developers had various degrees of skill and care, as they do "in the new days". |
|
A related point: MIT dropped the SICP curriculum in 1997, the reasoning being:[1]
> Sussman said that in the 80s and 90s, engineers built complex systems by combining simple and well-understood parts. The goal of SICP was to provide the abstraction language for reasoning about such systems. > > Today, this is no longer the case. Sussman pointed out that engineers now routinely write code for complicated hardware that they don’t fully understand (and often can’t understand because of trade secrecy.) The same is true at the software level, since programming environments consist of gigantic libraries with enormous functionality. According to Sussman, his students spend most of their time reading manuals for these libraries to figure out how to stitch them together to get a job done. He said that programming today is “More like science. You grab this piece of library and you poke at it. You write programs that poke it and see what it does. And you say, ‘Can I tweak it to do the thing I want?'”. The “analysis-by-synthesis” view of SICP — where you build a larger system out of smaller, simple parts — became irrelevant. Nowadays, we do programming by poking.
As software becomes more powerful, it must become more complex. And thanks to the internet, we have tons of pre-built solutions out there. Now, much of the problem is combining them together. When doing this, you can't know or care about every line. I totally agree, we must treat a lot more systems scientifically, like an object under observation.
[1]: http://lambda-the-ultimate.org/node/5335