DECEMBER 12, 2019
11 min read
The development of digital assets is not only about designing, coding, and verifying the quality of mobile and web applications. There is a variety of activities that must be done to create useful and high-performance software or digital ecosystems. However, when it comes to software development outsourcing, clients are willing to save money and start cutting budgets as much as they can, especially if they don’t understand the importance of some activities. Everything becomes more complicated if there is no strong tech leader on their side, such as a CTO, software architect, or technical product manager. On the other hand, most IT outsourcing companies don’t even try to educate their clients or propose advanced software engineering techniques and methods, even if they know that the latter can save the client’s budget in the future.
Having a solid experience in digital product design and development, we can name a few reasons for such behaviour for both the client and the outsourcing services provider:
- Don’t understand the importance of the process. When you have developed more than 500 digital products and introduce them to the market, you start to realize the importance of system scalability, consequences associated with web or mobile app development technology stack, and drawbacks of the poor digital quality assurance process. The most important is that you understand what needs to be done to simplify the maintenance of the digital ecosystem. This issue is usually fixed by gaining the experience for the contractor and business customer.
- Don’t realize the potential economic benefits. For instance, automation of some processes requires time in the beginning. However, if you try to draw the analogy between the time needed to process the script and the man/hours of the real developer or QA engineer, you will see the difference. Companies usually don’t want to pay for something they can’t see, such as load balancer set up or the CI/CD tools.
- Don’t know the associated risks. An efficient software development framework includes such steps as strategic planning, design development, evaluation of the architectural solution, coding, software product testing, and setup of the production environment. All these stages are critical for the development of a reliable, functional, and attractive application. Though, some companies decide to eliminate 50 percent of processes to get their product at the lowest price possible.
- Don’t know about these steps. This problem originates from the lack of experience in the development of production-ready solutions and their further maintenance. When you interact with your software product after launch and go through the entire user journey — download, sign-up, login, actual use — you understand what could have been done better.
In this article, I want to focus on the processes that most clients of outsourcing software development companies neglect and later pay a high price for that. I’ve divided them into six blocks: Design Development, Feature Development, Quality Assurance, Infrastructure Development, Management, and Data & Analysis Process. The order of the list is not correlated with the importance of the section since all the stages are crucial for a proficient software product engineering. Since each item in this list requires additional investment, I’ve added an average cost in hours for each.
#1 Software design development process
For mobile or web applications, the design is one of the essential parts because it underlies and shapes the user experience in interacting with the software. I want to emphasize that the design of the application is not only user interface (UI), but the way how the application interacts with the user to address their needs. Design thinking becomes the core process in product development. The following list is:
- Design testing. App design should be tested thoroughly to avoid usability and logic issues. Project designers and technical product owners have biases because they know how the application must work. Thereby, they can’t be objective because it is their baby-project. The product design testing can be done by quality assurance engineers, real users, or focus groups. Time estimate: ~40h.
- App prototype. The visual prototype of the software can simplify the testing and development process. You can always demonstrate how the app works to the investors, friends, and family before it is even developed. The prototyping process is not that expensive or time-consuming, but most IT outsourcing providers usually don’t propose this step. Time estimate: ~12h (with existing design).
- Adaptive design. The difference between responsive and adaptive design approaches is that responsive design is like a rubber that changes the proportions depending on the screen size; meanwhile, adaptive design changes the position, type, and content of the screen elements. In other words, the screen for the iPhone 4, iPhone 11, and iPad can have different graphical user interfaces (GUI) but contain the same list of functionality. Adaptive design is used for web projects to improve user experience in interacting with websites on different screens or mobile devices. Time estimate: ~2h per screen (with existing style guide).
#2 Feature development process
The lines of responsibilities for functional and non-functional requirements are fragile and unclear. Some stakeholders believe that software engineers should think and act as product managers, suggesting improvements or thinking over all possible use cases. Sometimes companies ignore developers’ recommendations and give the responsibility to the product/project manager. The following list contains items that are strongly suggested by the developers and usually ignored by firms:
- Unit testing. During the software development cycle, engineers can cover the code with automated tests that unveil success and failure cases of code behavior. It is the way of white-box testing because the product engineering team definitely knows how the code should work. The unit tests help to produce high-quality software, but they can increase the estimated time for development by up to 25%. Based on the Dashdevs experience, we’ve also noticed that unit tests help developers to improve their skills. Time estimate: +2h to each 8h of the estimate.
- Code review. Even the best developers in the world can make mistakes. The code review is the way how engineers supervise themselves. When the client hires one full-time developer, it is better to have another more experienced dev for 25% of the time, especially if the leading developer is ‘Junior’ or ‘Junior+’. Too often, clients want to get cheaper resources and so additional control helps to ensure that the quality of the software is not compromised. If the client hires the team with more than two devs, they can perform a code review for each other. Time estimate: +2h to each 8h of the estimate.
- Offline mode. The implementation of the offline mode takes time since developers need to build local storage and additional requests for an update when the connection is available. Firms usually get back to the development of the offline mode when they understand that the application becomes absolutely unavailable without an Internet connection. Bear in mind that the offline mode requires additional testing. Time estimate: ~40h.
#3 Quality assurance process
Some clients think that if developers can produce the app, they can also test it and make sure that everything works as expected. That’s so far away from the truth. The developer can write the code; however, the quality assurance engineer must verify the correct behavior of the application in different cases. The testing process can be done in an automated or manual way. For instance, if we’re talking about custom mobile app development, then stakeholders need to make sure that at least the UI part performs well on different devices (including different manufacturers and screen sizes).
- Quality assurance process in general. I understand that this may sound a little bit awkward, but we have many clients who want to reduce the cost of end-to-end software development by omitting the QA stage. Depending on the feature complexity and magnitude, the testing process can require an additional 50 percent of the time for the documentation and verification process. QA team usually helps developers with the bug reproducing process or preparing testing sets for verification. Time estimate: +4h to each 8h of the development.
- Load testing. It is one of the non-functional testing methods that helps to check the scalability and stability of the application during peak loads. To perform the load testing, you need to prepare the environment, think over the script of the actions, and identify the metrics that you want to verify. Time estimate: ~40h
- Integration testing. This way of testing helps to make sure that different parts of the application work correctly together. These tests are essential for complex applications and enterprise software solutions that have a lot of third party services and synchronization processes. Time estimate: ~8h per connection.
- Automated tests. Some parts of the application are developed and stay unchangeable for an extended period of time, however during every release, QA team needs to check that these components still work properly. The example of such a feature is registration, and if you cover it with autotests, the process of manual quality verification can be omitted. Time estimate: ~8h per feature.
- Test documentation. Test plans, test suites, and test cases must be written for every project because your QA team must understand how to test the application. The test documentation simplifies the transfer of knowledge and helps to gain experience. For example, if you find some edge case, you can add it to the test cases list and be sure that it will be tested in the future. Time estimate: ~4h per feature.
#4 Software project infrastructure
The infrastructure is a rabbit hole for the firms. Without a technical background, it almost impossible to understand what is there. Cloud infrastructure is one of the main trends in fintech product development for the last few years. The following list covers some items that your app users never see; however, they necessarily appreciate that due to high performance and prompt responsiveness of the application.
- Several environments. For the effective and clear app development process, we need at least three separate environments for engineering, testing, and production. The first one is a playground for developers since they need a place to check their solutions on the developers’ level. The second one is for the QA team and acceptance testing, so there is the compilation that is planned for the production release, and software testing engineers need to verify if it’s ready. And the last one is the production for your users. Sometimes business owners want to save expenses and decide to have only the production environment, while such an approach brings too many risks and can result in disappointed users and lost revenues. Time estimate: ~8h per environment with CI/CD set up.
- System monitoring and health checks. How do you know that the application is not working correctly? Is it always so visible for the users? Among the most typical issues are: a part of the services isn’t working, no access to the database, CPU overloaded, delays in the responses, and so on. All this leads to the poor performance of the application. As a solution, you can check the app by yourself every 30 minutes or set up a monitoring system that notifies when the system or some part of it is not working. The notification can be different per the incident and have different levels of escalation. Time estimate: ~40h per environment.
- Load balancer and scalability. The typical issue for growing businesses is that they experience problems with underperformance during the most active period of usage. The load balancers are the answers to these problems. There can be an application, network, or classic load balancers that can handle millions of requests per second. Time estimate: ~24h per environment.
- CI/CD processes. Continuous integration (CI) and continuous delivery (CD) have already become an integral part of the software development culture. They help to deliver code changes more frequently and smoothly to different environments. Every developer can compile the build, but they spend time on it, while this process can be easily automated. Time estimate: ~8h per environment.
#5 Software product management process
Different companies use different roles, such as product managers, product owners, project managers, scrum masters, and delivery managers that take on the management functionality during the system engineering lifecycle process. Each position has its zones of responsibility that are defined by the business culture and procedures that you have in place. Sometimes management roles are on the side of the business customer, and sometimes they hire the project management services from an IT outsourcing partner.
- Product documentation. The business, functional, and non-functional requirements must be documented for the developers. Documentation templates and structure can differ from product to product. User stories, user flow, and sequence diagrams, software and service specification, and business requirements can cover the entire functionality of the digital product. Time estimate: ~40h for draft description.
- Product meetings. No matter if we’re talking about in-house or offshore development teams, they need to understand what is the digital product they are working on and what are the goals the business want to achieve. Software engineers are not just coders, so it’s important to spend some time and help them understand the product. Time estimate: ~8h per team member.
#6 Data and analytics services
This section is one of the most underestimated and one of the most essential for software product development. It is the foundation for strategy generation and its correlation.
- Mobile analytics. The implementation of the necessary analytics for web and mobile application helps the product and business owners to verify their hypotheses by analyzing real users’ behavior. The variety of options such as Google Analytics, Mixpanel, Appsflier can help to track and analyze data from your products effectively. Time estimate: ~40h to cover each button in the mobile app.
- SEO optimization. Too often, companies think that if they create a landing page or site, it will be easier for users to find it. However, the web page must be optimized for the web crawlers, so they can easily index it. Each page must contain correct metadata with the right keywords that repeat the requests of real users. This is the job for SEO managers and copywriters to provide the correct data for optimization, and the developer just pastes it in the proper place within the code. Time estimate: + 3h per page updating metadata, or +8h if the page structure needs to be changed.
- Data science. The process of data gathering must be followed by data modeling that helps to analyze and predict user behavior. The data science has a variety of possible outputs for the business that can be delivered from the data warehouse. Time estimate: + 40h for data warehouse set up, +8h to connect an additional source, and +16h for basic model creation.
In pursuit of competitive development, it is essential not to miss the point when the cost-cutting outvalues the well-timed implementation. In the list above, I’ve put together only the most critical items that can improve the product and minimize the cost of maintenance in the long run. Business owners usually save money on making rational decisions for the software development flow, so use this article as a checklist not to miss anything. Dashdevs tech specialists can explain to you every item in the list and select the most useful for your particular case.