To those uninitiated into the world of software development, how software works and gets built can seem almost magical. On one end you have geniuses typing indecipherable code on a black screen, on the other end, somehow, a software application appears.
Despite the seemingly complex creation process, the core of most software is actually quite simple:
- There is a database that stores information in a whole bunch of tables, each of which is kind of like a tab on a spreadsheet. So, Facebook has a tab for all of the users, one for all of the posts, one for all of the messages, and probably thousands more.
- When a user interacts with a piece of software, it’s usually either reading data from those tables or writing data to them. So, when you look at your Facebook newsfeed, it looks up all of the posts relevant to you in a table of posts and then displays them to you. When you like one of the posts, it creates a new row in a different table that stores all of the likes.
And sure, there are lots more details if you dive deeper into it - how to determine which posts to show to whom, how to scale those tables of data to support trillions of rows, etc. but the underlying concept is simple: take stuff from users, put it in tables, show it to other users. Moreover, a lot of software applications do the same things as each other. Think of how many apps you use that have a messenger, take payments, or show a profile page for users.
So why is it still so hard to make software and why are software engineers one of the highest paid professions in the world? The reason is that software creation is still too low-level.
Let’s take building a house as an example. Imagine that to build a house we had to also build every single thing that goes into the house. So, when building a bathroom, we’d have to figure out exactly how a faucet should work, build the faucet from little pieces, and only then be able to use it in our house. This would take years. Instead, we buy a faucet and just plug it into the house using a predefined connector.
Software, on the other hand, is still largely created from very small pieces. If a developer wants to build a messenger, they often have to construct it using low-level code instead of just plugging in a fully designed messenger and just adjusting the parts that need to be adjusted.
At AirDev, we are working on making software development a lot simpler by building things without code and by creating a library of modules that can be plugged into any application. As a result, we believe that building products will become significantly easier and the world of software will become more accessible to both those who want to start a startup and those who want to make a living building for others.