04 June 2020
Technology gone wrong? Learn how to fix 5 common problems in software development
Your software project was supposed to be problem-free but all you got so far is a headache from all the complications. No one seems to help nor find the solution and you’re not sure what to do yourself. Software consulting services come in handy in those situations. Whether it’s a faulty technology, slow application, or frustrated developers, software consulting will be able to detect the core of your tech problems. In this article, I will present the five most common problems in software development projects that require the attention and services of a software consulting company.
This article is both a cautionary tale for anybody consulting a technology partner right now (a.k.a. don’t repeat the same, avoidable mistakes) and an advice piece for companies that already struggle with technological problems that affect their business and desperately need some software consulting services. I’m going to focus on issues related to programming languages, cloud, application monitoring, custom software development processes and differences between a product and a service.
1. Picked wrong technology/programming language. What do I do now?
Possible scenarios:
- Somebody convinced you to create your app in “hot&trendy” technology that after a while turned out to be only a temporary hype. Now you’re stuck with a not-so-hot&trendy product with limited options to expand it.
- Your app is built with outdated technology (e.g. AngularJS, old PHP, Flash) that’s no longer supported or secure.
TL;DR answer: tech stack transformation
Next-big-thing and good-ol’ technologies have something in common. In both cases, there are very few software developers actually working with them full time. And the ones that do are so scarce that they demand the world for their development and consulting services.
In order to push the development of your app further, you face a choice between two hopeless solutions. You either keep the app running and look for someone to take care of it on a regular basis, or grow a money tree and spend a lot on rewriting everything from scratch. Both options may sound pretty weak – can anything else be done? Probably. But in order to decide what to do, you need a three-step software consulting..
Step one – audit, step two – brainstorming (building a bridge or starting from scratch), step three – decision.
Let me explain what’s going to happen during those three steps with real-life examples.
As far as hot&trendy technologies are concerned, don’t cooperate with someone that throws themselves at the next big thing but rather uses proven solutions. Unfortunately, this pattern is often a domain of freelancers. They are not associated with specific technology nor business strategy and offer “trendy” services because they are bored. They try out the new solution, jump the hype train, write a few projects, and charge a lot for their development and consulting services because the market is totally crazy about given technology (can’t just miss the opportunity, right?). They won’t think about the future of your product because probably at the time your app needs refreshing they will be long gone, flirting with the next, next trendy innovation or programming language. Software companies don’t throw themselves on hyped technologies that easily. They rely on a stable course, transparency, exchange of knowledge between developers. It’s quite difficult to change your reliable tech stack for a seasonal craze.
I’ve also mentioned outdated technologies. So let’s talk about AngularJS. After two years from its debut, the creators decided that the upcoming new version will no longer be compatible with the previous one. It was left behind to rot without support and security but, oh my, did the development companies around the world get angry… Why? Because in order to move to a new Angular, the apps had to be completely rewritten (btw. that’s one of the reasons for React development services being on an extreme rise). Even in The Software House, our custom software development consultants had loads clients in this situation and they still keep coming. Our developers not only have to write their apps from scratch but also support the old app for the end-users.
That brings me back to our three steps. Software audit is necessary to establish whether you need to go brutal, rip the app out and start again (painful but sometimes necessary), or build a bridge between the new and old elements (evolution, not revolution). Often, rewriting the application is simply not an option so building a bridge will save you a lot of time and money.
It’s a very individual process that varies from project to project. Development and consulting services will look at the solution, code’s quality and structure, in order to establish if it’s structured enough to combine the old and the new, or if it’s necessary to start all over.
During a brainstorming phase, our strategy is to always create an app’s roadmap – that’s plans for the future, new functionalities, possible problems, etc. It will tell us the level of integration and what’s the most profitable at this stage.
Finally, after careful deliberations and data analytics with the client, we come to the decision – picking new technologies that will communicate well with the solution or building a transitional platform that allows you to connect the old and the new. The decision depends not only on technology but also on business strategy. I completely understand that sometimes the decision is extremely difficult, that is why it’s better to know a full picture and available options based on a thorough report from the software consulting and development team.
💡 Read more: Flash is dead. Adobe Flash alternative & advice
2. There’s constantly something wrong with my app and everybody tells me that it’s the server’s fault. Is it really?
Possible scenarios:
- Your application is hosted on a private, physical server (bare-metal server). In the beginning, it was working well but now maintenance becomes expensive, errors occur on a daily basis, there’s very little space left, and suddenly, you notice weird errors in production that weren’t occurring during the testing phase.
- Your enterprise is seasonal and the application supporting it has significant traffic increases on specific dates. It can be a ticketing app when a big event is announced, or Black Friday deals. The app (that normally works fine) suddenly is slowed down by too many users, customers are getting frustrated and you lose business. You see that current architecture just won’t do anymore and there’s the need to upgrade your solutions but you don’t know how to go about it.
TL;DR answer: moving to the cloud will probably be a good idea
Before we find the solutions to those problems, let’s see how we get there. Because you have never had a demand for great computing power, you decided on economical hosting. However, is this really the most cost-effective option? The application was probably fine at the beginning but then the avalanche of problems appeared: non-stop errors, app slows down and crashes. And then the tech guys say: “It’s the server”.
And it probably is the server… ‘s bad configuration. Usually, the application’s preview is built on a test environment and then moved into production. However, both of those environments have to be perfectly identical, and bummer – both are configured MANUALLY. One little slip up can start a disastrous snowball effect of bugs and errors. And then the voices say: “Maybe a larger server?”. Guess what – that’s bad consulting, mute those voices immediately!
Nowadays servers are much more than computing power and a bigger server won’t solve your problems. You need a modern solution able to develop further in the future.
In order to do that, software consulting with development and DevOps teams is necessary. This also corresponds to the second scenario. You are able to optimize the app’s server infrastructure in a way that more resources will be added automatically when the traffic suddenly surges and fewer resources will be engaged when the peak ends. That means no wasting money on resources when you don’t need them. Simple, yet brilliant solutions!
Clouds were created to solve not only issues with scaling but also staging environments (aforementioned testing playground and production site can be literally copied with ctrl-c, ctrl-v). With all other requirements, modern applications need single sign-on authorisation, API Gateway, load balancers, CDN, file storage, system backups, Continuous Integration, search engine (like Elasticsearch), logs, metrics, and much more.
A properly configured application in the cloud can use all those ready-made solutions and features. For instance, look at the Amazon Cloud that offers dozens of out-of-the-box elements that are just a click away. No complicated configuration needed. Just take a look and compare it to the „cheapest” five-dollar server. Initially, you’ll pay a few dollars more for the cloud. But when you add hidden costs of a bare-metal server (maintenance, new server space, fixes, manual configuration), you’ll quickly realise that you definitely overpaid.
So how do you know for sure if the cloud is a solution for you? You need a DevOps and development team that will conduct a thorough audit and custom software development consulting. Usually, after reviewing the code and architecture, you’ll need some adjustments to the app to safely move it to the cloud. Then you’ll be able to enjoy all the benefits offered by the cloud solutions.
💡 Read more: How to optimize and upgrade a high-traffic application? A case study
3. My app suddenly slowed down, the customers are getting angry and my development team has no idea what’s going on. I need to make it faster, ASAP!
Possible scenario:
- You’ve built a custom platform but the number of users is constantly growing and the application is slowing down. Your developers have absolutely no idea why and where the bottleneck is. You bought a bigger server – no improvement. You’ve hired a freelancer – they’ve come, blamed everything but eventually haven’t helped and said it has to be rewritten from scratch. Clients are complaining which puts pressure on your business.
TL;DR answer: you desperately need DevOps services for application monitoring and QA services for performance tests.
I know the natural reaction to a crisis like that is to ask someone for a one-time fix. Unfortunately, it doesn’t and won’t work. You need to restore control over the application. In order to do that you must learn WHAT causes the app to work so slow. Any software is a system of connected vessels and if you want to learn how to speed it up, you need to break it down. It’s not a trivial issue and shouldn’t be taken lightly. Here’s a to-do list I use for software development consulting with The Software House clients.
If you want to gain control over your application, you need to introduce solutions like metrics, monitoring and performance tests. Hence why services of DevOps and QA engineers are needed.
The first step is hiring a proper performance test specialist. You need to introduce metrics so you could count mathematically HOW slow the app actually works. After that, you will know what number your application needs to reach to work fast. That’s your goal. I also advise consulting with a QA specialist to run automated tests at any time to check whether anything’s changed or not. With a well-configured automated test, you can even run it yourself anytime you want!
Now it’s the DevOps engineer’s turn. They build control over the solution with bottlenecks, memory consumption and what cases make the application go slower. This is an operation on two fronts – metrics track the app’s (over)load at every stage, automatic robots check the status and DevOps spot holes and bugs.
This solution will stay with you forever. Call it the project control through the diagnostic system.
In the future, tests can be run at any time, so if software developer patches a bug, they can check straight away with automatic tests if that fix helped the speed or not. But wait there’s more! You can sometimes predict upcoming issues with an early warning system, for example, Prometheus metrics. When it detects bottlenecks, it will measure them in real-time, and raise an alarm by sending you an email with details. Even if you can’t see it yet, you will know beforehand that the troubles are coming.
The final step after a complete and thorough system diagnosis is recommendations for software developers who will finally know what to fix. However, that differs from project to project.
💡 Read more: Metrics in infrastructure optimization process: Finding application bottlenecks
4. My app was perfectly fine until we expanded it and added new functionalities. Now nothing seems to work and any changes take ages. My development team gets angry and threatens to quit. What’s going on?
Possible scenarios:
- You’ve built an app and the first version worked like a charm. Then you got feedback from end users that new features are needed. Suddenly, your development team seems to struggle. More and more often you hear that something “cannot be done”, “needs more time”, “something’s not right”.
- Your developers are unhappy and want to quit projects that they’ve themselves built from scratch. You don’t understand why they are so frustrated. The whole situation is just unpleasant, and you’re scared you’re gonna lose your team.
TL;DR answer: You’ve got a case of technical debt. You need to plan and design appropriate processes.
Now you’re probably wondering, what the heck is technical debt. Let me use the first scenario as an example. The application’s architecture “collapsed” when new features were introduced because, in the beginning, there were no plans to introduce new functionalities, and architecture wasn’t able to support changes at future stages. Making technological and business decisions without considering future consequences (choosing an easier and faster solution for starters) is a shortcut that many companies decide to take. Eventually, they end up putting even more extra work, resources, time and money not only to fill in the past holes but also future-proof the whole solution.
Imagine that your app fits one piece of paper. But when you write and plan it so it fills the entire page, there will be no room for future improvements. After all, you can’t squeeze a whole book with images on one piece of paper!
Okay, so how to avoid technical debt? Or maybe you’ve already fallen in the rabbit hole and need help getting out? The answer is the same – you need proper software consulting with specialists who will introduce strict processes of software development.
Software development processes include a lot of difficult technological issues, and from my experience, tech people struggle to explain them to the business folk that sometimes think it’s not their concern. However, this is extremely important because if neglected, technical debt will make a negative impact on your company, and cause frustration amongst developers.
Speaking of developers – I am sure your software team is amazing and people are able to write high-quality code. However, they are not all-mighty deities and they don’t know how to do to every single thing (and they don’t have to, really). So without directions, control and leadership your developers will go round in circles. They need clear goals, otherwise, they will end up frustrated.
I’ll tell you an industry secret. Every single software project works flawlessly for around three months. Then the first problems occur and the technical debt starts to creep in. When facing a crisis like that, developers without a specific plan will suggest rewriting the whole application. Why? Because every single software project works flawlessly for around three months. The circle is completed.
Now, we need to break this vicious circle. If you don’t know how to create custom processes dedicated to supporting your business and its development, then you should think about hiring a software development consulting services from a competent software development company with established processes.
I can’t speak for everybody but I can tell you how we do software development and consulting at The Software House. We believe that an outsider entering the system can look at it objectively and form new ideas on how to fix it. That’s why we organise workshops on good practices that educate business-related staff on technological issues with a simple and understandable language. The topics include: streamlining the in-house team’s operation, setting a path of modern software development techniques and standards, faster and more agile deployment, a new arrangement of software processes (that includes not only developers but also QA specialists, DevOps engineers and project managers).
When we face a critical situation where the in-house team won’t be enough, we can throw in our software development consultants to train your people and introduce appropriate processes. Looking at our past projects, I can guarantee you that after 2-3 months and introducing processes, your company will be totally refreshed. It might look like Gordon Ramsay stormed in, causing blood, sweat and tears – but just like in his shows, eventually the effects of proper software consultations and mentoring will be worth it.
💡 Read more: 5 software development outsourcing scenarios for IT executives
5. I’ve bought ready to use software solution. I wanted to add some new functionalities but the vendor says it’s not possible. Why?
Possible scenarios:
- You’ve picked a low-cost, off-the-shelf solution from an external company that seemed to meet your needs. Now, your business has grown and you would like to develop this system according to new requirements. You contact the vendor but they don’t respond, say that nothing can be changed in the system or take a really long time to introduce new features.
- You’re thinking about buying a ready-made solution but you’re not sure whether this solution will work properly with your future business plan.
TL;DR answer: off-the-shelf solutions are products; custom software is a service. You need a team that will either integrate with your existing solution and add new functionalities or rewrite the whole thing.
Let’s start by saying – ready-made and custom software are two different things. Let me explain.
Ready-made software is a product
You’ve checked the existing offers, picked the cheapest one that more or less meets your requirements. Your team implemented it pretty quickly and everybody was happy. After a few months, end users demanded 15 new options that are necessary for their jobs.
The software producer has no intention to help you because their business model involves selling their product to as many new customers as possible, not maintaining and developing it for the old clients.
Those companies are NOT interested in making changes for a specific customer. You can’t count on anything past decorating the platform with your logo and company colours.
You’re stubborn though, and somehow you’ve managed to get help. I can assure you, that the cost will be astronomical and it will take ages to implement the changes. It won’t be a product with a lasting relationship between you and the company.
Custom software is a service
It definitely is more expensive at the beginning but what’s included in the price is… priceless. It’s not only a future-proof, customised app dedicated to your company only. It’s also mentoring from software consultants, training for your developers, maintenance and long-term business relationship between your company and the software house. Our Project Manager has already explained where does the real app development cost come from, so if you’re more interested in what’s included in the price, I recommend his article.
To be perfectly clear, both solutions have advantages and disadvantages. The ready-made product will be dedicated to your industry, simple and quick to implement – two weeks and you’ll be using it. It’s okay if you don’t need any other functionalities. However, if that’s your main solution, I am sure that after a while it will be insufficient.
Let’s say that there you are with your ready-made solution that needs expanding. Now what? Your software developers will probably tell you to bin it and rewrite it from scratch (circle of life from point 4). You can’t just throw it away because this tool is needed in the company. Maybe an integration? Officially, you’re not allowed to do anything with the ready-made product’s code but there are other ways. You can create connectors and add-ons that will allow you to add new functions by linking with the product you’ve purchased. This saves the costs of writing a new app. However, as I’ve mentioned before software audit may reveal that the cost of integration will be nightmarish and it’s much better to spare time to write the app from scratch properly.
In that case, companies are usually concerned about their data. After all, you’ve probably gathered quite a pile on your platform. What’s gonna happen to this data if you decide to write a new system? From my experience, most often it can be done. We will keep the “magical” methods and know-how in-house though. 🙊
💡 Read more: IT project risk management: 7 most common software development risks
Consult the common problems in software development projects
When business and technology clash, there will be a lot of conflicting opinions. Sometimes the tiniest thing can drag your project down. Software consulting services are there to help you connect business and technology better. The Software House has a lot of experience in mentoring companies and both their non-tech and tech-savvy staff. Our software developers, QA specialists, DevOps engineers have prepared countless digital consulting workshops for various companies. If you have an unsolvable problem, we’ll definitely find a professional solution.
No matter if it’s big data consulting, data analytics, cloud computing services, project management, implementation or productivity problems, outsourcing services, etc. Start your transformation in accordance with your company’s strategy and business processes with The Software House – web development and software consulting company. The vast expertise of our software consultants will help your enterprise to deliver high-quality solutions and fix any technological problems that occurred.
More information?
Book a free software consultation with our engineering professionals here.