You are currently viewing How to FAIL Sucessfully: Developing software for your startup!

How to FAIL Sucessfully: Developing software for your startup!

If you plan to invest in a software development project, then you are interested in this post! As you have seen, we live in the era where the pace of technology development is very fast. More or less all of us have heard various ideas that became successful businesses both in Greece and abroad. Most success stories starting from absolute zero (or the absolute garage!). The process seems relatively simple. You think of a good idea (one million dollar idea), you pay 1-2 or even 3 programmers, lock them in a room and in some time you have the product ready. Unfortunately, things are not like that because the reality is particularly harsh and I say this with complete indulgence (but also knowledge).

I have heard several times stories of people who have no experience with software development and wasted money to create an app. They wondered and still wonder what led to their failure. Below I will list some of the most common failure factors in software development (not in marketing). My purpose is not to discourage people from getting involved with the world of software development, but to help minimize the chances of failure.

The Team

The basic ingredient of success is a well trained team of cooperative people. This in itself is a hindrance as skilled programmers are in demand in the job market. Which means there are two options. Either qualified programmers will be employed who, if found, will be paid in gold, or new programmers will be employed. In the first case your budget will skyrocket, while in the second the result will be of dubious quality. By “dubious quality” we will see below what I mean.

The main question in this particular case, however, is whether the would-be entrepreneur can assess the level of knowledge of the programmers he will employ. The vast majority believe that cheap developers are more beneficial, so the first big mistake has already been made.

Now let’s move on to the next step, once the team is set up, will it be able to work together effectively? Who will define the technical characteristics and standards that should apply during the development of the software? how will the team coordinate? The questions that arise are many. Setting up the team is the most important factor in success, but it is also a major headache until it starts working.

One man show!

There are some entrepreneurs who think that with a developer (usually cheap or crappy) they can make their dream come true. These are already reaching the limits of science fiction. The reasons for failure are varied, such as bad time management, technical inadequacy, lack of experience in developing large projects, insufficient or non-existent supervision and many others. The result is that the vast majority of projects are driven outside the schedule (if there is one!) and outside the budget. Then the story is familiar: The developer asks for more money to continue, while the would-be entrepreneur is in a quandary, give the money or abandon the project. As usual they give them so that the money that has already been given does not go to waste. If everything goes well, the delivery of the project goes at best 3 times in terms of implementation time but also in terms of budget. If e.g. the project was agreed to be delivered in 6 months for 5000 euros, in reality it will be delivered in 1.5 years for 15.000 euros. We are talking about deviation not jokes and unfortunately this is not the exception, but the rule.

The next usual thought of the would-be entrepreneur is to hand over the project to another developer. This is where the biggest misunderstandings occur because there is simply no way a large project can be continued by another developer. The reasons are many and mainly technical. That is, the one who continues it will be at a better level of knowledge? If it is in a better state, then it will not accept to deal with poorly written code. If, on the other hand, it is at a worse level, then it will hardly be able to come up with the code of its predecessor. Another reason has to do with the structure of the code (if it exists!), or if chaos prevails. If chaos prevails, then it is more beneficial to rewrite the project from scratch, than to make patches that in the end will lead the whole project to a dead end.

Therefore, in the case of a one man show, you “marry” your programmer. Under no circumstances should it get away from you or get hurt. Because if you lose him, you simply lose your project, your time, your money and your dream!

Software Development Lifecycle

When we talk about the development of large projects, the ideal would be to involve specialized professionals (programmers, designers, engineers, QA, etc.). Specialized professionals means that we are already talking about very large budgets. This scenario usually plays out in large IT companies that have the human resources as well as the necessary budget. Even under these conditions, it does not mean that the project will have a happy ending, but at least the chances of failure are minimized.

Software development presupposes specific standards both in terms of the cooperation of the programmers and during the development of the vocabulary. This helps to better manage implementation time, financial resources, and software quality. Quality software is properly structured in terms of its architecture, but also technically in terms of the implemented code.

