My App Is 99% Ready, Just Lacking the Final Touch
Topic: Common Mistakes
August 1, 2023
My project is almost done, but circumstances led the previous developers to leave. You only need to add the finishing touches and launch the application.
We come across this request repeatedly in our development company. Entrepreneurs from various countries and industries, regardless of their business nature, reach out to us with the exact same phrase. Almost invariably, after examining the project, the same realization emerges - the code left by previous developers is utterly useless.
Our colleague Katherine Pavlovic has already described a common scenario where entrepreneurs mistakenly trust unsuitable developers to build their apps. The focus of the article is on projects that have become prey to outright scammers. Our article explores a comparable scenario. The situation where entrepreneurs are forced to seek new developers when their application is nearly complete, being "99% ready," often occurs due to the initial programmers' lack of expertise in overcoming the challenges they faced.
We will share the story of one such project revive, wherein we actively participated as a coordinator and a developer. Through this firsthand example, we will bring to light the dilemmas confronted by entrepreneurs in such unfortunate circumstances. Moreover, we will examine whether the client had a chance to prevent the error of selecting the initial developers, which ultimately resulted in a failed project.
Don't Offer Me App Rewriting
A request came in from the owner of an online store who wanted to sell products on various popular marketplaces in addition to their website. They needed an application to transfer product data, including images, descriptions, manufacturers, and prices, to the marketplace platforms in the correct format. According to the client, the development of this app had been ongoing for six months and was almost finished. However, the app developers recently left to pursue a more profitable project, prompting the entrepreneur to search for a new team.
The client openly admitted that our company was not the first they had approached to finish their “99% ready project”. The feedback received from various sources was consistently demoralizing - the app's quality was severely lacking, requiring a complete rewrite. This left the entrepreneur thoroughly dissatisfied, having invested half a year's time and almost all of their budget into this venture. To find themselves with nothing tangible was a hard pill to swallow.
We explored the app to understand how we could assist in the project recovery. It soon became apparent that the previous team's technology choice was far from a good fit.
They opted for Google Apps Script, a programming language created by Google for users of their services like Gmail, Google Docs, and Google Sheets. This tool provides users with a simplified programming approach called "Low Code," allowing them to write small programs directly within the Google Chrome browser with minimal programming skills required. Tasks like automating email sending can be accomplished using this tool.
What the app creators ultimately produced was a series of Google Sheets. The product cards were passed from one sheet to another, aiming to transform them into the necessary format. Unfortunately, using Google Apps Script, which is more suited for small data volumes, posed challenges when dealing with the online store's vast inventory of around 40,000 products. This resulted in the app being excessively slow, taking approximately 10 minutes to process all the cards. Moreover, the app failed to achieve its intended purpose as the processed cards couldn't be uploaded to the marketplace, and the root cause of the issue remained unknown to us.
So, What Are the Options?
The following are the conclusions we came to and the possible solutions we suggested to the client for their software project rescue.
- We have determined that we are able to make the existing app carry out its main task of displaying the client's products on the marketplace platforms. However, it is vital to acknowledge that the app will suffer from substantial slowness, inconvenience, and complexity in terms of improvement. Moreover, recurring technical problems are expected to incur significant maintenance expenses. Nevertheless, the app will still manage to function to some extent.
- Clearly, we considered the alternative option much more desirable - investing in the development of a fully functional application that would act as a genuine asset rather than a perpetual source of frustration. Our estimation indicates that it would take about 3 months to create the new app.
The client made the decision to go with the first option, clarifying that they lack the means to develop a new app currently. Consequently, they decided to invest in reviving the existing one to generate supplementary income. Despite being fully aware of the shortcomings in the app that we advised them about, they expressed their willingness to endure them.
In order to revive the app, we had to investigate the issue of product cards not loading on the marketplace. To do this, we got in touch with the app's creators.
Nice Guys, Yet Not Skilled Programmers
They turned out to be nice guys and readily agreed to talk with us. However, it quickly became evident that they couldn't be of any help. They had no clue about the source of the error and essentially admitted their inability to launch their creation. Upon asking about their unconventional technology choice, they explained, "We needed a solution to handle tables." We didn't inquire further as it became clear that they lacked professional expertise. After all, working with tables can be accomplished using any programming technology. And practically any of the widely used technologies would have been a better fit for this project, but our interviewees appeared to lack proficiency in them.
The authenticity of the tempting offer they mentioned as the reason for leaving our client's project remains unknown. Nevertheless, we are confident that they truly regretted the project getting stuck. Afterward, they continued to stay in touch with us, showing interest in the project's progress, and asked us to share how we managed to make the app work.
The client chose these developers because of the positive personal connection he had established with them. Their communication was smooth and enjoyable, and they appeared genuinely eager to be of assistance. It's possible they weren't deliberately dishonest when they expressed their ability to deliver - newcomers often overestimate their capabilities. This story serves as a reminder that while good communication with a contractor is crucial for collaboration, it alone is insufficient for project success. Besides communication, high qualifications of developers are essential, and relying solely on their own assertions to assess their skills might not be the wisest approach.
Consequences of the Decision Taken
Eventually, we managed to get the application working, allowing the client to showcase their products on additional platforms. The entire process took us a couple of weeks, making it much cheaper for the client than starting a new development. Now, the questions that emerge are whether the project recovery results have met entrepreneur's expectations, and how satisfied are they with the app functionality, despite its imperfections? We will reveal the continuation of this story for you to assess it yourself.
1. Once the application was launched, the client faced frequent technical malfunctions, leading to contact with us for support.
2. Additionally, limitations in the app's functionality became apparent.
- For example, buyers searching for products from a specific manufacturer on the marketplace frequently encountered difficulties finding the client's items due to minor discrepancies in the manufacturer's name listed in their product cards. Unfortunately, the application lacked an automated solution, necessitating manual editing for each card. We had to create a special form to simplify the search and editing process for cards with such errors. In a fully functional application, such an inconvenient and labor-intensive procedure would never have arisen.
- Another important app drawback was the inability to adjust prices in real-time based on competitors' product costs. The only available option was to apply a fixed discount to all products at once, and even then, the changes would be reflected on the marketplace with substantial delays.
3. As a consequence of these and similar limitations, the revenue from trading on marketplaces fell short of the client's expectations.
4. Furthermore, the expenses for developer services to address technical issues and devise solutions for functional shortcomings are steadily increasing. Sooner or later, it will reach a point that would have been required to rewrite the app properly. And eventually, it will surpass that amount.
This is precisely what we and other development companies cautioned this entrepreneur about. Although the idea of adopting an already existing, albeit low-quality app may seem tempting, it rarely yields favorable results over time. Instead, a web of problems emerges, multiplying exponentially and potentially causing significant damage to the business. Andrew Romanov has shared a story about an entrepreneur facing a substantial loss of their customer base because of unmanageable technical issues with their app.
We have been engaged in numerous stories of software project and application rescue, similar to the one we have just shared. This enables us to state that without technical specialists in the entrepreneur's team, there is a significant risk of making a mistake in selecting developers and entrusting the project to dishonest or inadequately skilled programmers.
We will share our thoughts on the precautions that can help avoid these mishaps and offer options on how to get a project back on track.
1. It makes sense to trust the advice of friends or acquaintances who have had direct interactions with developers
There are no guarantees that you will personally enjoy the work of these developers - such assurances never exist. However, the alternative path of independently researching multiple companies and conducting numerous interviews will require a significant amount of time and effort, with no guarantee of increasing the project's success chances.
2. It makes sense to ask for help from acquaintances with technical expertise
Without a technical background, it can be highly intricate to make judgments about developers' qualifications and experience by examining their portfolios and conducting interviews.
3. It makes sense to regularly ask developers to demonstrate the already completed app functionality throughout the collaboration
We hold such presentations on a weekly basis in our company. It's critical to confirm that you are shown real working features and not merely visual representations - for instance, a functional button that performs the expected action upon clicking. If there is a lack of new features in the application for several weeks, it might be a sign that the project could be at risk.
4. It is crucial to acknowledge that it is impossible to completely eliminate all risks and losses
In case of any doubts regarding the developers' expertise or the application's quality, it is advisable to reach out to independent experts without delay, for example, by conducting a code audit with a different development company.
5. Upon realizing that your app's quality is insufficient, it is sensible to swiftly change developers and take measures to secure a fully functional application at the earliest opportunity
While it's possible to salvage a low-quality application in certain situations, there are instances where the only effective method of obtaining a fully functional application is to start its development from the beginning. This could mean losing the funds already invested, but persisting with a low-quality app might lead to far greater losses in the end.
By Natalia Rudik and Aleksey Korotkevich