English (United Kingdom)Deutsch (DE-CH-AT)
#

NearshoreIT - Blog

Stay tuned!

Archive

Agile process & team setup

05 January 2016

How to build an expert nearshore mobile app development team, part 2

Agile development

The Agile process of development is the preferred way of developing mobile apps. With Agile, we use the so-called sprint – it’s a set period of time during which specific work has to be completed and made ready for review. The length of the sprint is fixed and chosen at the start of the project – for example 2 weeks. Then, at the beginning of each sprint, we set goals – what we want to implement and function – and, after the sprint, that part is ready. After the sprint we can evaluate the current state of our product, and can redefine priorities or even the design of the application. Each sprint is designed to have relatively small, but fully working functionality added or modified. Thus we make use of Agile methodology to maintain the flexibility to make changes after each sprint. There is freedom for the client to make changes during the development to react to the market, user opinions or changing business priorities. Changes can be made at the beginning of the sprint (planning phase), but not during the sprint itself (development phase).

agile-software-development-jcommerce

The above description is true for all software development, but is particularly important in the mobile world. Current distribution platforms (App Store, Google Play, and Windows Marketplace) make it very easy to publish an early version of the product, and even easier to update it often without any effort from the end user. This, along with the agile development flow, allows clients to publish the app early, see user reviews and reactions, and iterate functionality with each sprint, publish new versions and get feedback from the real market. Feedback from real usage makes it possible to set priorities that benefit users the most, and to alter the original vision so as to make the most attractive product. Agile, along with the frequent publish model, makes it faster to iterate toward a polished, functional product.

Product owner in the Agile development model

The product owner represents requirements in terms of software development. The client should select a single person for this role, who will be the main contact responsible for providing a vision of the product from the client’s side, for cooperating with the team which will transform this vision into the product design process, and then for implementing this design. The product owner is not responsible for the technical details of implementation (unless the client so desires), but is responsible for understanding target audiences and desired functionalities, answering questions about projects, and the ongoing process of selecting the priorities for the next sprint. The product owner doesn’t need to have programming experience, but it’s good if he has some understanding of the market, knowledge of similar solutions and possibilities, as well as a basic level of technical knowledge. The product owner should have enough time to be available for communication with the development team throughout the process.

agile-product-owner-scrum-jcommerce

Scrum development team

The Scrum team is responsible for executing the product owner’s vision and requirements. This team creates the technical architecture for the application, implements it, and tests it. The Scrum team is in constant communication with the product owner during development. At the beginning of the sprint, the product owner is responsible for selecting the most important tasks to implement, and the team is responsible for estimating how many of those tasks they are able to do within the confines of this sprint. They consult on the details of requirements with the team owner throughout the sprint process, and the results of their work is tested, then submitted for review at the end of each sprint.

Depending on the cooperation model, the entire team (except the product owner) can be from the service provider, or composed from among both the client’s and service provider’s specialists.

Team setup

Setting up the team can be done after defining the requirements and scope of the project, as well as defining the expected deadlines for project development. The typical composition of such a team is as follows:

              -> Native development

Team leader/Scrum master – responsible for managing the team, tasks, and overseeing development
iOS/Android/Windows Phone developer(s) – at least one developer for each platform, responsible for the implementation of mobile apps
Server developer(s) – responsible for integrating existing data sources or creating new ones
Testers – responsible for testing the app, finding and reporting quality issues

             -> Cross-platform development

Team leader/Scrum master – responsible for managing the team, tasks, and overseeing development
Front-End HTML/JS developer(s) – responsible for the implementation of the mobile app for all platforms
Server developer(s) – responsible for integrating existing data sources or creating new ones
Testers – responsible for testing the app, finding and reporting quality issues

The exact size of the team depends on the scope and complexity of the application, as well as deadlines, and should be determined after consultation with the service provider.

Setting the requirements and the final team are important when starting a project. After that, the next step is to set the testing strategy, which we will dive into in the next article.

x