My first mentorship program, DevLaunch, is live! It’s designed to help developers become confident, job-ready Software Engineers in 4 months through real code feedback, project-based learning, technical mentorship, and interview prep from me and other experienced engineers. If you’re ready to level-up your software engineering career click the link below!
Once you get the hang of it, building 99% of software really is pretty easy. The reason for this is that everything in Software Engineering boils down to three very specific things: displaying data, storing data, and manipulating data. I say this not to belittle the jobs of engineers, but rather to help give you confidence — to succeed as an engineer you just need to get really good at three skills.
1. Displaying Data
Every phone, laptop, tablet, terminal, car, smart fridge, and other client that will interact with your application will need to somehow display data to end users. Remember a client here is just a fancy way to specify anything in the world that requests resources from your application and as technology advances we tend to see more and more types of clients.
How you get this data, store information client-side, and display it is roughly one third of Software Engineering. This part of engineering can be difficult because of all the different kinds of clients you need to account for and determining how to build and organize a UI that’s best for users can be tricky.
The frontend of applications is also responsible for sending data to your servers and that’s where the next big chunk of engineering comes in.
2. Storing Data
Applications that you build are largely only interesting if you store some kind of data. Otherwise imagine the user’s experience — every time they use your application or website it’s like it’s the first time they’ve ever visited it. It’s hard to build anything of substance without storing information.
As the frontend sends data to your backend, it’s your responsibility to determine the best way to store that information and this is the second large bucket of engineering. Depending on how you choose to store this information is important as it’ll determine things like how quickly you can return data to clients as well as how many clients your application can support concurrently or altogether.
I like describing this part of engineering like being a good organizer. Imagine that you’re organizing your sock drawer. One way to organize your socks is to simply not (i.e. you just throw all your socks in). While this allows you to quickly store them (i.e. put them into the drawer), retrieving a pair of socks that you’d like to wear or pairs of socks you might want to pack becomes a nightmare of finding needles in a haystack.
Instead, imagine you took the time upfront to pair socks together prior to placing them in your drawer. This would allow you to easily retrieve a single pair or many pairs from the drawer at a later time efficiently. How you organize your data at rest in a database is an extremely important part of engineering. Deciding how to structure your database tables, query them, and optimize them is the second pillar you largely need to understand as a Software Engineer.
3. Manipulating Data
The last and final step to be a Software Engineer is to understand the in-between step of displaying data and storing data which is manipulating data. Manipulating data is a two-way street:
Once your backend receives data from the frontend, it might needs to change this data’s format before storing it in your database
And before your backend sends data back to the frontend, it might need to retrieve data from your database and change it’s structure so that clients can properly display it
Whatever your server does between the frontend and your persistence layer constitutes the business logic of your application and it largely involves the third important bucket of Software Engineering which is manipulating data. This layer acts as the glue between your frontend and database and is responsible for transforming data inside the memory of your server.
If this all sounds obvious to you, that’s a good thing! The truth is that what we do as Software Engineers isn’t rocket science and again, I mean this in a positive, motivating way. Don’t doubt your skills, you can learn and develop these three things.
A mistake I made earlier in my career while learning to code was thinking that coding and Software Engineering were hard and that’s part of what actually made them hard. Regardless of whether or not I found something to be objectively difficult I believed it to be because of what others would say: “You’re studying Computer Science? You must live in the library.” Don’t do this!
Furthermore, while these three buckets encompass all of Software Engineering, being really good at them is “good enough” for 99% of software that 99% of companies will build. The truth is that for most companies something working and not being terribly slow is more than enough. Less than 1% of companies have to deal with truly ridiculous scale and other more nuanced problems that might require additional knowledge and that’s why 99% of software is easy.
Where you can find me online:
Drop a like ❤️ and comment below if you made it to the end of the article.
If you’re struggling to prepare for technical interviews sign up for the platform I created to help 30,000+ people learn how to pass coding interviews — The Daily Byte. Our subscribers have received offers from great companies like Google, Meta, Microsoft, Apple, Uber, Citadel, and many more.
❤️
I enjoyed this.