Nowadays, technology is growing at an unprecedented rate – the trend concerns especially technologies related to mobile. This trend has been brought about by the continuous development of mobile devices and their software. It is also related to the newly emerging technological branches: Internet of Things (IoT), Augmented Reality (AR), Machine Learning, etc. In a company such as Netguru, it is extremely important to keep up-to-date with all the technological news and tools that could improve development. To accomplish this goal, we created two R&D teams: one for Android and one for iOS. Their task is to research and develop ideas based on new technologies and develop the skills of the developers so that they can provide the highest level of services.
R&D: the process
Completing tasks in our R&D teams requires a structured process. This is why we have defined a process that allows us to supervise better what is and will be done by our teams. We have decided that the best solution was to implement a unified process for both platforms: iOS and Android. Because developers from both platforms use different languages and frameworks, we also decided to have a separate R&D Tech leader for each of the mentioned platforms. Thanks to that, the leaders can focus only on the technologies related to their own platform. And for those services that can be shared between platforms (Realm, Firebase, etc.) we created a Slack channel to keep all the interested parties in the loop. The basic task of the R&D leader is to define the plans for the R&D team and monitor their progress. However, it is the ideas that are the basis of that process. Out of those ideas, new types of research or internal projects are developed. The ideas come either from brainstorming sessions or individual initiatives of developers or other R&D stakeholders. Thanks to such an approach, the ideas provide a point of departure for our processes.
We divide ideas into either research or development tasks. It’s different than what you might think about R&D. For us, research means something rather small. Checking out features of a new library, be it from GitHub or the hot-new-cool stuff from Apple, Google or a service we might use in the future, i.e. comparing the tools like Realm Mobile Platform vs ObjectBox. It is usually a task for one developer. The R&D leader is responsible for properly evaluating the idea and the goal of a piece of research. It should be aligned with the organization’s business objectives.
The development, however, is something bigger. It can be an app such as Inbbbox (iOS, Android) or atStats, or a library such as Picguard (Ruby, Swift) or Response Detective. It can sometimes be developed by one developer but more often than not. Such projects require more hands for the work to get done. As you can see on the Inbbbox contributors page, 15 contributors were involved during the development phase. What’s more important, when developing an open-source library or an app, you need to remember about maintaining the costs of such a project. Your work won’t just abruptly finish after you release the 1.0 version. On top of that, for some projects, we need to cooperate with our design team. Due to the potential complexity of a project, we always try to make sure the idea is really good and evaluate it thoroughly before the project is run. In this case, a project needs to get the green light from our Head of Growth. After all, developing such project can cost you a lot. Hence the need for a thorough evaluation.
Tracking the ideas
Research projects are smaller endeavors and involve only one or two developers. For managing them, we decided to choose Trello, because the platform is perfect for keeping track of projects of a small to medium scope. The Trello board for the research process we use (for both iOS and Android) consists of seven columns.
And for even better readability and ease of use of our board, we use the following labels. Because who doesn’t like those colorful horizontal bars?
Labeling is not everything. Each of the cards on our Trello board corresponds to one idea. Each of those ideas needs to be described precisely. To achieve that, we defined card templates to make each description consistent. A template contains eight sections:
mission, idea, definition of done, skills, estimation, product owner, assignee, progress tracking
The Mission section should contain a description of what you want to achieve by researching/developing this topic. Idea should contain some details of what the project is about. The creator should put as many details as it is possible. Definition of done outlines the expected results. Skills contains information about the required skills that a developer should have to handle this task. Estimation gives a rough estimation of how long a project is expected to take. Product owner section should point the person who will be the owner of the idea – this person will be responsible for defining what the project requires. The Assignee section should contain the name of the person responsible for implementing this idea. Progress tracking always links to some kind of a tracking document, e.g. a Google Doc.
The author of an idea specifies the idea according to the template. This makes understanding and evaluating the idea easier for the R&D Leader. The Leader can now determine whether the idea fits into the vision of the team and the company. As a result, it speeds up turning the idea into reality. Once the idea has been approved, it will be moved to the To do column, a developer will be able to pick it up and implement it.
Trello is great, and it fits well for such small tasks as research. In contrast, development projects (e.g. an app or library) are quite substantial, and usually involve multiple people. To track all tasks in such projects, we use the same tool as for our commercial projects: JIRA. Of course, a dedicated project manager supervises the implementation of tasks in each development project. Thanks to that, we ensure that our internal projects are managed identically to our commercial projects.
So here it is, our research & development process. Of course, our work is not done yet – we still need to regularly analyze it and iterate to fix and adjust the process whenever necessary. Do you have a dedicated R&D process in your organization? What do you think of the process we outlined in this post? We would love to hear your feedback!