SoftwareBY RabIT software engineering · July 03, 2018

Build or buy software? Many business owners wrestle with this question while addressing their software needs. They struggle to decide whether to opt for ready-made or custom software, as both the options have their pros and cons. Off-the-shelf software vs custom software is a decision that depends on various factors, including your business needs, the cost, and the benefits and risks associated with tailor-made and ready-made software.

Here are some pros and cons to consider when weighing whether to opt for custom software or order ready-made.

 

Pros of Off-the-Shelf Software

  1. The ready-made software is a commercial product that is available for everyone, and because of that, you can buy it at a lower initial cost.
  2. Buying of the software allows fast implementation, and its proper documentation, including user manuals, makes it easy to adopt.
  3. Moreover, it has already been tested and proven to be useful for your business needs. Importantly, experts have designed its functionalities after determining the industry’s needs. If you have a small budget, it makes sense to invest in ready-made software.

Cons of Off-the-Shelf Software

  1. However, as off-the-shelf software addresses common business needs, it may not resolve your specific requirements.
  2. You also cannot add new features, remove unnecessary features, or modify its inbuilt functionalities; therefore, you cannot scale it to meet expanding needs and larger demands of your business.
  3. You also fail to get an edge over your competitors, as they may be using the same software.
  4. With ready-made software, there are also integration challenges. It may not be compatible with your diverse set of systems, which will affect your business performance.
  5. And, you may have bought custom software at a low price, but its cost will gradually increase because of updates, maintenance, and compatibility issues.

 

Pros of Custom Software

  1. Custom software can be a perfect fit for your business as you get it with the aim to resolve specific requirements. It is unique, highly compatible with other systems and applications, and provides you with flexibility.
  2. With custom software, you also stay ahead of the technology curve, which gives you an edge over your competitors.
  3. Moreover, you get the freedom to add new features, make changes, and set a time for further updates.
  4. You can also scale it up to meet the expanding and evolving needs of your business.

Cons of Custom Software

  1. However, unlike ready-made software, the custom software takes time to build, as developing something from scratch is a lengthy process.
  2. It demands a higher investment – both money and time.
  3. You will usually have to spend considerable time testing it and ensuring that it is bug-free. To make this part easier for our clients, our QA team devotes considerable time and effort to make sure that every released version works free of errors.
  4. It may also take time to implement custom software if there is no proper user documentation. This is why we think that writing clear and detailed documentation has to be closely integrated into the development process itself.
  5. Anything that comes with the custom tag costs more than solutions developed for mass market. The cost is likely to rise further if your development team does not have the skills necessary to build custom software. You must have a strong, capable team if you want to make it well worth your investment.

 

Subscribe to the RabIT Newsletter

What you get if you join our email list:

  • Actionable insights about software development topics
  • Interesting case studies and news about IT innovation
  • No marketing spam

You can unsubscribe at any time

 

Questions to Ask Before Making a Definite Decision

Now that you know the pros and cons, here are some simple questions that you need to ask yourself to determine whether to choose off-the-shelf software vs custom software for your business.

  • Can my business benefit from new cutting-edge technologies?
  • Is there going to be a change in my business structure?
  • Do I plan to scale my business in the future?
  • Will I introduce new services or products in the future?
  • Is there a solution available in the market that fully resolves my pain points?
  • Whether I can afford custom software?

 

Final Thoughts

You can opt for custom software if you have the budget, a great deal of time, and expanding business needs. The ready-made software, on the other hand, is an ideal solution for you if your budget is limited, and you cannot afford to expend time and resources.

If after reading this article and answering these questions you think custom software is the way to go for your business, lets talk about your solution during a free consultation. This way you can get all the necessary information to get started, without any long-term commitment.

If you would like to learn more about working together with a software development team, follow our social media pages.

RabIT software engineering

RabIT is an innovative software engineering company from Hungary. Our goal is to help startups and enterprises drive growth through technology innovation and make a real impact in their industries.

