article-spots
article-carousel-spots
programs
News

Project responsibilities of various IT specialists: roles, tasks, and skills

27 Dec 2019

Everyone who wants to grow in IT should answer one important question – what IT profession to choose? The answer is uneasy to find since the beginners do not usually have access to real IT projects and find it difficult to understand what project role is assigned to a certain specialist. If choosing a profession relies on abstract ideas, expectations for the upcoming career journey may not be eventually fulfilled.

To get a better insight into the real IT project processes and the roles of each specialist implementing them, we invited Vladislav Solomonov, EPAM delivery manager. Based on an imaginary yet relevant example, Vladislav explained the nature of IT project development, what roles are important at each stage and what skills IT specialists need to efficiently solve their project tasks.

Vladislav Solomonov:

Let’s imagine we’ve got a request from a cosmetics company. The customer asks for an app for tablets, that would assist their in-store customers in choosing cosmetics: users would look at themselves in a tablet and use the augmented reality mode to overlay their image with not just mascara, lipstick, or rouge, but the whole combination of several cosmetics products.

Presale

At the first project stage, it is required to identify a specific business objective that the customer wants to achieve and the way the contractor can assist in achieving it via product development.

It all starts with an account manager who participates in initiating and closing the project, developing an account strategy, and managing sales processes. Their responsibilities comprise a financial part of the project, including profitability and revenue objectives. Additionally, the account managers are responsible for continuous development of the customer-contractor interaction; they must provide the kind of partnership environment that will bring as much value to the customer as possible, specifically to stand out in the market and increase their competitive advantage. To achieve this, the account manager needs the following key skills: financial awareness, understanding of the major businesses’ processes, knowledge of a particular business domain, vast experience in achieving strategic business objectives by the means of IT, and knowledge in performing digital transformation. The account manager is a professional mediator, a specialist in business and finance with experience in IT.

An architect and business analyst engage in the project on a deeper technical level and estimate approximate scope and cost of work. In our case, for the architect and business analyst to provide a more precise project scope estimation, it is initially decided to involve a UX team that will define the way for the customer to achieve their objective with the maximum user involvement.

Discovery

The task of the UX team is to design user “experience” to emulate not just working with the product but interacting with the customer’s brand. In other cases, the first project stage may not feature the UX team. But in the context of the development of ready-made custom solutions, an interface is needed and important. No doubt, the customer can design an interface by themselves, but it’s more effective if it is prepared by the team of the contractor that develops the app.

A UX specialist is a professional in visual design, but it’s only a starting point. The key requirement to them is to understand the principles of the customer-product interaction and maximize user involvement toward customer’s brand. The UX specialists design not just interface, but the whole sequence of actions performed by a user when working with an app. They should also consider the emotional aspect of that experience.

A project manager joins the project together with the UX team. At the discovery stage, their responsibilities comprise coordination of the UX team activities and agreements on the product documentation. But later on, the area of project manager’s responsibilities will notably expand.

It’s important for the business analyst and architect to join the working process at the discovery stage. Together with the UX team, the business analyst elaborates user stories. A user story is a short but detailed description of a task which users should be able to fulfil via the system. The business analysts “dig in” deeper than the UX specialists: they investigate the solutions which are not visually represented in the app. For example, under what conditions does a user receive emails from the app? Who has the authority to edit the information on a cosmetics product if, say, the price changes on Black Friday? And should there be a timer which will take the price back to its former value? The speed of the whole development process depends on the business analyst’s output. The business analyst is a specialist who understands the customer’s requirements and knows how to work with them. The business analyst conducts special meetings with the customer to define these requirements: interviews, workshops, surveys. Besides, they can prototype and describe business processes. They also understand how to set clear tasks for the development team so that the outcome fully meets customer’s expectations and needs.

Based on the defined business objectives, user stories, and quality parameters (non-functional requirements) prepared by the business analyst, the architect creates a product solution architecture. For the architect to perform high-quality work, they need excellent knowledge of all technologies involved, advanced communication skills, and understanding of business domains. The architect is a specialist responsible for the product’s technical architecture. They are proficient in design and development of the product, use of technologies to achieve the customer’s business objective while preserving required quality parameters: scalability, productivity, fault tolerance.

There’re basically two solutions on our project. The first one is an application that users can see on a tablet (front-end). The second one is a system on a server which manages the app – general settings, product lists, product names and prices, video clips selection, etc. (back-end). That’s why two architects are needed to work together to create compatible solutions. The front-end architect works for two weeks while the back-end architect performs subsequent integration of the front-end with back-end and other services (for example, email sending, product database).

So, the UX team provides design which is agreed on with the customer. The business analysts create user stories, and the architects prepare product architecture. Together, the business analyst and architect define the required work, its scope, criteria, etc. It all makes the basis of a roadmap. The roadmap is taken into work by the delivery manager.

The delivery manager is completely responsible for the project implementation. Their key task is to ensure the project implementation provides the outcome that fully corresponds to the customer’s expectations. The delivery managers lead the processes of project planning and implementation, including prioritization of various activities, progress tracking, documentation support, creation of and following to the Risk and Management processes. Currently, we are only at the discovery stage, but the delivery manager already needs to know what to do now for the project to deploy successfully.

