Recently I blogged about how I oppose the traditional idea that "knowledge is power". But I do believe that abstraction = intelligence = power. I believe that abstraction is one of the most effective ways to make hard things easy. And I don't mean abstract art.
If you lookup the term "abstraction" you'll see many definitions. Here, I'm using the the word "abstraction" to mean building on one layer of capability to create a new, more powerful layer of capability.
Each layer of abstraction builds on the capabilities of the previous layer to create new capabilities.
Building software systems also leverages the concept of abstraction. A microprocessor executes microcode inside the CPU to execute the assembler commands and move data between the registers and adders. The OS and drivers use low level assembler code to build functionality. Compilers turn C# code into executable code.
Inside Tejon Tech, we write SQL Server T-SQL code to create an object-oriented database. The result is an abstraction layer consisting of SQL Server stored procedure calls. While they are simple to call, no user would ever want to use the database by writing proc calls, so the user interface is essentially an abstraction of those proc calls turning the code into a graphical user experience that's much easier to use and can visualize that data.
Abstraction is all around us and you'll see it everywhere once you're aware of it. And, if you can use abstraction to turn multiple complex steps into a single new step, then you've created new capabilities.