Code quality and transparency are our main priorities throughout each project.

IT ProcessBY RabIT software engineering · May 16, 2018

Odds are, you have already worked with software developers at some point in your career. If not, it is very likely that you will, especially if you want to hop on the digital train yourself. Knowing how to avoid software development failure and manage developers is essential is you are planning to launch your own project.

We’ve already written about the main reasons why you should start business digitization right now in our last article.

In any case, it’s no secret that it can be pretty difficult to stay on the same page with the technologically gifted.

Over the years of working in the field, we have seen many cases where projects fell off track simply because clients and software developers failed to really understand each other.

This is why I’ve decided to use this article to address the misconceptions and simple misunderstandings that can easily lead to software development failure. I will also share some advice based on our own experiences of what worked well for us in the past.

 

Communication

I didn’t put this one first by accident. A software project stands no chance without open, frequent communication between all parties involved – especially if we are talking about an internationally distributed team.

In some ways, people who are designing the product and software developers who are building it often don’t speak the same language. This is not a language barrier in the traditional sense.

Clients usually don’t have technical expertise, and they lack the ability to really see things through from a development standpoint. They need help from the development team for this.

On the other side, software developers will never have the same level of experience and insight into the client’s specific industry. The client has to provide these insights for them.  

This is why bidirectional communication between them is so crucial.

We still frequently receive projects where development came to a halt simply because communication hadn’t been working between the client and the developers. In these cases, both sides failed to share relevant information with each other regarding changes in product features, or production difficulties.

Most of the time, the development team didn’t even understand what the client had in mind. This resulted in some pretty wild product releases, and sometimes, on the longer run,  software development failure too.

software development failure to specify features

 

Expecting results

This is becoming an increasingly common source of misunderstanding.

Because of the ever growing competition in the software development industry, more and more development firms and freelancers decide to give very unrealistic initial project estimations. They do this to stand out from the crowd. Clients can easily get deceived if they don’t ask for a second opinion, or educate themselves on the matter.

Most of these projects start to fall apart relatively early, and end up as another software development failure. On the long run though, these kinds of offers can also result in super unrealistic client expectations towards software developers.

From time to time, people show up with some truly amazing and logic-defying requests that make us question our own sanity as well.

 

Here are some of our all-time favorites:

“I want to develop a site like Facebook for $5,000.”

“I need a (1!) developer to make a clone of eBay. If they can do it, there is no reason why you can’t.”

“Why do you need three months to make a mobile app? [Name] from [OtherDevCompany] said they can do it in a week.”

 

If clients don’t put any thought and effort into developing the idea for their software projects, they can easily get separated from their money without getting anything of value in return.

Project scope, desired quality, technologies used and a bunch of other factors all determine how much time your software project will take. Developing great software takes time, and a lot of invested work.

Quick math: Facebook boasts to have more than a million users per engineer. They have somewhere close to 1500 engineers today. With an average developer salary of $5,000 in the US, we get $7,500,000 per month. Safe to say, this system would be pretty hard to replicate for a total budget of $5,000. Just a simplified version of Facebook would probably cost at least $500,000 (<– really optimistic estimation).

 

Odds are, your complex, high-quality software product won’t be ready in 2 weeks.

A proof of concept? Yes.

A minimum viable product? Maybe.

A polished, profitable software product? No.

 

The time required highly depends on what your MVP scope is. For a small MVP, 1 or 2 months is more realistic. If you’re lucky, and you have a very small and clear MVP vision, maybe you can build it for $5,000 – $10,000. You probably won’t get a proper product under $50,000 – $100,000 though.

People also often confuse what really is minimal with what they personally feel is minimal for a product to work.

For example, if someone wants 5 payment methods in their MVP, as others are offering the same, it will obviously not be an MVP. The minimal part would be violated by adding the other 4. These are “extra features”, not minimally required for the system to work and for early users to get on board and start using it.

software developers

 

Project workflow

Once your project is off the ground, you get to see how little initial estimations really matter.

