What does a Software Engineer do? What do I have to do to become a software engineer?

5 minute read

Cover Page As someone who wants to make a career in Information Technology, these questions might be troubling you. When we search “Software Engineering” on the web, we’re given some basic definitions like “Software engineering is an engineering approach on a software development of systematics application and a software engineer is a person who applies the principles of software engineering to design, develop, maintain, test and evaluate computer software.” This jargon doesn’t mean much to someone trying to find the correct resources on where to start the software engineering journey and what you have to know. It would be so much easier if there was some sort of roadmap to navigate through this path. And through this article, that is what I intend to deliver - a guide to provide insights to kickstart your software engineer journey.

Software Engineering RoadMap

I have created a basic chart that will guide you in your study. Let’s take a look at each step of this road map in detail.

1. Programming Languages

First and foremost, it is very important to identify what kind of development you want to focus on. You can specialize in web development, mobile application development, or desktop application development. Each development may have its own specialization but they all have one thing in common, and that is coding. No matter what development you chose, you need to learn to code. If you are confused about what languages to learn, then you can start with the basics - HyperText Markup Language(HTML), Cascading Style Sheet(CSS), and JavaScript(JS). These are the basics necessary to get you started with front-end web development. After familiarizing yourself with the basics, there are many frameworks and libraries based on top of JavaScript - React, Angular, Vue, and jquery. These frameworks provide a lot of additional features and functionality to Javascript which makes web development easier and more efficient. Front-end development focuses on creating user interfaces and experiences whereas back-end development works with databases, processing, and the server-side of web development. Some backend programming languages commonly used in professional environments are Python, PHP, Ruby, Go, Java, and Node.

2. Databases

All the data used in applications are stored and maintained in a database. Whether you are trying to become a front-end developer, mobile application developer, or backend developer, it is important to understand how a database is maintained in an application. A backend developer must understand databases and learn to use them thoroughly. Besides the programming languages mentioned above, there also exist query languages made specifically for the purpose of performing operations on databases. SQL and NoSQL are the major types of query languages used for database management. SQL deals with relational databases whereas NoSQL deals with non-relational databases. Some of the commonly used versions of SQL are MySQL, PostgreSQL, and SQLServer, whereas NoSQL databases include MongoDB, Cassandra, and Redis.

3. API

API stands for Application Programming Interface, which is a software intermediary that allows two applications to talk to each other. For example, when we request data on a website, the website fetches the data from the server with the help of an API. API architecture and protocols specify the rules and data types for the data to be requested and the response provided. Some of the protocols include JSON, REST, and GraphQL. You must have basic knowledge of at least one of these APIs to be able to build or integrate a backend application into a web application.

4. Cloud Services

To share your finished web app with the world, you need to host it. The easiest way to go about this is with cloud platforms. So, it is necessary to understand the various cloud services available and choose the best one for your application. Some of the more popular cloud service providers are Apache, AWS, and Google. A service provider should be chosen based on the requirements of the application, budget, and available resources.

5. Version Control

Version control is the practice of tracking and managing changes to software code. As a developer, you should back up the programs written on your local machine into a remote platform and keep proper track of your work. This is necessary because it allows you to recover your program in case of machine failure. Version control keeps track of every modification made to the software. If a mistake is made, it can easily be reverted with minimal disruption to the team. The most commonly used version control is Git. Github and Gitlab are some repository tools used for version control using git.

6. Development Methodologies

Smooth application development requires a proper process to be planned and implemented. Software development methodologies consist of various phases such as planning, resource collection, development, testing, risk management, documentation, and reporting. How and in which order these phases are implemented depends on the selected methodology. Agile, Waterfall, Incremental, and Prototype are a few development methodologies that one must have knowledge of to develop an application efficiently. You, as a software engineer, must make use of a methodology based on the requirement of the application and follow through with it the process.

Along with these steps, it is extremely important for a software engineer to be informed about new technologies and updates on programming languages. This can be achieved by listening to podcasts, reading news, social media, etc. You can be a part of the software engineering community, and programming language community and build a network on LinkedIn, Facebook, Twitter, and other social media. Building a network helps you stay updated with new opportunities and information on the latest emerging technologies. It also helps a lot if you are actively seeking a job. If you have already started working in a company, then you can keep continuously learning by finding yourself a mentor at work. Sharing knowledge with each other can be a great way to increase your learning.

Author

Rachana Basnet

(Rachana is a Software Engineer at Insight Workshop specializing in Python, Django, DRF, and React. She has been working extensively with Python and Django and has developed software products having both frontend and backend functionality)

LinkedIn  

Leave a comment