- Posted by Kateryna Bozhenko
- On July 24, 2017
- 0 Comments
- application, company, control, development, documentation, iteration, Octodev, process, quality, testing
The modern mobile development offers a lot of flexibility and powerful tools to turn your ideas into robust apps. Yet even if a top talent in the industry was hired, it does not automatically mean that the results will meet your expectations. You need to ensure the quality of the product – and implement reliable means to do so. In this article, we take a look at the general rules and principles that will help you maintain full control over the dev process.
Standards – the fundamental principles of development
One of the key problems you will face over the course of the development process is ensuring consistency. Standards are vital.
They are basically a collection of successful practices that have been developed by the most experienced industry members over years or even decades. Apart from that, they allow for much easier communication between team members and help streamline the work process.
It boils down to sticking with a certain set of rules. It may be somewhat tricky because development involves a lot of creative work, but it has to remain within certain borders to remain efficient.
Standards should keep a balance between the creative side of the work and adherence to workflow principles. If you choose to keep your developers caged within a strict framework, you may inhibit the process. Besides if your app is innovative, you will have to venture into unknown territory at some point. The standards should pose a necessary minimum, yet they should be enforced to avoid unnecessary risks.
There is actually no single set of rules that would be used by everyone in the industry; some standards may even be competing, so you have to choose one in the end. Don’t try to come up with a new set of rules – this is a route to unnecessary complexity.
Standards allow specialists in different fields to do their work efficiently. This means better code review and easier testing. Why would you refuse to use experience accumulated by other people through trial and error?
Testing – make sure things work as intended
Every solution that is developed should be tested in a variety of possible scenarios. This is what quality assurance is meant for.
Testing is the key to success. A modern application consists of a wide variety of components that need to work together. The code is generally supposed to be reusable for the sake of development efficiency, which means that a single flaw may result in grievous consequences. Even if the chances of failure may seem low, it is no reason to ignore the threat.
Don’t cut costs on quality assurance! The results of such negligence are far beyond reasonable compromise.
Every iteration of the development process includes such stages as defining the problem, prototyping a solution, implementing and testing it. Only after every step has been accomplished you can be sure that you’ve actually made progress.
Security – protect your assets reliably
Security is absolutely vital for the success of the project, and it is actually surprising how often this is overlooked. It is true that the benefits of proper security can’t be evaluated easily. Until the damage is done, you can’t really put an exact price tag on it. Yet the results may be devastating.
To start with, if you didn’t intend to harm anyone it doesn’t mean you are safe. People may have various incentives to hack your application or inhibit its work. If you manage to attract the audience, someone may consider you to be a dangerous rival. This is especially important if your marketing tactics are actually working.
Another piece of bad news is that cyber attacks are neither rare nor expensive nowadays. They are becoming increasingly widespread and the attacks are becoming easier to conduct. Some ways that were excessively difficult before, are pretty widespread today.
The ability of the code to withstand malicious behavior is a primary factor that determines its quality. And it should be thoroughly tested before the application is released into production. Don’t hesitate to check your application for every possible scenario to make sure it will hold through.
Every feature in your application should be documented. It is never obvious what the components do, and thus you need to make sure that every part of the app is thoroughly described in a way that is understandable for the specialists.
There are documentation standards that have been developed over years of coding practice. Clear and comprehensive docs make both development and maintenance easy and save a lot of time further on – a worthy investment in the growth of your project.
Make sure that you have a comprehensive understanding of what you want to accomplish. If you lack clear vision of the end result, the team will end up wandering in the dark and changing the task way too often. As a result, the work will be slowed down significantly, the deadlines won’t be met, the team will be in a hurry – and overall quality will decline. Specifications are used to depict the goals and features that have to be implemented.
Communication – code is written by people
Remember that clear communication is the key to success. This seems to be obvious, but it looks like the quality of communication is neglected in the favor of some technical advantages or simply to save time.
Usually, a variety of specialists is involved in the development process. Every person has his or her own vision, skill set, and certain experience. This takes communication between them to a totally new level. People need a clear set of rules to communicate – and technical means if necessary.
With a wide variety of participants involved in the process, the need for clear communication becomes the cornerstone of the dev process. The product owner (or the stakeholders) should be able to communicate with the developers and convey their vision. Of course, this goes both sides – the developers should have access to your expertise to ensure that the product meets the expectations. Don’t worry about the distance – it is still possible even if every team member is working remotely.
Make sure that everyone is on the same page! This will save you from the trouble of discovering unpleasant surprises and fixing them in the future. It boils down to every team member having his own field of responsibility – but none of the participants work in an isolated environment. Every single person should understand exactly what part of the application is working on, and how it interacts with components or the user.
The quality of the resulting solutions may be evaluated by tests or other metrics, but the quality of the process itself can’t be measured automatically. It relies on human factors and this is something that developers should do.A big problem with coding is that there can be various solutions for a task, and some of them are suboptimal but fast to implement. Younger and less experienced developers will be tempted to use them – especially if the time is limited. These algorithms solve the task at hand, but will most certainly cause issues later on. It’s like a time bomb set to explode, yet you don’t know when it goes off. Does it happen the evening before important release? You don’t want it to happen, do you?It requires an in-depth understanding of how things work and interconnection of lower level mechanisms. It basically boils down to experience. Get senior members to look at work that is being done and actually express their opinion.
This is considered to be standard practice and while it requires additional hours, this is an investment that protects the projects from critical failures.
Evaluate the efficiency of team members
Measure the efficiency of the team members on a regular basis. Sometimes team integrity isn’t really the prime matter of concern. If some can’t really keep up with the pace or provide consistent quality, unfortunately, you’ll have to replace him (or her). This should, of course, be an unbiased decision based on comprehensive evaluation of the employee’s efforts. People are no machines and even the most stress resistant specialists may experience a temporary drop in performance.
Define a set of rules that will keep the development process on rails and stick to them. Even if it costs you additional resources, this will help you achieve your goals according to the schedule and actually deliver value to users. At Octodev we put special emphasis on production quality. Invest in reliable work and have experts turn your ideas into reality.