Seeing the planned features in action and getting first feedback from your client base can greatly change your final product vision.

These changes to core product functionality can turn the whole project on its head.

Maybe your customers found the most value in a side feature that you thought wasn’t important, and you have to rebuild the whole product around it. Maybe they didn’t find enough value in it, and you need to focus on adding something completely new.

This is the beauty of adaptive software development. You can make changes to the final product in time, based on early feedback from actual users.

While this is all fine and well (if not even obvious), you can’t expect software developers to make every required change overnight. What seems like a simple change to product interface to you may mean days of work for the development team.

While almost everything is possible in software engineering, current frameworks still have their limitations that also need to be taken into account.

When part of the software is updated, there’s a chance that the original architecture may no longer make sense for the new design. In these cases, the development team can either start over from scratch, or adjust the code to make the updates work with the old architecture, even if it may cause problems later on.

If you don’t want to end up with poorly written code, you need to give software developers time to implement every change properly.

 

Subscribe to the RabIT Newsletter

What you get if you join our email list:

  • Actionable insights about software development topics
  • Interesting case studies and news about IT innovation
  • No marketing spam

You can unsubscribe at any time

 

Developer experience

It is very hard to find good developers for any programming language.

A good developer can be as effective as 5-10 average developers. While hiring less experienced people at a lower price may seem tempting, it is much more beneficial to hire a single expert who really knows what he/she is doing.

If you need to hire someone later to do refactoring work on your poorly written source code, you will ultimately end up losing more time and money. This alone can easily lead to software development failure.

If it was possible to master software development in university, the world would be full of great experts. Unfortunately, this is not the case. You really need to dig deep to find great developers.

 

What really makes an expert developer?

 

Becoming a real expert in software development takes a lot of hard work, dedication and perseverance.

While anyone can learn the craft, not everyone has the affinity to truly master it. Many great developers switched over from professions not normally linked with software development, like marketing or journalism.

Instead of thinking about them as introverted scientists, you need to see developers more like you see writers or artists. Their work requires talent, a great amount of passion and creativity.

It is a mistake to look for experts solely based on years of experience. Diversity of experience is much more important. Someone who has a real understanding of many different technologies, and can quickly adapt to them can be much more valuable than someone who has tons of experience in a single language.

If you want good developers, you don’t have to look for people with a minimum of X years of experience in a certain language. It is better to hire experts that are willing to cross over to that language.

 

SUMMARY

Knowing what to expect while working together with software developers can already greatly increase your project’s chance of success.

When choosing your development team, remember to take the time to do your research and always ask for a second or even third opinion about the offers you receive.

Throughout your time working together, think about your software team as more than just a service provider. You are partners who are working together to reach your long-term goals.

You both have to do your best to keep your channels of communication open and transparent at all times.

Thank you for devoting your time to reading this article. If you are concerned about your own project, feel free to reach out to us at info@rabit.hu, and we will do our best to get you back on track.

RabIT software engineering

RabIT is an innovative software engineering company from Hungary. Our goal is to help startups and enterprises drive growth through technology innovation and make a real impact in their industries.

Code quality and transparency are our main priorities throughout each project.

IT ProcessBY RabIT software engineering · February 26, 2018

If you have already read some articles on the subject, you have probably come across the line by now, which says that about 1 out of 3 offshore software product development projects fail.

We have already gone through some of the more common reasons why most offshore software projects never see the light of day in one of our earlier articles.

In this article we will tell the story of how we helped revive some of these projects through our work at RabIT software engineering.

Here are some real life examples of an offshore software development project turning south. Of course, we won’t be mentioning any names here, as the only purpose of this section is to point out that most failing software projects can be salvaged, even if things are looking very very ugly.

Case 1 – The spaghetti code that made no sense

offshore software

 

About two years ago, a client approached us looking for an experienced software developer to join their existing offshore software development team. They were building a new online marketing tool that will make the client’s everyday work much easier. He is also planning to release it as a globally available SaaS solution later this year.

