- Kaivalya Apte
Understanding Software Engineering Beyond Coding
When it comes to software engineering, most of the people think it is just about a computer and a person writing some code on it. Well, their perception is just a subset of what software engineers actually do. Like engineers in other fields (mechanical engineer, electrical engineer, civil engineer etc.), software engineers also have tools in their toolbox. Yes, software engineers use a lot of tools to build a software product. Actually, I would use the phrase “engineer a software product”. If you are thinking what is there in a software product, which needs to be engineered, you will understand as you continue reading.
The Engineering Process in Software Development
Building a software product can be compared to building a bridge.
- Both need a solid architecture. A poorly architected bridge may fall and kill hundreds of people under it, similarly a poorly architected software may crash/be hacked and ruin people’s life by compromising sensitive data (like saved credit cards or passwords), misuse of personal data (like photos, videos etc.), and many other problems.
Key Questions in Software and Civil Engineering
When an architect prepares an architecture for a bridge he tries to get answers for the following questions:
- How many people are going to use the bridge?
- What type of vehicles will be allowed on the bridge?
- Type of soil, length of the bridge, and many more such questions.
Aren’t these questions similar to what a software engineer would try to ask?
- How many people are going to use the product?
- How much data needs to be stored?
- What type of people are going to use it, and a lot more like these.
After all such questions are answered, civil engineers make estimations and decide on the materials to be used, dimensions of the bridge, etc. Similarly, software engineers make estimations on the data storage, network load, number of hits, etc., and decide on the technologies, languages to be used to engineer the product.
After all the above efforts (and more) are put in, and a lot of information is gathered, implementation can be started, which finally results in a robust and user-friendly product.
The Software Engineer's Toolbox
Below is the list of all the skills (tools) which are really important for a software engineer to work efficiently:
Essential Skills and Tools
- Mathematics: Mathematics is the most important skill that every engineer should possess.
- Data structures and Algorithms: These are the building blocks of any software product.
- Programming languages: An engineer should master at least two programming languages.
- Database systems: Database systems lie at the core of software products.
- Networking: Basic concepts of networking are really important to build networked applications.
- Frameworks: Frameworks are reusable, customizable, configurable, and well-tested software components.
- Performance measurement tools: These tools help engineers to evaluate the performance of the software.
- Automation tools: A task performed manually should be automated immediately.
There are many others which can be added to the list, but these are the very important ones. I hope we all as engineers possess these skills and contribute to the software engineering society.
The Geek Narrator