Skip to main content

Career in software engineering : Roles to know

when someone starts a career in software engineering there are plenty of options. Although most graduates have the same degree, everyone starts in a different role.


  • Developer / Coder - Engineers in this role get a chance to actually implement and write software. At the start of a career mostly it is about fixing defects in existing software then taking small changes to the software and eventually getting to the point to handle and implement more complex changes. 

  • Quality analysts / Quality engineers - Engineers in this role test and automate software. This is a challenging role where one has to know about the full functionality of the software and test accurately so the software built is of high quality. This role also involves the automation of test cases and preparing a test suite that can be run and detect issues automatically.

  • Release Engineers - Once the software is built and tested release engineers are responsible for pushing a set of code to production. A production is a place where actual software resides. Most of the time they also write code to build pipelines and flows which takes of whole process in just a click. Release engineers are responsible for tagging/versioning and making sure all changes are in for the software.

  • Production support - Once software is in production it is ready for use by end customers. End customers can face issues with the software or can face issues with the environment where the software is running. Production support engineers make sure all environments are up. They address issues based on the severity of the problem. They are the first point of contact for any troubleshooting. There are several categories in prod support as well where Database admins , Web admins , Infra admins, and other technical support people work together on solving real-time issues. If everyone is facing issues there can be also problems with code where defects are raised and fixed.

There are other important roles as well that go along with the above roles.

  • Product Owners:- Responsible for setting up the product/software. They are responsible for prioritizing features and new functionality of software.

  • Product managers:- Product managers handle the whole team who works on the software. In this role managers continuously work with product owners and teams to complete features on time. They take care of budgets, team members count, capacity planning, and collaboration with other teams on timelines.

  • Software architect:- Mostly responsible for design of the product/software. This role deals with the implementation at higher level. This role involves with working with product owner , product manager and team for challenges and implementations.Architect also involes with other architects of the product in reaching to the common design and common technologies. Architect create dependencies and feature requirements with other teams. Architect is go to go person for the team for any challenges and technical answers.

  • Scrum master :- In agile scrum master is responsible for scheduling meetings , working on the timelines , taking scrums , planning  and refinement meetings.
In some projects we have other roles like where each role carry  broader set of tasks

  • Devops engineer :- This role inline with release engineer role but does lot of other operations in today's cloud world.

  • Data engineers :- This role starts picking up with more data involved in the software systems. They are responsible for writing code on collecting , cleaning , analysing and extracting data. They also involve in building dasboards for analysis and showcase to business team. With AI/ ML coming into picture they are also responsible for building models and algorithms for predictive analysis.

  • Database engineers:- Now a days developers do these tasks as well but in some software where database is large and require focus there are set of people who work on schema designing , data partioning ,backup , recovery , mitigation and maintaing database systems.

  • UI/UX engineers :- They are responsible for building User interface for the software. now a days most of the time developers directly work with UX team in implementing user interfaces.

Comments

.

Popular posts from this blog

Nth Node from End in LinkedList

Nth Node from End in LinkedList 1)  Find length of  linked list. 2) Traverse (length-position+1) element from begin. //nth Node from end public Node nodeFromEnd ( Node head , int position ){ Node temp = head ; int length = 1 ; while ( temp . next != null ) { length ++; temp = temp . next ; } System . out . println ( "length" + length ); temp = head ; int c = 1 ; while ( c !=( length - position + 1 )) { temp = temp . next ; c ++; } return temp ; }

Heap implementation in JAVA

In this tutorial we will see all the functionalities of heaps implemented through java language. package com . problems . heap ; public class HeapFunctions { //Function to generate maxheapify where root is max than childs public void maxHeapify ( int Arr [], int i , int N ) { int largest ; int left = 2 * i + 1 ; //left child int right = 2 * i + 2 ; //right child System . out . println ( "left" + " " + left ); System . out . println ( "right" + " " + right ); System . out . println ( "Max size" + " " + N ); if ( left < N && Arr [ left ] > Arr [ i ] ) { largest = left ; System . out . println ( "largest left" + largest ); } else { largest = i ; System . out . println ( "largest i" + largest ); } if ( rig