Everyone who has ever built an application knows this too well: software development can be pretty costly and time-consuming. Especially in a world affected by the pandemic, finding ways to cut excessive costs is not only nice and clever but absolutely necessary for many businesses.
Over the last 12 years and 390+ projects, we’ve learned that it is possible to optimize development costs without compromising on product quality.
Although it’s very important to state every application we build is a custom one, unique to suit your business needs, there is a possibility to integrate some existing market solutions or ready-made open-source modules into its infrastructure.
Also read: Development Cost Optimization: Don’t Commit These Mistakes.
The Two Approaches
There are two approaches to building digital products. The first one is rather rare and requires every component, feature, and process to be built-to-order from scratch.
Although in this approach we build custom features, using any programming language is in fact, building on a technology already invented by someone else.
The second way is building an application using existing tools, solutions, and open-source code. Or, in case of rebuilding an existing app, working with legacy code.
In this blog post, I want to focus on the second approach and dive deeper into how it can decrease development costs and what are the solutions to common problems and needs.
How To Optimize Development Costs With Pre-existing Components?
1. Take advantage of existing SaaS and BaaS solutions
There are many third-party service providers and tools offered for a reasonable fee or even for free.
Over the years of developing applications, we found that often there is no need to develop new ready-to-use solutions and reinvent the wheel since there are existing ones available that are working perfectly fine.
One example of such a tool is Jitsi - a free, open-source video tool that’s easy to integrate with a new project and can be used as a standalone app.
Source: Jitsi
It’s a perfect case of a tool we’ve tried, tested, and used in projects that required a good video meeting solution. We used Jitsi in one of our client’s projects, which needed to integrate a video tool to facilitate video property tours.
Another is Stripe, a comprehensive online payment suite for sending and accepting payments and invoices for retailers, online businesses, and marketplaces to name a few.
Apart from being a payment processing powerhouse and a seamless integration, it handles issues related to compliance and GDPR on the third party’s side so neither you nor your software provider needs to carry the responsibility and acquire all the necessary licenses.
Source: Stripe
2. Use open-source code and solutions available on the market
Most of the technologies we know and love, such as Ruby on Rails or Python, have robust open-source libraries that are constantly upgraded and offer impressive solutions for common product needs.
Using open-source solutions or building upon an open-source code for features that are common, such as admin panels or user authentication modules.
One example of such a solution is OAuth, an industry-standard protocol for authorization which we often use to facilitate the approval of applications interacting with one another without giving away the user's password.
3. When you have an existing app with outdated code - think about legacy code refactoring
Outdated code can significantly impair your app’s performance and can make your product difficult to maintain and expand.
One of the ways to approach this situation and avoid deactivating your app while you’re building a new one from scratch is to refactor your existing code and rebuild your app using a hybrid approach.
Our Head of Technology recently explained this approach for the Increment Magazine:
The rewrite should be spread out over a period of time—say a couple of years—to minimize technical debt and financial cost. You need to know what to change first: Some features are core and business-critical, while others take more of a supporting role.To handle this arrangement, you’ll need to create interfaces like APIs or bridges to allow your legacy code to communicate with your new technology. As you add new features in the form of separate microservices, they’ll eat the business logic of your legacy code piece by piece
Gradual code rewriting is a great way to rebuild your existing app bit by bit without stopping its functionality and losing your users!
4. When you want to integrate eCommerce into your app
eCommerce platforms are generally very complex and expensive to build from scratch. The good news is there are excellent solutions available on the market with teams of experts and impressive performance backing them up.
You can successfully integrate the solution that best suits your business into your product and find the money and time for installation and maintenance is much lower than the cost of building a bespoke eCommerce engine yourself.
We’ve recently published a comprehensive comparison of the best eCommerce platforms to choose from to give you a gist of what’s worth considering.
5. When you want to build a cross-platform app
Say you want to build a mobile app for both iOS and Android and make it responsive in Web browsers. You’ll be happy to hear that you can build a cross-platform app with one codebase with technologies such as React Native, Flutter, or React XP.
We chose React XP for projects such as Guild or Cooleaf because of its high code reusability between Web and mobile apps.
Why are those solutions worth considering?
Developing software using smart, existing solutions has a lot of benefits. Let’s focus on the most important:
- Saves a lot of development time. We all know time is money, especially in development.
- The faster you release the product to market, the sooner you can get valuable feedback from your users and make better strategic decisions.
- Building an app with a flexible approach in mind enables you to make product changes quicker and easier.
When Is It a Better Idea to Build Custom Modules?
Although using some pre-existing solutions and components can be a smarter choice in many projects, there are cases that require fully custom-made development components.
Possible cases include:
- When you have specific requirements for managing your user base or when your desired features are innovative and there are no solutions available that would let you accomplish your goals
- When you’re already using a solution that is expensive and you don’t get the results you want. In such case, you may come to the point where it would benefit you more to build your own
- When the existing components that fit your project are very young and not tested enough to be proven to work well - then it is probably safer to build it yourself.
An important thing to note is that your app should always give your users a unique experience and respond to their needs.
If a unique frontend and UI design will bring value to your users, you should definitely go for it, but there are some cases where you can build it with ready components, for example, if you are developing your initial prototype or an application for your organization’s internal use.
Other Ways to Optimize Development Cost
- Plan smart. Make sure to prioritize essential tasks and separate the “must haves” from the “nice to haves”. Good planning will make the process more structured and efficient.
- Take advantage of the Agile methodology and the frequent X. Testing, iterating, and making swift changes when needed will help you keep track of the progress and the budget.
- Lay out your product requirements precisely and simplify where possible. Sometimes functionality can be achieved in a simple or a sophisticated way - determine if you can start with the basic Proof of Concept and add complexity later in the process.
- Involve a Quality Assurance specialist from the beginning of the development process (or even in the planning phase!) and start testing your product early. As bugs and errors tend to accumulate over time, it is best to identify them as soon as possible to avoid the need to rework.
- Don’t be afraid to start testing your product in the early stages of development and collect user feedback (even from your friends and family!) as soon as it’s possible.
Bonus Tip
Don’t underestimate the power of good communication between you, the PM, and the development team. Lack of sufficient information and misunderstandings can cost you a lot.
As many companies build software that drives their businesses forward, it is important to discover ways to make the process faster and reduce costs. Embracing best practices, leveraging the agile methodology, and using some existing solutions and tools can really go a long way, helping you save money and development time.