Finding your abstraction level đź—ş

Hey friends,

One of the mental models I've been thinking a lot about is related to abstraction and getting things done.

If you studied programming, you probably heard about the word abstraction.

"Abstraction is the process of removing physical, spatial, or temporal details or attributes in the study of objects or systems to focus attention on details of greater importance"

The way I like to think about it is, there are different levels of accomplishing the same goal, which depend on:

1) How much control you want

and

2) How much time you have

Moving to a new house

Let's give an example of how abstraction works in the real world.

Let's say that you're planning on moving to a new house. There are different levels of abstraction that you could think about when it comes to your goal of "moving to a new house".

Think about this as how much control and time you want to spend in order to accomplish that goal.

For example, you could:

1) Build a house from scratch

2) Have builders build your dream house

3) Build a house that was pre-designed.

3) Buy an already built house

4) Rent an already built house

5) AirBnb a house.

There is no right or wrong answer, it all depends on what level of abstraction you're comfortable with, depending on your goals.

What are the drawbacks of higher abstraction?

You may be thinking, shouldn't I just always use the highest abstraction level possible then? Well not really. In reality, you may want more control to be able to do something that is just not possible in the lower abstraction level. That's why you need to start with your end goal, then work backward to see what abstraction level you need to reach to accomplish that goal.

That’s where you should have (or consult someone that has) domain knowledge of that field, otherwise you run a high risk of falling too far either on the side of making things too complex (reinventing the wheel in the process, which I believe most startups are guilty of), or erring on the side of giving up too much control (if that’s something you value).

Abstraction in tech

An area I’ve seen this play out in the tech world is related to app building (either web or mobile apps). With apps, you could build an app from scratch, or you could use an existing CMS (content management system) like WordPress to accomplish much of the same thing much faster.

In recent years, there now exist very advanced No Code tools you could use (like Bubble, Adalo and Glide Apps), to build full-stack web and mobile apps without needing to code.

However, you would need to use a lower level of abstraction (coding it using a high-level language like Node, Python etc.) if you wanted to do something very complex and unique that doesn’t have existing templates (building the next Netflix, Uber etc.)

Abstraction in Marketing

With marketing, I noticed abstraction play out with short versus long-term gains (paid versus organic). For example, you could focus on short-term results (from paid marketing ads), like letting Facebook and Google do the Conversion Optimization for you, or you could optimize for longer-term organic growth (working with verified placements, using SEO and email marketing etc.). Marketers need to balance between these two extremes in their quest to find repeatable growth channels.

Abstraction in Data Science

If your business is working with large amounts of data, you may not need a complex machine learning algorithm, when a simple Excel or Google sheet would do. In fact, learning advanced data science might be a distraction when you can answer your questions by using a pivot table. However, if you have millions of rows of data, and multiple data sources then learning a lower-level abstraction version of data science would be very beneficial to uncover hidden insights in your data.

Again, it all depends on the level of control you want and your goals.

---

Until next time! ✌️