Techn(olog)ical Debt And How To AVOID Its Dreadful Consequences

23
Mar 18
technical debt technological debt

Techn(olog)ical Debt And How To AVOID Its Dreadful Consequences

With Just A Drop Of Dish Soap And A Sponge

 

The best explanation we have encountered of what the technical debt actually means was by comparing the concept to … doing the dishes!

Annotation:  for the sake of this metaphor please forget dishwashers exist. 🙂

Thus, let’s break it down. If you are one of those who not particularly enjoy cleaning up after dinner right away, you will be able to relate. When you finally find the motivation to handle all that mess it is very likely it will take a lot of time and effort. Getting rid of that dried out food waste is probably going to drive you crazy. On the other hand, if done immediately it is not going to take more than just a couple of minutes. A drop of dish soap and a sponge is all you need!

Same with IT projects. Taking care of the issues right away is going to save resources in the future. If you are going to wait and leave unresolved bugs behind they will definitely pile up as a stack of dirty dishes in your kitchen sink.

 

Technological Debt In Theory

 

Technological debt (sometimes also: technical debt, code debt or design debt) stands for an implied cost of additional rework caused by choosing an easy approach to software development. The phenomenon is widely known since the ‘90s. An example of it was initially dished up ↑ ? by a well-known and influential software engineer and computer consultant from USA, Edward Yourdon. As he described it, the technical debt means the lack of the bigger idea, plan or project behind the software in progress. The term is also associated with Howard Cunningham,  a computer programmer who developed the first wiki. The pioneer in design patterns and extreme programming was not satisfied with the quality of the application he was working on. He then stated that some practices generate a technological debt, which will then result in a difficult and slow development of a given programming project. Over time, the concept evolved to take on more general meanings.

Currently, it is understood as a part of an IT system created without taking care of the quality of the code. It means that day-to-day technological debt is growing and influencing the work of developers around the world as we speak.

 

Common Causes Of The Technical Debt

 

Technical debt can be caused by multiple reasons.  To name just a few:

Insufficient up-front definition, where development starts before any design takes place. This is done to save time but often has to be reworked later.

Business pressures, where the investor requires the release before all of the necessary changes are complete.

Lack of process or understanding, where businesses make decisions without considering the implications or following any of the professional software development methodologies.

Tightly-coupled components, where functions are not modular, the software is not flexible enough to adapt to changes in the business needs.

Lack of a test suite, which encourages quick and risky band-aids to fix bugs.

Lack of collaboration, where knowledge is not shared around the organization, or junior developers are not properly mentored.

Parallel development on two or more branches accrues technical debt because of the work required to merge the changes into a single source base. The more changes that are done in isolation, the more debt is piled up.

Delayed refactoring – As the requirements for a project evolve, it may become clear that parts of the code have become inefficient or difficult to edit and must be refactored in order to support future requirements. The longer that refactoring is delayed, and the more code is added, the bigger the debt.

Lack of alignment to standards, where industry standard features, frameworks, technologies are ignored.

Lack of knowledge, when the developer simply does not know how to write elegant code.

Poor technological leadership where poorly thought out commands handed down increase the technical debt.

 

technological debt technical debt

 

How Can You AVOID Technical Debt?

 

In general, the technical debt is a result of poorly made decisions. In order to avoid its dreadful consequences, it is important to cooperate with specialists who know their job and are following the rules of modern agile software development. One of the fundamental principles of such methodology is examining the quality of code as you proceed with the project. At the same time, it is equally important to provide the compatibility of the system and your individual business needs. The biggest advantage of the agile approach is allowing the change at every stage of the implementation. It means that you can take the project and start expanding it in a totally different direction whenever you see fit.

While searching for a software house look for an organization experienced in the framework of Scrum. We recommend it because you and the team do not need to follow a strict documentation only for the sake of it. There is no requirement of signing a specification before moving on with the development. As the Product Owner, you are fully in charge of how your software is going to look like. Above and beyond, there is no technical debt! Because you receive a working piece of software in short periods (Sprints) you have the full control over the quality of your application. There is basically no risk of leaving unsolved bugs and problems behind and having to deal with them in the future.

 

More about the advantages of Scrum we have covered in the following blog post: https://evolpe.software/scrum/ 

 

summary