The delivery manager needs to set a project structure and make sure that all project participants understand their objectives and responsibilities. Besides, the delivery manager together with the account manager communicates with the customer and suggests ideas on the optimization of the developed product and the customer’s business in general. The delivery manager is a high-level technical manager fully responsible for all project aspects and the outcome. They have vast experience project management and programming, understand the work of each team member, and have extensive knowledge of IT in general.

Staffing

The Discovery stage is finished. It’s time to staff a team. The architect and delivery manager involve a DevOps engineer, performance analyst, and four team leaders of front-end, back-end, functional testing, and automation testing teams. The team leaders together with the architect and delivery manager build the teams.

Development

The development stage begins. And the delivery manager starts to experience time pressure, especially if they work on other projects as well. That’s when the project manager (concurrently scrum masters) steps in. They are responsible for internal and external communication, establishing processes, and optimizing the scrum. In particular, the project managers need to organize regular briefings and inform stakeholders on a project status. Their task is to establish the processes and everyday team’s workflow in a way for project development and implementation to meet the defined requirements to budget, time, and quality. Since the technical part remains the delivery managers’ prerogative, the project manager may not have a degree in technical sciences but needs to understand the process of IT development in general, have project management experience, and excellent communication skills.

The project task of the DevOps engineer is to ensure continuous development process: a CI/CD deployment, optimization of infrastructure performance, assistance in maintaining quality parameters. Thus, the DevOps engineer can work with CI/CD processes, infrastructure (clouds, intranet servers) and write scripts to secure quality parameters.

Functional testers test the front-end, process the results of the business analyst’s and UX team’s deliverables, and create a test plan and test cases. For functional testers to provide high-quality results, they need to pay attention to details and be perfectionists. Automated testers can create automated tests since the first day of the development in case the architecture is built properly. They are responsible for covering the whole product with tests. Paying attention to details and perfectionism are also natural characteristics of the automated testers, yet it’s also important for them to be familiar with a programming language, for example, Java or C#.

Meanwhile, developers write the code. Front-end developers usually write in JavaScript, Swift Objective-C for iOS, Kotlin or Java for Android, and back-end developers – in Java, C#, Python, etc. In order to collectively get the code of good quality, programmers need to have not only decent technical skills but teamwork skills as well.

Team leaders actively participate at every project stage. Usually, they are delegated the authority of the delivery managers to make certain important project decisions. The team leader sets tasks for their team members and coordinates tasks execution. For the processes within the team to be efficient, the team leader needs to have not only excellent programming expertise, but leadership qualities and skills in efficient communication (for example, with the customer). Besides, the team leaders are also mentors of their team members, they advise on technical issues and perform the code review more often than anyone else.

The first release on a development server

In the very beginning, the developers write code on their local hardware. Then at some point, an integration server is brought up, and the product version 0.1 is installed on it. It’s not a fully-fledged application but an MVP (Minimum Viable Product) – an application framework. It’s needed for integrating the local developments into a single entity (check CI/CD performance) and run initial global tests.

So, we have released the product version 0.1 and continue on adding new functionality. At some point, the functionality is stored on a UAT (User Acceptance Testing) server, where the customer’s team tests the product which is almost complete. The customer may also involve a security team to scan the application for security threats. And if some threats are identified, the developers will have to address them.

In some occasions, performance analyst may join the working process. Their responsibilities can be performed by other specialists, but they are crucial if a single project involves multiple servers and performance speed is a focus. The speed is important on banking and trading projects, or during the development of online stores and online video platforms, for audio services – in every occasion when milliseconds are important. The performance analyst can also be involved at the discovery stage to properly adjust the architecture. This specialist is particularly important closer to the end of the project to analyze the performance of the almost complete product.

With time the team is reducing, but during the UAT every project member is required. At this stage, there’re only the front-end and back-end team leaders, tester, delivery manager, project manager, one UX designer and, partially, business analyst left on the project. The other team members elaborate product details and agree them with the customer.

Handover

The Handover is a process of knowledge and responsibilities transfer from the contractor’s DevOps engineer to a DevOps engineer of the customer or SRE (Site Reliability Engineers) team, who will take care of the production stability.

It’s important that as soon as the Handover is finished, the contractor represented by an Application Support Engineering team will continue working on the product support. Application Support Engineers are specialists with excellent communication skills who help users solve their potential issues. These specialists also have DevOps skills in maintenance of the infrastructure performance. Besides, they are capable of setting tasks to the development team who may be involved to solve technical issues that require changes in the code.

Probably, at this point the cooperation with the customer comes to an end. Or maybe the delivery manager or account manager proposes new appealing prospects of cooperating on customer’s business optimization. A responsibility of the delivery manager, account manager, and architect is to make sure the customer is interested in further enhancement of the product.

When the project enters the Support stage, the product steps into a new interesting phase: new roles like a service delivery manager, release manager, and others appear. They are responsible for performance and enhancement of the Go-Live product. But that’s another story to tell.

Vladislav Solomonov has described a development process only in basic terms, yet it’s sufficient to get the idea that an IT project is a complex unity of resources where each role is important. Entry-level specialists can study and try out in the roles of a programmer, tester, business analyst, or UX designer which require no particular background. In order to get a higher-level position, for example a team leader, architect, or project manager, continuous studying and extensive experience are must.