Joel Spolsky on The Law of Leaky Abstractions
I just recently came across a very interesting article by Joel Spolsky. One of my former co-workers posted this on his Facebook wall, citing that it was a great view on abstraction, and that he had similar views. I agree!
The law of Leaky Abstractions is a great read and I encourage you to take a read. It’s written very well, and everyone who has exposure to a computer/technical field can take something from it.
A brief comment on abstraction, theoretical knowledge and engineering
Spolsky makes a great comment when he mentions that he needs to be well acquainted with his foundational knowledge even though he works with higher level tools and frameworks in his daily workflow:
Today, to work on CityDesk, I need to know Visual Basic, COM, ATL, C++, InnoSetup, Internet Explorer internals, regular expressions, DOM, HTML, CSS, and XML. All high level tools compared to the old K&R stuff, but I still have to know the K&R stuff or I’m toast.
Engineering students, comparatively, get exposure to large amounts of theory. The topics are wide, but are relatively constrained to some sort of mathematical, and science related field. The theory in this case, is a direct analogue to how the K&R relates to engineering.
Although later on in their careers, engineering students may not use much of the theoretical knowledge in their daily work, it is still important to recognize that it is still there, and that the theoretical foundation never really goes away. The same way that software can be abstracted out, the various mathematical models and systems can also be abstracted away.
One of the most important skills which an engineering curriculum can give to its students is the ability to dig deeper and work below the abstraction, and it is important to remember this as time goes by. I feel as if this is a fact that isn’t iterated more; there is a sanity to some of the madness which engineering undergraduates endure.
Spolsky nails this fact down – there will always be something that leaks through the abstraction, regardless of the system, hence the need for people who are intimately familiar with the underlying mechanism behind the abstraction.