A technological or technical debt (as you will) is a real threat that influences everyone who has to do with software development. We cannot deny that it is going to be difficult to get rid of the consequences of not paying it off globally. What you -as an entrepreneur- can do, is not to add to it! Or at least, pay your dues as soon as possible. If you are looking for a business partner to help you along the way of software development project – ask them about their experience in agile methodology. This is objectively the best way to stay in control of the quality of the code. Do not be afraid of making changes in your software. If you see the anticipated version is not going to satisfy your evolving business needs, modify it! Also, be confident asking for a proper training for admins and users. A professional software house has to provide the support to make sure that… no dishes are pilling up in your sink. 😉

 


11
Dec 17

Discover your product, easy.

The thing with designing a software is that in most cases the idea of how should it look like is quite vague. As a person responsible for the project you were probably asked to deliver a brief description of its purpose.  But do you really know what to write? Most likely you will not be the only user of this system. How should you know what all the groups of interest actually need? And what is possible to achieve?

What is Product Discovery?

Product Discovery is a service that any consulting firm or software house should offer. It helps to understand what kind of an IT solution will be most suitable and correspondent with the specific requirements of your organization. But first, let’s see if you have actually recognized them all and if everything you might imagine truly applies. The best way to do it is to hold a workshop and invite representatives of each department to take part in it. With the help of a professional Business Analyst (designated by the software house), you will easily create the concept of your future product.

8 stages of Product Discovery workshop

And how does such a workshop look like? Well, it depends on an organization. In general, it is possible to distinguish 8 stages of so-called Product Discovery. Not all of them may apply to your specific organization but let’s go through them and find out your options.

1. The Horizon

product discovery

At this stage, you are going to look at a wider perspective of the whole process. First, you will get familiar with the agenda of this very meeting. You will also learn the nomenclature and all the definitions that are going to be necessary along the way. Next, you will hear about the methodologies in software development, and possibly get the idea of which one to choose. Finally, you might actually see the horizon – an overall idea of the product. But that is only stage one.  We are just getting started.

2. Recognition of the main business process

product discovery

You need to remember that the software itself is no remedy for any performance issues if it does not correspond with what you actually do at your company. Having that in mind, a very important part of the Product Discovery is its second stage. During this take of the workshop you will identify all the steps of your key business procedures. It is going to help to correctly design the system in the long term. The last thing you want is that your brand new application becomes the next bottleneck in your organization, right?

3. Determination of the general goals

product discovery

After you have recognized all the stages of your business process, it is important to gather them all and come up with just a few objectives. Those goals you set during the stage #3 of Product Discovery should stay with you throughout the whole time of software development. Each part of the system needs to be consistent with what is the general direction of the project.  This approach guarantees the success of the IT endeavor and makes every little functionality work in favor of your business.

4. Basic system demonstration

Is the software you think you need actually the best option?

product discovery

In some cases, the team involved in the project already has an idea about which type of existing software could be adjusted – if Open Source – to work with the specific requirements of the company. If so, it is the best moment to do a quick demonstration of such solution. This way you will be able to compare your business process with the capabilities of a certain product. It might be that it is exactly what you are looking for or… not at all. Having this knowledge at such an early stage of the project is going to save you a lot of time and money.

5. IT environment study

product discovery

A very important factor for any software development project is to be aware of all the other systems around it. There is a lot of potential in creating a well-communicated platform of many IT solutions. This way you will avoid repeating the information that already exists in your organization. In order to recognize what you already have and how it should correlate with the new piece of software, it is useful to do a simple outline showing the necessary integrations.

6. System beneficiaries recognition

product discovery

At the beginning of the article, we have made a prediction that you are not going to be the only user of the future software… At this point of Product Discovery workshop you should finally think of who is going to actually work with it. Before you make a judgment of what the software has to do, find out who will be using it and… ask them what they really need!

7. Value Proposition

based on a diagram that shows representatives of each department and their “Jobs, Pains and Gains

product discovery

The Value Proposition stage should lead you to a conclusion about more specific functionalities of the software. At this point, you should ask the future key users what kind of tasks (“Jobs”) they are facing during their work hours. Of some, you might just not be aware. After that, it is important to compare the results with the so-called “Pains”. It means shifting the attention onto all the things that are slowing down the progress in certain departments. Finally, think about what there is to do to fix all the problems along the way. The knowledge about challenges in your organization will help to design a comprehensive solution customized to your specific needs.

8. Comparison of the business process and the software idea

product discovery

The last stage of Product Discovery means a comparison of your business process with the more comprehensible idea of the software. The most important question to ask at this point is: How this case could look like in the system? This is when the concept of what needs to be done comes to life. This is when you discover your product! This is also when you can start the pre-implementation analysis and begin the development with the use of the chosen methodology and the help of a preferable software house.