Our new client knew that something was very, very off about the code written so far, but he couldn’t quite put his finger on it, having no background in software engineering himself. So he basically hired us to have a look at the project and try to get it back on track if possible.

Our own CEO joined the client’s team of three other developers from the Philippines. We started by looking at the source code and running some good old tests on it. To put it lightly, it was a complete mess. Imagine a special kind of spaghetti code that was full of anti patterns, inefficient and illogical solutions, and was generally in very bad shape.

So we had our work cut out for us. The initial goal was just to clean up the previously written code, which was no easy feat itself. To test the current state of the source code we used code analysis tools like Checkstyle, CPD, PMD and JSHint. Checkstyle identified about 60.000 errors during our initial testing phase. We collected the necessary metrics, then got to work right away. It was essential to start with code refactoring, because at this stage the code was so unreliable, that it was impossible to continue development work efficiently.

Several weeks and a lot of code cleanup later, 60.000 Checkstyle warnings turned into 1.500, which was low enough to allow for more efficient software development work. We also managed to solve some functionality issues that the previous team claimed to be unsolvable. As things started to fall into place, we could gradually focus more on developing new features, instead of code refactoring.

In the meantime, the initial development team was let go, and we took over the project entirely. This was never our intent, we work together with other outsourcing teams on a regular basis. The client made this decision after the other team continuously failed to meet our software development quality standards.

We are currently focusing on eliminating the remaining coding errors, while constantly implementing new features and design elements to the application. Despite the early setback, our client still expects us to deliver a top-quality finished product that is highly competitive on today’s market, and that is exactly what we aim to do.

Case 2 – When things go from bad to worse

offshore software

 

A couple of months ago we were approached by two sport-loving entrepreneurs. They had a unique idea for a mobile application which is completely new to the market and does not have any competition as of yet. A small offshore software product development team from Russia had already started development by the time we joined the project.

The clients started looking for a senior software engineer because they were not satisfied with the work of the current developers. The Russian team claimed that some of the requested functions were impossible to develop, progress was made very slowly and the resulting code was unstable and unreliable. They needed someone who could see through the development process and had experience in leading a team of developers.

We started by running the usual tests on the source code, and the metrics were terrible. It was difficult even to get the application to run at that point. Three of our developers ended up joining the other team, with the support of a quality assurance tester and a project coordinator. Not much later, four freelance developers from India also joined the team.

 

Subscribe to the RabIT Newsletter

What you get if you join our email list:

  • Actionable insights about software development topics
  • Interesting case studies and news about IT innovation
  • No marketing spam

You can unsubscribe at any time

 

Our resposibilities included project leadership, software architecture design, team coordination and software development. We were tasked with managing the work of the Indian team as well. Because we were ready to take over the entire development process, the services of the Russian team were no longer required.

During this period, we were still making a serious effort just to correct source code errors, but we finally started to make some progress. Problems soon started to resurface when the Indian team kept falling behind on their development tasks. They refused to follow the coding standards, and when we tried to enforce them, they were always one or two weeks late on delivery. Their code simply couldn’t pass code review, and this lead to serious delays in development.

Our expectations weren’t unrealistic. We followed Google coding standards (to which we also added a few rules that we found important), and all parties unanimously agreed on the coding guide during our initial meetings. However, several weeks later, the Indian team also resigned from the project. We became fully in charge of full stack mobile app and server-side development.

By today we have reduced static code errors from 30.000 to 800. Some serious deviations from coding standards and illogical solutions also ended up forming bottlenecks in the program, which we have since removed. We are currently aiming to focus more and more on developing new app features and less on code refactoring. If all goes according to plan, a live version will be ready to launch in September.

Case 3 – When code quality is not the problem
offshore software
Startup Stock Photos

 

Of course, code quality isn’t the sole reason why offshore software product development projects end up failing. We have just recently taken over one of our newer projects from another Hungarian development agency, simply because they were failing to meet their promised deadlines. This development team was almost one year late on delivery when the client finally decided to replace them with another agency.

