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. 😉

 


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.


06
Sep 17
it software development poland

Software development – how do we do IT in Poland?

6 reasons why you should move your next project to Poland

There is a fine line between what it means to outsource IT services to Poland and what a software development in our country is like. It is tough to explain one without mentioning the other. The idea of IT outsourcing we have included in our recent post called 3 reasons why outsourcing to Poland is the new IT thing. Today we would like to take a closer look at software development and 6 reasons why you should move your next project to Poland.

  1. Stable economy

You have  probably heard of Poland in terms of it peacefully fighting the communism and transforming into a democratic and capitalistic country. Since 1989 a lot has changed in the Central and Eastern Europe. We have experienced 28 years of continuous growth that has shaped our modern and innovative society. Nowadays Poland can be surely called one of the most dynamic economies in the European Union.

A country’s economic stability is something you should definitely pay attention to when looking for a good place to outsource your IT projects. What is remarkable about Poland is that it was the only country in the EU not affected by the recession of recent years. While for most of the Western countries the years of 2008-2012 were very financially challenging, Polish GPD was continuously increasing. When in 2012 it raised up to 1.9 percent, the average GDP of all EU countries was still around -0.4%.

  1. Popular outsourcing destination

When it comes to the number of outsourcing facilities Poland has already surpassed other offshore countries (including India). Substantial investments that have been made in recent years (also thanks to the European Union membership) significantly improved Polish infrastructure. Fast internet connections, as well as new data centers have made the communication with other countries easy and efficient.

Key factors which make Poland such an attractive outsourcing destination include:

  • an affordable workforce,
  • geographical location and proximity with the Western cultural circle,
  • an extensive pool of highly educated specialists from many branches.

Despite the fact that the Polish economy is constantly developing, it still has not caught up with most of the Western countries. Therefore, wages in Poland are not as high as in the rest of European Union. It means that we can produce low-cost software while maintaining the same level of quality.

Did you know…

that the same job can be done in Poland even 3 times cheaper than in the USA? The average monthly gross remuneration in Research & Development centers in Poland amounts to $2,800 for software developers and not more than $3,000 for projects managers.

Even in the times of omnipresent technology, Wi-Fi connection considered a human right and unlimited phone calls and text messages as a part of basically any data plan, geographical location still plays a significant role in terms of effective communication. In the case of offshore developers, the logistics of scheduling conference calls and asking questions may be challenging. Due to time zone differences, it usually takes at least a day to obtain an answer to your question. Therefore Poland’s time zone, that is compatible with the majority of European countries makes it a perfect offshoring destination as it is very easy for partners to meet whenever needed. In addition to that, Poland belongs to the Western cultural circle. It might seem like an unimportant detail but common history, shared values and a similar sense of humor are very important factors that shape cooperation between business partners as well. Another very important factor is Poles’ very good command of English. It is a great advantage when communication is being handled primarily via phone or E-mail.

An essential factor providing Poland’s with its place on the outsourcing map is its very large pool of highly skilled specialists. Currently, there is over 140,000 staff employed in the IT sector in Poland. The level of IT skills found among Polish developers matches the level found in the Western European countries. Each year 15,000 graduates of IT faculties enter the labor market in Poland, while almost 100,000 high school students attend IT courses. Additionally, according to the Central Statistical Office, the number of graduates in information technology is increasing. The high standards of the Polish educational system are confirmed by the many awards and prestigious competitions won by Polish programmers. Every year the quality of Polish IT professionals is recognized in international contests such as the Code Jam, the Imagine Cup or the Google Code Jam. Polish IT professionals win significant part of all awards every year which serves as proof of their excellent skills.

For more information on Poland as an outsourcing hub go to 3 reasons why outsourcing to Poland is the new IT thing.

  1. Rapidly growing IT market

The favorable economic and industrial conditions are also the reason for a continuous boost of Polish IT sector. According to statistics published by DiS, the value of the market increased by 4 percent and reached 21.2 billion PLN in 2013, which represented around 1.5 percent of Poland’s GDP at the time. 2016 brought a growth rate of 4.1% to approx. 34 billion PLN.  With the end of 2017, it is forecasted that this ratio will be even higher and will amount to 5.5% (35.8 billion PLN). Industry analysts forecast that the Polish IT services market will sustain the dynamics of growth also in the following years.

All those numbers make Poland the fastest developing IT market of the Central and Eastern Europe. The company Kapsch BusinessCom has come up with an index that compares the situation of the ICT sector in Austria, Czech Republic, Slovakia, Romania, Turkey, Hungary, and Poland. As the study shows, Poland with its overall top results in nearly every category has the largest growth potential in IT services in Central and Eastern Europe.

ICT Market Development Index

it software development poland

Source: Kapsch BusinessCom, www.kapsch.net

  1. Agile methods of development

Poland is an excellent environment for handling agile IT projects. It is a common knowledge at Polish software houses but not the as popular choice among businesses in this part of Europe. It means that even though our development teams are proficient at producing software in the framework of Scrum, not many of the local companies are aware of its advantages and still prefer to cooperate using traditional methodology. It creates an opening for all the other stakeholders (also from distant parts of the world) that choose the agile approach to software development. It is a preferable option at many software houses in Poland and if they have a client that agrees with it, they will most likely give it a priority.

More about agile software development here https://evolpe.software/agile-development-poland/.

  1. Modern start-up culture

Apart from outsourcing, another growing trend is the Polish start-up culture. Young entrepreneurs in Poland know how to take advantage of all the described factors and use them in favor of an innovative, buoyant businesses. Due to the compilation of Lean Startup approach with the outsourcing of services, same treatment applies to all the novice companies from around the world, that choose to work with Polish software houses. It means that you can get a Minimum Viable Product version of the software and have it prepared by the same development team as the one working with the biggest corporations.

In addition to that, Alison Coleman in her article for Forbes.com shared the results of another report confirming the strength of Polish start-up economy. The poll quoted by the journalist revealed that of just over 2,400 Polish startups 39% were software development enterprises, mainly selling their products as SaaS. Of the startups that were growing at more than 50% annually, most were doing so through the sale of mobile and big data services to large corporations. Above all that, over half (54%) of Polish startups are exporting abroad, mainly to the US and UK.

  1. Innovative technology

Polish developers are known for being well-educated and proficient in most of the newest programming languages. Thanks to the specificity of the IT sector there is no information gap between places like Silicon Valley and Poznan (eVolpe Headquarter), Poland. With just the use of internet, programmers from all around the world have the possibility of learning the latest high-tech solutions. Having that in mind, there is absolutely no problem to get applications written in Python, Java, PHP or JavaScript from Poland. All of those technologies listed in the ranking below are commonly known by Polish developers who participate in their popularization and development.

The 2017 Top Programming Languages

it software development poland

Source: The 2017 Top Programming Languages, spectrum.ieee.org/

In addition, Polish developers are considered the best specialists of PHP and JavaScript. Statistics show that among all the options the most popular is definitely PHP.

Top in Programming Language usage in Poland

Name.PL %
PHP92.84%
JavaScript3.6%
PHP 72.85%
Ruby on Rails0.71%

Source: Programming Language usage in Poland, trends.builtwith.com

It is also worth mentioning that in comparison with other countries, Poland has very advanced skills in Java, Python, and Ruby.

Countries with the Best Developers by Domain

it software development poland

Source: Which Country Would Win in the Programming Olympics?, blog.hackerrank.com

 

In case of questions about software development in Poland contact eVolpe Software House go to: office@evolpe.software or +48 783 372 094.