What should you expect from the software house?

Of course, you are not going to be alone with all this work! 8 stages are quite a lot and you need someone to moderate the whole thing. The smartest way is to ask the software house to designate a professional Business Analyst to guide you through the process. Such person is going to be experienced and well-equipped to take on the responsibility of handling the meeting correctly.

Only thanks to such support you will fully benefit from the workshop! Their job is to make sure that one and all understand what is being discussed and that everyone is using the same nomenclature. It happens in some organizations that some terms mean different things in other departments. It might look like something obvious but it is crucial to the success of the Product Discovery that all the parties are on the same page, at all times! This is also how you will find out how competent your possible business partner actually is. If they have all the necessary qualifications, they will also offer a reliable support later on. This feeling of a mutual trust will be essential during the actual software development. And if something is going to be really clear about Product Discovery it is not only your big idea for the software but also the fact if the company you teamed up with is up for the job.


17
Oct 17
software

5 questions you need to ask before choosing a software house

If you are here, it probably means that you are currently looking for a firm to help you develop a software. What questions is it important to ask your future business partner before making that binding decision? In today’s post, we are going to give you a couple interesting tips. Let’s see how many of the following 5 questions you already know the answers to.

  1. Who recommends them?

Endorsements and public recommendations matter not only for politicians. This way of confirming the skills is also very popular in the business world. It is understandable that before signing an agreement you are going to look for information about your future cooperant. Searching the software house in the World Wide Web will usually do the trick. Many people turn to LinkedIn and other online platforms when they want to express opinions on certain organizations. If you are interested in someone’s work ethics or capability to handle particular tasks you should also look up the company’s web site and hit the Portfolio tab. A reputable software house will most likely post logos of their former clients along with a couple of words of explanation. Apart from just that, a still very common method of experience confirmation is a signed recommendation letter. Make sure you do your homework and see if the software house you are considering has some experience in creating similar solutions for others within the branch. Such knowledge will most likely enrich the system through wider understanding of unique business processes typical for your industry.

  1. How big is my project?

Apart from looking at your business partner, it is also important to analyze your own organization, look at the processes that the software should cover and try to estimate the amount of work that needs to be done. An experienced business partner should be able to assist you and offer to moderate a workshop called Product Discovery. Thanks to such meeting you will be able to visualize the product and organize the future development project in a way so it is easier for everyone to understand your case. Also, the decision regarding the software house will then be much simpler. The size of project matters because some IT companies focus only on small projects and do not have the resources needed to carry out larger deployments. Understandingly, some software houses focus on mobile apps and some are exclusively web development oriented. Having all that in mind, the extent of your needs will play a significant role in the decision-making and you should be aware of it from the start.

  1. What is my budget?

You probably think this should be the number one question. The deal with IT systems tough is that they can be developed in stages and you do not need to estimate the exact cost of something that is still very theoretical. The agile methodology of software development allows to choose most essential features and have them prepared before any others “nice-to-have” elements. Your software can grow together with your company and the extension of your requirements. It means that you can stop the development at any given point and still be able to use the Minimum Viable Product if at any point you run out the budget. Asking yourself about the initial price that you are able to pay is of course going to matter. You do not want to start off with a project and then almost immediately suspend it because of some miscalculation. Ask your software house for an estimation of costs for the project that you came up with during Product Discovery and see what your book-keeper is going to say.  If going for an agile approach to software development, remember that  it should not be considered a fixed price and that you are going to pay for the time and the materials used on your project only.

  1. Do I plan to extend and/or integrate the software with other solutions?

If you think about extending the software or creating a bigger platform you should make sure the software house you are going to choose offers post-implementation support that you might need after the job is finished. If you would like to pick up the project in the future it will be more convenient to continue working with the same business partner. They will already know your organization and the system itself. If you think about it today, it will pay off in the future when your company will grow and evolve.

  1. How are they going to ensure the safety of information?

The business software operates processing a great amount of information every day. If you are going to choose a company to prepare such a solution, you should make sure they take data safety very seriously. You should look for evidence, that the software house has experience making their products secure. A good sign is if the company is willing to place the software on its servers and take responsibility for the stability of the solution. You may also consider getting an insurance plan in case of any security breach or ask for a guarantee from the developer to be added to the agreement.

 

Remember that the decision who to trust with the IT project is equally important as a good idea for the application itself. You should pay attention to the way a company communicates with you and who the team members are. Make sure you sign an agreement that works for both parties and find a cooperant who is trustworthy and you have no doubts is going to do the job.