27. 3. 2019Vráťa ZimaBusiness
A significant moment has come! Finally, you have decided and you are sure that you need to get your project onto mobile platforms and you are wondering who to ask to get the mobile application developed… And you’re still searching. We understand why — after all, application development is not general knowledge and the amount of factors that influence the price are not small. So we decided to prepare a summary of how Android and iOS application development works to make it easier for you to determine who to ask or what type of funding to choose to prevent you wasting money.
You will learn:
1. Freelance developer
As the name suggests, a freelancer is a separate entity that will take care of the entire mobile application development and distribution — the only person who can deliver the whole app in a few weeks. He or she takes care of product definition and communication with the client and is then able to test and publish the application.
The benefit of this approach is that the programmer organizes the work load independently and has a clear overview of what is happening in the application. There is no team miscommunication and therefore the communication process is smoother… theoretically.
The disadvantage is that often most independent developers have quite large problems with clear outward communication and reporting. It can easily lead to misunderstanding of the assignment and thus quite fundamental complications during the development of the mobile app.
Another disadvantage is the lack of prioritization. With a freelancer alone, it is problematic to accelerate development, and if it happens (and it is not unlikely) that such a supplier becomes ill, becomes overwhelmed with additional work, or goes on vacation, you will need to push the deadline.
Last but not least, it is important to keep in mind that a programmer who has been working on a single project for a long time will also have a very limited overview of the logical errors in the application and at the same time may overlook the dysfunctions he/she unknowingly makes in the application.
However pessimistic the previous lines may sound, know that if you can find a freelancer that is reliable and communicative, it is the best choice for mobile application development. However, there are very few people who can avoid the above-mentioned problems (and if they can, you can usually see that in their workload). It is actually a rarity in the labor market.
Risk Level: High
Advantage: Direct communication with developer
2. Smaller studio (of about 20 people)
An agency approach provides greater reliability with developer substitutability. The studio is able to provide you with the whole team, but of course the project price increases in comparison with a freelancer. Also comparing to a freelancer there is a second programmer in the developer lineup, as well as a project manager and a tester. This means four people instead of one, but they will ensure that the brief and specifications are properly communicated and the jobs are correctly processed with regular outputs in the form of new versions of the application (ensured by the project manager). The second programmer guarantees substitutability and also checks the application code, which is quite essential — the second person’s independent view reveals a large number of problems right from the beginning. The tester is in charge of trying to break the application by simulating various situations that may occur in your phone and also ensures that the application does not fall into a bad state.
The team can easily be adjusted according to the project needs, so that even a larger app is delivered at the right time, which is, of course, a major benefit. The disadvantage of a smaller agency in comparison with a freelancer is of course the higher cost of project creation. The job has to cover the operation of the company as well as four people instead of a single developer.
There is of course a risk factor as well — if the team is not working properly, there may be even more miscommunication and delays in comparison to a standalone developer. It is therefore necessary to select studios or agencies with reliable references. You might prefer a smaller agency to a larger one if you prefer more personal approach rather than an established and unchangeable corporate processes.
Risk Level: Low
Advantage: Developer replaceability, low risk of receiving a faulty app
3. Larger agency (over 20 people)
A larger agency inspires more confidence, given the amount of experience and people’s substitutability. It’s financially stable, so it’s probably not going to fail during the development of your application, which is good to know.
Larger agencies, however, require hierarchical structures to distribute information and ensure overall sustainability. At the same time, large companies also deal with many orders at once, so the management of your project is unlikely to be dealt with personally unless it is fundamental.
The price of a smaller and larger agency will not be drastically different, and you probably won’t find large differences in quality. Both smaller and larger agencies can provide both good and bad work depending on the agency’s motivation to provide quality solutions. So it is true that checking the references of agencies, whether smaller or larger, is essential for seamless application creation to make sure that everything is in good hands.
Risk Level: Low
Advantage: More confidence, market stability
Have you selected a freelancer or an agency who you can trust with your application? Then you are well on your way, but your dilemmas are not over just yet. Another major issue that you need to decide on is funding. Most apps are changing over the course of their development — because the development of a mobile application often comes up with details that could not originally be expected or the market or trends in the industry can change during the app development.
Creating apps at a fixed price
Long story short, changes are absolutely natural and it is good to count on them. In case of fixed price — fixed time contracts, adjustments are made using change requests to the original cost estimation.
But here is the problem — how will the original price change? If we want to deviate from the original brief, shouldn’t the agreed price be lowered depending on how much code was actually written? At this point, the whole situation is going to be rather complicated and instead of developing a mobile application, you are more likely to be dealing with bureaucracy and constant recalculations.
In addition, you can add a fixed delivery date that cannot be shifted, and the practical result is that only 15% of projects are successful without price increases, keeping expected quality levels and full functionality. (Figures sourced from Agile Project Management Method by Zuzana Sochová, Eduard Kunc)
Developing apps and agile contract
How to get out of it? An ideal solution could be an agile contract with a studio that is based on a prepaid team for a sprint, and before each subsequent sprint, the client decides whether the functionality is sufficient or requires more functionalities. This approach involves a very active involvement of the client in teamwork — progress is regularly reported, and the client knows exactly what he is paying for. But it requires complete transparency and synergy between all parties during the process. The client then steers the entire development process to a result that is required at the given moment and does not waste the budget unnecessarily, because the development of Android or iOS applications is not cheap. Why is that so?
The cost estimation of an app is directly related to the work that an individual or a team must spend on its development. The amount of work that needs to be done depends on the choice of technology and the size of the and most of the activities that are not visible at first sight, but ultimately play a vital role. In order to give you a closer look at what we are talking about, we have decided to show you how to change the position of a button in an app, how difficult difficult this task can be even though it seems easy at a first glance.
Move the button from the top of the screen to the bottom
At first glance, a simple adjustment that looks like it will take 15 minutes, but in reality it is a process that takes much longer. How is that possible?
The developer gets an assignment that specifies the movement of a button to the bottom part of the screen. He or she moves the button to the bottom of the screen with their best intenrions, which takes about 7 minutes. Great, we managed it a lot faster! However, in order to maintain code quality, another developer must check each feature to make sure that the code is written correctly. Checking and testing that everything is in order will take the colleague about 5 minutes. So we are at 12 minutes and we are still nowhere near the end!
At this time, we have an untested version of the app that is available in the repository and on the developer phone. However, we cannot pass this untested application on to the client for acceptance of functionality, so at this point it moves on to the tester.
The tester learns the client’s brief into detail and starts testing the functionality on multiple mobile devices of various size and display quality. On one of the devices, the tester detects that the text is displayed incorrectly and exceeds the button size, which needs to be adjusted. He or she reports the bug back to the developer and confirms that the change is being implemented. It took 15 minutes to test and report a bug, and we are now at 27 minutes.
The programmer who caused the error receives the app back and begins to fix the bug for that particular device. Unfortunately, he or she often finds that this modification is not so trivial, because it is a specific change for this one device only. In 30 minutes he or she will find the right solution, but since it is another change of the code, it must be checked by another developer again. Together it took 40 minutes to fix a bad text problem on one specific device and we are currently at 67 minutes in total.
The tester goes on to test that the functionality is properly implemented and the change has been applied to all testing devices. He or she prepares a version for the project manager who can introduce the new functionality to the client. Testing functionality and preparing a demonstration version, including communication, takes another 10 minutes of the tester’s time. Overall, we used 77 minutes for the entire implementation. Then the project manager passes the updated version to the client and introduces the implemented functionality.
107 minutes later
But the client imagined that the button at the bottom of the screen would look better. It overlaps the bottom of the screen in a specific way now, which the client dislikes and in the end suggests that it would help if the button had a semitransparent background. Therefore, the client expects a refund of the delivered function.
The project manager will prepare a new brief for the programmers based on the meeting and take 30 minutes to complete the demonstration and prepare the new change and we are currently at 107 minutes.
147 minutes later
After implementing the background, testing and subsequent presentation to the client, we are at the current time spend of 2 hours 27 minutes. The client is finally satisfied and wants to have the app uploaded on the App store as soon as possible, but it’s not that simple.
Although this is the only function that is in this application update, in order to maintain quality it is necessary to perform overall application tests, to make sure there is not any error happening in the development that could cause malfunction of some parts. The tester must do so-called system tests to check through all of the app functions to see if they all work as they should.
207 minutes later… it is done
Subsequently he or she prepares a release version for the project manager, which is already suitable for an App Store upload. Overall, the testing took another 40 minutes and we are currently at 3 hours and 7 minutes.
Preparing a record on the App Store and distributing the release requires about 20 minutes so in total we got from 15 minutes to 3 hours and 27 minutes. And then imagine what if the adjustment is much more complicated?!
So how would we summarize it all? Developing Android and iOS applications is far more time consuming than it seems. Therefore, it is important to consider whether you should go with studios and agencies that have a fixed price — fixed time contract (which, after a few missed estimates, will start to grow over the original cost estimate), or whether you should sign an agile contract that divides the entire mobile application development into individual sprints. Another thing to think about is the importance of having an accurate app preparation phase, including technical specification. As a rule, the more time spent In the planning phase, the more money and nerves are saved in the development itself.
Good luck and cheers to apps :)
Vráťa Zima, CEO