The product is an E-commerce website with integrated stock management, invoicing and delivery management. The end result will be a highly customized software solution with multiple features that are completely new on the market. This time around the code was beautifully written, and the former lead developer was very helpful and cooperative. It turned out that they had some serious internal management issues that eventually also led to the agency going out of business.

After some minimal adjustments to the source code, we could immediately start focusing on function development here. We are currently testing the final product together with our client, and it is set to go live in the very near future.

Summary

We have encountered more than 20 cases like these since we started in 2011.

Developing a unique custom software solution can be a risky endeavor. After reading stories like these, it is easy to understand why many business owners decide to stay far away from offshore software product development. However, by taking the necessary precautions during the selection process, outsourcing can become a reliable source of growth for your business in a small amount of time.

Remember, cost-efficiency is only one of the many benefits of offshore software product development. Hiring a highly competent and self-sufficient development team lets you focus on other areas of your business, and save a lot of time on recruitment and training, which also leads to a shorter time-to-market for your product.

If, while reading this article, you realized that you are in the same shoes as one of our clients was, or if you are just searching for a reliable software development team, don’t hesitate to reach out to us and tell us about your project at info@rabit.hu right away.

RabIT software engineering

RabIT is an innovative software engineering company from Hungary. Our goal is to help startups and enterprises drive growth through technology innovation and make a real impact in their industries.

Code quality and transparency are our main priorities throughout each project.

IT ProcessBY RabIT software engineering · February 13, 2018

It’s not always easy to pinpoint the exact reasons why software projects fail. There are many factors involved in the outcome of each development project, so there is often no clear-cut answer. However, industry experience tells us that factors like low code quality, faulty communication practices and lack of project flexibility are often among the main culprits.

According to Codementor, on average, 1 out of every 3 software projects fail, and more than 80% of projects run over time or over budget.

 

Your odds become even worse if you don’t do the research before slecting a software development outsourcing provider. If you give your project to a development team that is unable or unwilling to understand your specific business requirements, the final product will most likely never reach the deployment stage.

In this article, we will discuss some of the most common reasons why outsourced software development projects end up failing, as well as share some advice on how to avoid wasting precious resources on a software project that is actually doomed from the start.

 

1. LOW CODE QUALITY – The lowest price doesn’t mean the price is right.

If a software company’s main selling point lies in its low hourly rates, you might want to turn the other way. Most businesses that decide to outsource their software development learn this the hard way.

It is understandable why many startups and entrepreneurs choose the lowest bidder in these situations. By nature, they are generally financially limited, especially in their early stages. However, this decision eventually leads to a more costly development process, due to the lack of quality.

A code-base built with poor-quality code leads to the final product being inoperative, forcing you to transfer your project from one development team to another. The delays in development will severely cut into your budget, and result in a much longer time-to-market as well.

software development projects

 

I know that an early-stage business wants to grab any opportunity to save money, but price should be one of the least important factors in choosing a software development agency. In stead, look for companies that:

  • work by following a well-defined methodology and strategy,
  • mostly receive positive client reviews,
  • divide the whole project into shorter work periods, also known as sprints,
  • work by hourly rates (avoid fixed bidders if possible),
  • provide frequent live product demonstrations,
  • communicate on a daily basis and
  • possess high-level English language skills.

Choosing these qualities over low prices should help to ensure higher product quality and avoid miscommunication during development.

If you find a software agency that received overwhelmingly positive reviews from their former clients, it is still crucial to look at the full scope of their work, because, for example, the fact that they are outstanding in installing WordPress sites doesn’t mean that they can handle custom-built Java application development as well. If they have already proven that they can successfully complete projects for different industries using a wide range of technologies, they can probably be trusted to handle most challenges related to custom software development.

