In day to day life we use multiple apps and do multiple operations by using it. As a developer / Software Engineer it's very crusial factor to understand the lifecycle of software engineering as a whole. Without any furthur delay let's dive into the actual talk.
Problem Identification:
Entrepreneurship is a growing field in every industry. People who are action taker and love to deal with calculated risk identify the problem in society, Great leaders among the industry think about to invest their capital into the project. obviously they don't afford to waist their money into a trash that can't produce more leads in term of revenue. So identification of the common problem in society must be prioritized first before hiring any developer to put them into the work.
Design & Planning:
Building software is not so easy process and it's become harder especially when it comes to distribute over a large group of userbase who are always eager to try latest softwares in market. There is a dedicated team for planning and making the things to deliver it to the designing part. After successful planning it's handed over to design team. They create the application prototype or skeleton and basic functional component design. Figma , Adobe Photoshop comes into picture when the work is about designing the product.
Development:
It's the only part where designs transform into reality and functional product. There are few steps must be followed by the developers while executing the process.
Version Control: Git is a version control system and every developers use it to track their daily development progress along with the status of the software they build. Github is a platform where version control system can be seen in a very effective manner.
From small startups to Big MNCs everybody takes advantage of it and uses it to perform different operations with their production code. In this step, the project files and folders are initialized and put into the GitHub cloud server. As the codebase is open source, so everybody can work with the codebase and do their contribution.
Development Environment: Building full-fledged software products is not an easy job. Lots of hard work, dedication, and planning are involved in this process. Developers use the specific tools for their specific tasks. Team collaboration and communication among teammates of different sectors (eg. UI/UX designers, Frontend Developers, DevOps Engineers, Testing Engineers, etc.) is necessary. There are few software to do that,
JIRA: JIRA is a project management tool by Atlassian, used by software engineers to work on a particular bug and features along with real-time communication features on the cloud. One can assign a specific task to a specific team member to work on it and everyone will able to track their progress status of them. Other software is also available to do that, Eg. Meistertask, zenhub.com
Zoom/MS Teams/Slack: There is no surprise that in every industry we do video conferences and connect with clients via video calling meetings. From gathering information to client/team meetings we use various applications for that to do that. Zoom and MS Teams are the most popular ones. But in many open source startups or remote companies, they usually do their all jobs and chats into the specific slack channel as it's easy and convenient for a large amount of people.
- Coding: Quality code is the only key to making software efficient and powerful. TechStack of software is predefined by the Tech Lead first, then the necessary works are distributed among developers. Developers do coding keeping in mind the good practices. It saves lots of time while debugging the code. APIs are made depending upon the component used in the software so that users can interact with them and it's become really a useful product at the end of the development.
FRONTEND DEVELOPERS:
Generally, Frontend Engineer takes care of lots of work together from writing code for UI/UX design to Interacting with the Backend APIs, pagination, responsive design and much more. Backend Engineers generally make the API and deploy it into the Cloud Service Providers like AWS, GCP, etc.
BACKEND DEVELOPERS:
The main task of the backend Engineer is to integrate various backend Services and complex processes like Authentication & Authorization of users, Connecting with the specific cluster to allocate a particular DB to the User, Payment methods, and much more. There must be proper communication between the Frontend Engineer and Backend Engineer to handle the different edge cases and UX problem in real-time and solve them quickly. Network security is another thing to manage the security of the software while scalable to the Internet. During the development process, the codebase is stored in Github.
One of the best features of GitHub is that people can create different branches to put their work regarding the project. The project admin will take care rest of the things. The same case happens during the actual engineering also. Different people have different responsibilities to work on a particular feature and push the code into the main project, but the main thing is that Branches are first checked and reviewed by the project admins if it consists of any issue or mistakes the code is not merged and specific comments are done there to address the developer about the latest code push. After sending the correct PR to the specific branch of the project the code is merged by the maintainers or project admins to the actual codebase. After doing the complete product different test cases are run through the product to detect any issue or bug in the software,
TESTING & DevOps TEAM:
The testing team writes various manual and automatic test cases for the software. The software passes through the different scenarios and is ready to generate a build to deploy on the server. The last step is handed over to the DevOps Engineer who has the crucial responsibility to ease the deployment process to the cloud server.
DevOps involves software deployment, building CI/CD pipeline, analyzing the software downtime, load balancing, Cloud cost management, Software health check, etc.
Iteration & Improvement: After successfully deploying on the cloud, the team releases the beta version where it's used by a very selective amount of people and company employers and developers to find any new bugs or edge cases that were missed in the testing time. After iterating over the users constructive feedback is being collected to improve the application. The broken version of the software is sent to the developer's team again to fix the existing new bugs and make it a fully functional Product. After all of the devJobs, the final product is released to the actual users.
So, Here we go π
If you liked this blog don't forget to like and comment down on it, I'll see you in next oneπ