Often Sometimes when discussing the shortcomings of applications, users say that the developers were too lazy to do well. But who are app developers? Let's try to figure out what roles are in the development team.
And surely they are all there?
Basically, in order to make the simplest application, a single programmer is enough. But as the complexity grows and the development time increases, someone willy-nilly will have to fulfill certain roles, even if they are not clearly highlighted (in the form of positions or otherwise).
Project
An important point in the development of software (software) is that this very development is carried out within the framework of projects. Those. the timeline, the desired result and the budget of the project are outlined (this usually also includes human resources, because people are hired for money and the amount of money depends on how many developers and what qualifications can be hired). Now let's try to consider who is involved in software development projects.
Programming team
Actually, those people who come up with and implement the application. They:
- come up with an application architecture;
- write code;
- advise others on how to write code;
- review the code after others;
- write automated tests (at least some of them are unit tests);
Without written and compiled code, there will be no application. That is why programmers cannot be completely excluded. Even if some applications are created in a simple visual constructor, this is also a kind of programming.
It is programmers who often decide how specific functionality will be implemented in an application. And if the functionality is poorly implemented, then a significant part of the blame may lie with the programmers. Or maybe not, because the final word in decision-making does not belong to them.
Testers
These are the people who check if the application is working correctly. Moreover, correct does not mean user-friendly. The tester can write a usability note, but the first priority is to make sure that the application is working according to the requirements and specifications.
You can test applications both manually and using autotests (for example, programmatically pressing buttons and checking which screens open).
In the absence of clearly dedicated testers in the development team, their functions are usually transferred to programmers. At the same time, it is considered that the programmer cannot correctly test what he developed himself, and therefore cross-testing is carried out (Vasya tests what Petya did, and Petya tests what Vasya did). Another way to save on testers might be that an experienced tester is only hired to write a test plan, while actual testing (on a large 'zoo' of devices) is done by novice testers who 'cost' much less.
If there is an obvious and straightforward error in the application (the buttons in the calculator are sometimes not pressed), then part of the fault lies with the testers (they did not check something).
Designer
This is the person who determines how the application will look and behave. The mutual arrangement of elements, the scheme of movement on screens, animations – all this must be thought out by the designer. If the application is large and complex, then there may be more than one designer. Or, for example, one of the designers can only draw the interface, while the other can globally think over the whole concept of user interaction.
Not all software development companies have a designer, so if an application does not bode well for commercial success, it is tempting to save money on hiring a professional designer (and even more so a whole team) by transferring his responsibilities to programmers. And it may not turn out so bad if programmers are experienced enough and the concepts of 'usability' and 'user experience' are not empty words for them.
Sometimes the designer, together with the programmers, is responsible for part of the errors in the application: it happens that it is quite difficult to implement the invented design, and as the complexity increases, the likelihood of making mistakes increases. And, of course, all the reviews 'inconvenient interface' are stones in the designer's garden.
Customer or product owner
This is the person who determines the entire course of creation and development of the product. He decides what needs to be done, evaluates whether the implementation is in line with the product concept or not. For example, programmers tell him: 'It will take us two months to implement this thing. Or we can use a bunch of third-party libraries and do everything in a week, but then the volume of the application will increase by 30 MB '. The product owner might say, 'Another 30 MB? This is completely unacceptable 'or' We have a release in a month, we are doing it as quickly as possible and launching '. And he is also responsible for the direction of product development. If you're reading reviews: 'Why ruined such a good app? Now it has become about nothing at all ', you know, it was the product owner who determined this fate of the project.
The difference in role names stems from the type of company. In a product company (which develops its own internal product), a product owner is appointed. In case of custom development, a customer representative is allocated who will interact with the developers.
Can a development project do without this person? The project can, but the product (application) is not. Someone still needs to understand why this application is being developed and how it should exist and develop in the future.
Project Manager
The man who leads all this disgrace with this whole team. Tracks the due dates of tasks. Reacts promptly if quality problems begin. Motivates the team to work more efficiently ('knocks out' bonuses, orders pizza, and so on, and so forth). Together with the product owner, he decides when alternatives are possible when choosing product development during development. If the project is very large and complex (which is still rare for mobile applications), then it can be divided into several subprojects, and they can have their own leaders, and a project administrator is allocated to help the project manager, who is engaged in most of the 'paper' work : keeps minutes of meetings (records decisions made), draws a graph of project progress (for example, 'burning tasks').
According to statistics, only a small part of software development projects are completed on time with the established quality level and within the original budget. If something goes wrong, it is the project manager who ultimately takes responsibility for what has to be sacrificed: release the product later, fix bugs with updates, or knock out more money (for example, to give part of the development to another team for separate money).
For smaller projects with an experienced team of programmers and testers, you can do without a dedicated project manager. Then usually his role is played by the lead programmer – team lead (tracing copy from English teamlead – team leader).
Interested top manager
In the project management literature, he is commonly referred to as a project sponsor. For a company that develops software to order, it is not important. And without it, it is obvious to everyone what the project is giving: this is the money that the company lives on. But in a company that develops software internally (it can be a product company or a company that develops applications for its internal needs), things can be more complicated. The specific application may not be so important for the company, the size and structure of the company can make their own adjustments (someone can solve their personal tasks, for example, for career growth, at the expense of a specific project). Therefore, it becomes very important that there is a top manager who is “rooting” for the product and promoting it. In this case, if problems arise, the development team can always contact him, tell about the problems and obtain the necessary resources. Typical example: awards for successful work. If the team has really worked hard and released the application on time with the specified quality, the project manager can contact the project sponsor to initiate additional funds for the award.
Conclusion
Now you know who is who on the application development team. And if you get the idea to develop an application for Android or iOS, you will know not only what is needed for this, but also what kind of people you need to find.