I think that the concept of a fixed bid is flawed, because it is rarely possible to give an accurate cost estimate based on an initial list of requirements. For making an offer, you would require very detailed specifications for the project. What usually happens is that agencies try to make a very attractive fixed offer based on a superficial project description, which is very far from realistic. These types of offers are really based on the misunderstanding of product requirements, and companies only end up underestimating the actual costs of development.

When they finally run out of budget, the development team will either quit the project, or will be forced to continue “working” on it for free. This results in a low-quality and often rushed or unfinished final product, that has no chance of surviving on the market.

Another possible outcome is that the product owner simply shuts down development after he/she realizes that it is impossible to develop all of the required product functions at the initially estimated costs. The product either never gets finished, or another development team has to pick it up and put it back on track, which requires additional time and resources.

It is understandable why company decision makers would prefer to know the full costs of development beforehand, but for reasons listed above these types of projects rarely have a happy ending. Some development agencies have also been known to rush fixed bid projects in order to finish them ahead of schedule, and take the money without doing the actual work. This also results in very poor quality, and a rushed and often inoperative finished product.

Hourly rates, paired with shorter work periods let you have a more complete overview of the work that you are paying for. If the agency that you hired can’t live up to your requirements, you can take your project elsewhere with much less time and money lost.

 

Subscribe to the RabIT Newsletter

What you get if you join our email list:

  • Actionable insights about software development topics
  • Interesting case studies and news about IT innovation
  • No marketing spam

You can unsubscribe at any time

 

2. POOR COMMUNICATION – A breakdown in communication can kill a project by itself.

Next on our list of reasons why software projects fail is having poor communication practices.

The need for frequent communication and transparency in software development outsourcing cannot be emphasized enough. Developers must work closely together with their clients to ensure that their ideas and requirements are clearly passed onto the development team.

If the software company you are working with isn’t putting an effort into clarifying your requirements throughout the planning, development and deployment phases, you are going to have a problem.

software development projects call

 

Agile development is becoming an industry standard, because it provides increased transparency an continuous feedback. Software companies that follow Agile Scrum or Kanban methodologies offer more efficient and face-to-face communication to their clients. This is the main reason why we chose the Agile approach ourselves.

You can also take some precautions here by requesting quality indicator metrics frequently, both for quality assurance and code quality. These metrics can prove useful even if you are unable to make sense of them at the start of the development project. You can either learn how to interpret them later, or show them to an outside expert.

 

3. LACK OF FLEXIBILITY – A plan that can’t change with the environment quickly becomes irrelevant.

Developing the final product can easily take months or even years. Predictive development methods (such as the Waterfall method for example) lock down the requirements from the very beginning, making it difficult to change them later. While it is not always the case, these projects often result in a product that is very different from what the client and the market really requires.

software development projects budgeting

 

Flexibility (or lack there of) is also one of the main reasons why software projects fail. We find that the Agile project management model works wonders here as well. This development approach allows the software to evolve in response to changes in business environment and market requirements.

However, throwing in the word “Agile” doesn’t guarantee that the software developers actually know what they are doing. It is not the perfect methodology for every business, so make sure that the people at the development agency truly understand your specific requirements. The right team will know what is best for your project.

 

Summary

Through our everyday work with startups and entrepreneurs around the world that choose to outsource their software development, we encounter too many rushed and unfinished products that require weeks and weeks of refactoring work just to make it to the deployment phase.

When you choose your software development service provider, pay close attention to how they communicate with their potential and former clients, and what their clients have to say about them. Try to make sure that they are willing to go out of their way to understand and meet your specific business requirements. Always aim to find a highly methodical team that focuses on what works for you instead of only concentrating on what works for them.

We chose to speak about these particular reasons why software projects fail because these were the ones we’ve encountered the most during our work so far.

If you encounter similar problems with your software development processes, don’t hesitate to contact us at RabIT software engineering, and tell us about your project.

 

RabIT software engineering

RabIT is an innovative software engineering company from Hungary. Our goal is to help startups and enterprises drive growth through technology innovation and make a real impact in their industries.

Code quality and transparency are our main priorities throughout each project.