5 things that I learned before designing a Software System
In this pandemic, many people around the globe have started working from home. People started saying “The Internet is the New Oxygen”. This led to an evolution of a new set of career options. Things like Online Content Creation, Freelancing, Virtual Classrooms, and many other such options became more popular these days. This made people start spending more time in front of mobile and laptop devices. There are some people who are already spending most of their time on these digital devices. They are called “Software Engineers”. This is the area that opens up unlimited possibilities to use the Internet around the globe and make people come closer.
Let’s talk a little more about it …
What is Software Engineering?
Whenever I ask this question to any person, the only answer is that “Software Engineering is all about learning a programming language and joining a Tech Company ”. According to my, the answer to this question is not that simple. The short answer is “Software Engineering is building Software Systems efficiently”. You might be thinking, why did I use the word “efficiently”. To understand the long answer.
“Software Engineering is building a software system that can store data, remember the result of expensive operations, allow users to filter data, handle more number of users and chuck the data automatically.”
A simple one, right?
Let me break down this above sentence and give some technical terminology.
Storing Data — Database
Remember the result of the expensive operation — Cache
Allow user to filter or search data — Search Indexes
Handle More number of users — Multi-threading
Chunk data Automatically — Batch Processing
Don’t worry !!! I am not gonna teach you about these terminologies.
What are the 5 things needed to become a Software Engineer?
Many people think that to be a software Engineer, we need a degree in computer science. But that is not entirely true. You just need a laptop device and an internet connection. That’s it. There are lots of tutorials that teach about software systems. Here, the word “Software System” means it can be a Website, Mobile App, Desktop Application, device drive, Operating system, and many more.
Now the question arises, what are the exact first things you need to do to start engineering software. The answer to this question is simple. Let me tell you the exact things you need sorting it from easiest to hardest (according to me).
- Programming Language
There are many programming languages. You need to choose the best for your software.
Java/.Net/Python — Backend Development
HTML/CSS/JS/AngularJS/ReactJS — Frontend Development
Kotlin/Flutter — App Development
And many more ….
This list is endless. The new generation started popularizing things like data science, machine learning, deep learning, blockchain, big data, etc.
2. Tools
Tools will help to build the system more efficiently and more easily.
IDE — Integrated Developer Environment, where we code.
Compiler — Every programming language has its own compiler like JDK (Java Development Kit)
Database — MySQL or Oracle. To store large chunks of data.
And many more …
3. Basics of an Operating System
This will help to know how software can work with less time and less memory.
4. Glims of Networking
There are a few concepts that you know before designing a system in networking like protocols.
5. Know the System Design Concept and Data Structure
This is only the hardest part of designing systems. Here, the concepts are related to how to design systems like OOP Concept (Object Oriented Programming Concept), Scalability, maintaining space and time complexity, etc.
People think that only learning a programming language will make you a software engineer. That is true but to some extent. Only learning a programming language will help you to work for others to build their system. To be a software architect or build your own software, you need all five skills.
Thank you.
See You Again :)