In the first part of this Manual for IT Recruiters, we describe individual roles within the software development team. The term “software” encompasses internet banking, accounting systems, CRM (a client management tool), various mobile apps, Windows apps, etc.
A full list of roles one can find in such teams would be the following: project manager, analyst, architect, tester a developer. Not all these roles need be in every team, however. In a smaller project, e.g. developing a simple web app, the team will often comprise just a project manager and 1-2 developers. The developers can often perform the activities of the analyst and architect, while the project manager can take on the role of tester. In contrast, where the project is significant in size, one can find a number of analysts, testers and developers within the team.
The project manager’s objective is to manage the whole project – manage team members, communicate with the client, take responsibility for delivering the result by the agreed date to the agreed quality. The PM’s bread and butter is planning separate parts, communicating with all team members and organising meetings required. In order to successfully handle a PM role, you need to be rigorous, organised, good at planning and have excellent communication skills. Although PMs need not know in-depth about the technology used, they should have a technical education and have a good idea of how programming, analysing, etc. works. The project manager’s activities can be compared to that of a site manager in construction.
An example of the tools project managers use to organise their projects better:
The analyst’s objective is to analyse the individual parts of the developed software. The analyst often communicates with the client and ascertains all their requirements. The analyst’s output in simpler projects is a text specification which serves as the assignments for the developers. For more complex projects, they also produce UML diagrams showing the processes the particular app will be implementing. The analyst is usually involved in the first phase of the software development. UML diagram example:
The architect’s task is to choose the technology which will be used to develop the particular software. Because there are today hundreds of technologies, programming languages and frameworks, the architect must carefully choose which components are most suited to the particular task: whether to use large robust or easy-to-implement frameworks, whether to use a native or hybrid programming language to develop a mobile app, how to set up the API, through which the mobile and web app will communicate, etc. Software architects also propose the architecture in general, determining whether it will develop procedurally or object-oriented, what data types are used, etc. The architect must have a lot of experience and in-depth knowledge in order to be able to always choose the best tools and procedures.
Example of web app architecture:
a.k.a. programmer. Their task is to programme the whole app or part of it. Programming is done by “writing code”. The code differs depending on what programming language the developer is using. The app or software can comprise thousands, tens of thousands or hundreds of thousands of lines of code.
An example of simple code:
It is natural that the software developer may make errors during programming when writing thousands of lines. And so comes the turn of the tester, who tests whether the particular software works as it should. The tester proceeds according to scenarios prepared for him by the slightly more skilled test analyst, who is able to assess which parts of the application are critical and how to test them. The tester subsequently goes through the whole application, enters various values within it, verifies different procedures and endeavours to find places where the app/software works poorly. He subsequently reports back on these places and sends it to the programmer, who corrects it. We differentiate 2 types of testing – manual and automatic. Manual tests involve standard “clicking” through the app. Automatic tests are programmed pieces of code which, e.g., test the software at certain periods from a particular perspective.