Programmer’s that don’t abstract don’t work
March 30th, 2008Grady Booch, a brainbreacher in the software architecture world, put such importance on a programmer’s ability to abstract properly. You can listen to the wonderful podcast by following the link at the end of this article. Booch describes how all complex systems are broken down to become simple through abstraction. Think of abstraction as organizing information. As wikipedia puts it:
Abstraction is the process or result of generalization by reducing the information content of a concept or an observable phenomenon, typically in order to retain only information which is relevant for a particular purpose.
Have you ever soldered a circuit board? You wouldn’t be thinking of capacitors, resistors and ferrets when you are trying to enter a certain time into the microwave, even though they are involved. If you do, it might hinder your ability to judge the right time. McConnell (book) says maintaining different levels of abstraction and allowing modules only to only communicate to other modules in their strata is called Stratification in software engineering. Perfectly termed! Think of the strata of the sky with it’s troposphere, mesosphere .etc.

Now the ability to abstract, and the importance of recognizing when to abstract is critical for programmers. If your engineer can’t create software with clean and well thought out stratification, you will soon find a mess on your hands when your skilled engineers give you a piece of the their mind. This doesn’t mean if a fellow can abstract any way he will can be a good engineer; I have seen folks that can abstract up well, or down well, and not the other way. This creates problems. If your engineer can’t abstract up in the hierarchy of information, conversations can be very awkward, and design lacking. If they can’t abstract down to the complex, they will never get anything done.
One way to test this is good long technical conversations durring the initial interview. If they can make your nontechnical colleague understand how their system works, we might have some abstraction problems.