In the world of engineering today, everything seems to have become an API.

If you’re a front-end engineer, you’re likely going to be working with frameworks–which are abstractions (that are invoked like an API). Even if you’re working in pure html/css/js, you’re still interacting with the standard APIs that the browser exposes.

If you’re a back-end engineer, you’re likely going to be working with servers like Tomcat, working with tools like AWS, and interacting with the CPU and memory through libraries.

I reckon 80% of programming is working with these types of APIs. Those who are excellent at design (and fortunate to work on design) are those who are able to commandeer those types of APIs or abstractions–one, or often many levels higher–effectively.

If you’re starting to do some real programming (outside of the if/else statements and loops of academia), it’s critical to understand how to tread these waters. Read the documentation and familiarize yourself with a wide range of APIs and tools. Often, you’ll find similarities between each one which will help you form mental models around how good software is designed.

Perhaps it’s more accurate to say, “Everything’s an Abstraction.” Either way, it’s essentially the same idea; good APIs == good abstractions