From there, the team must be coordinated in such a way that the implementation progresses according to specific schedules. Then the software that is developed should go through tests to ensure the consistency and reliability of the software under development. This process is iterative as at any time by changing a piece of code, it can have an impact on other parts that we did not anticipate would be affected. Therefore, software that is developed and not continuously tested, then there is a serious problem.

If the software is developed by a developer, then everything is left to his own discretion. The bad thing in this particular case is that you cannot know whether the software you are paying for is developed with specific standards.

Software Maintenance

Software is a living organism. It needs regular maintenance and continuous improvement to function properly. When a software is not maintained, then the first problems begin to appear. For example incompatibility issues. When we upgrade the Operating System, or the subsystems that our software may use over time changes are made to them. In an unmaintained software these changes will never be made and as a result our software starts to malfunction. In this case the game is lost as to find the developer who developed the particular software and deal with it again after some years it’s hard. It is difficult because he will have to remember again the way he developed it. So this translates into a waste of time. But even if he accepts, then the waste of time he will have to remember his code again will have to be paid for. Therefore, the chances of upgrading the software are almost nil. I am not referring to the case that another developer takes over to continue the project for the reasons I have already mentioned.

Another serious factor in regular software maintenance is security. We need constant monitoring and improvement of the code to minimize the chances of exposing our software to security holes. A possible security problem would be disastrous for the progress of the project.

Further Development

Many believe that after the software is completed, its development stops, the developers are paid and everyone goes their separate ways. Unfortunately, things are not like that here either. Software, as I already mentioned, is a living organism that must evolve and improve where problems are found. Continuous development means adding more features, technical improvement, better security, resulting in a competitive product.

Also, with continuous development we achieve team cohesion, but the most important thing is that we ensure the continuity of the project. If a member of the group leaves, then he can be replaced by a new member who will be helped by the rest to join the team. Otherwise, if the development of the project stops, then the team is lost and it will be very difficult to come back for the tasks. Even more difficult will be the establishment of a new team which would undertake to continue the project from the point where the previous team left it.

Is there any hope?

There’s always something. Let’s look at the solutions case by case. Suppose there is an entrepreneur who wants a specific software development solution for his business or the creation of a project with specific specifications in order to sell it. In this case there is the so-called outsourcing. Outsourcing is a service provided by software development companies that write code for you. You will not have to worry about the composition of the team, nor about the continuation of the project, as the outsourcing company is solely responsible for this. Generally, you use the developers, analysts, designers, engineers, etc. of the outsourcing company for your project, and they deliver you a solid and professional solution. Clearly the cost is high compared to some cheesy developer. But surely the product you will receive will be of quality. If you want to invest in a good idea you have, then go for the outsourcing solution. Otherwise, if you focus on cheap solutions, then you are most likely throwing your money away.

Many consider that if they proceed with the outsourcing solution, they will not have control and that they will depend on the outsourcing company. This is a big mistake. In the agreement you can indicate that you want detailed documentation during development so that in the future you can undertake the continuation of your project in-house.

Outsourcing companies develop the software with specific standards which can greatly facilitate the continuation of the project by your own employees in your company.

Software development is an expensive sport

If you have an idea and want to implement it, then be ready to support it financially. There is no room for stinginess in software development! I say this because being stingy will cost you much more than you would have paid in the first place. If the project is not set up CORRECTLY from the START by experienced professionals, then problems will arise in the future which will require time and of course money to correct. These problems will not only “burst” during the development period of the project, but even worse when you will have channeled it to the market. This means dissatisfied customers who will start looking for a similar solution elsewhere. Thus, you will unwittingly have given considerable scope to the competition to develop against you.

If I haven’t covered you somewhere, feel free to contact me without hesitation or leave a comment.

Andreas Bourakis

Software Engineer & Lecturer in Computing

Leave a Reply