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

 


22
Jan 18
scrum

Why We Love Scrum (And You Should, Too!)

Having developed IT solutions for dozens of companies from all around the world, we have had to do with both traditional and agile methodologies. Over the years we have come to the conclusion that there is no better way of understanding customer’s needs and translating them into software than with a little help of… a whiteboard and a pad of sticky notes.

As surprising as it sounds it is the only requirement necessary to start working in Scrum. And not even a definite one. The essence of Scrum is intangible. It is rather a set of values, rules and roles than a strict procedure to follow or a tool to use. This is probably the first reason why we have liked it so much. It gives us room for creativeness, unconventional solutions and freedom of expressing our perspective. All that works perfectly in favor of solving complex problems, prioritizing tasks and delegating them to individual members of the team.

Agile and Scrum – is it any different?

scrum agile

At the beginning, it might get a little confusing. Not to delve too far into the theory, Agile refers to a set of methods and practices based on the values and principles expressed in the Agile Manifesto, which includes things like collaboration, self-organization, and cross-functionality of teams. Scrum to say the least is one of the many frameworks that fall into the category of agile development. As Ken Schwaber and Jeff Sutherland explain in the Scrum Guide: “it consists of Scrum Teams and their associated roles, events, artifacts, and rules. Each component within the framework serves a specific purpose and is essential to Scrum’s success and usage. The rules of Scrum bind together the events, roles, and artifacts, governing the relationships and interaction between them”.

Why we prefer this particular way is mostly because it can be easily adjusted to the requirements of our client. This way no matter what your field of expertise is, what kind of business process needs to be tamed by the software – we will be able to help you.

scrum agile

If you still do not quite get the difference, try comparing… a diet and a recipe. A recipe for a particular dish needs to correspond with your diet. Otherwise, you will never see results! A diet is something “bigger” which determines what kind of recipe you are going to choose from the cookbook. Same with software development. Or any other project for that matter. There is no Scrum if you do not follow Agile Manifesto. Or at least you cannot say you have been following “doctor’s orders”.

 

 

 

Scrum is people

You really do not need much to begin working in Scrum. If there is a team of people willing to try, you are good to go!

scrumStart from assigning jobs. The actual tools you are going to use (the famous whiteboard for example) are not as important as getting the roles right.

First of all, the Scrum project requires a Product Owner. This is the person who represents user’s best interest and has the authority to say what goes into the final product. She or he stays in charge of an artifact typical for Scrum called Backlog. Product Owner not only approves the list of tasks and requirements but also prioritizes everything on it. The question a Product Owner needs to answer the most is: Is it a “Must Have” or a “Nice to Have” feature?

 

Every group requires a leader, someone who will discipline the rest. Without it there is a fair risk of procrastinating, trumping up or losing the motivation. Having that in mind, another very important role “to cast” is the role of a Scrum Master – the person who helps the team move along with the job. But being a leader means so much more than just bossing people around. In Scrum, the leader is also a servant. Not even the Scrum Master has the power to tell the Development Team how to turn Product Backlog into an Increment of a potentially releasable functionality!

Speaking of, a Development Team is a group of people responsible for delivering shippable product increments every Sprint (which is the goal!). The team needs to be self-organizing and cross-functional. It means that they independently decide how to proceed with the job and hold the competencies necessary to do so; without depending on others who are not a part of the team.

In our world of software development, the members of the Scrum Team are mostly programmers. Sometimes also sales representatives or business analysts. Regardless of what is their position in the company though, Scrum never recognizes titles other than a Developer. In the Development Team, everyone is equal and have the same right to speak up at any time.

Additionally, Scrum recognizes 5 rules of how the people involved should cooperate. Everything in order to organize the job and properly allocate responsibilities to the members of the team.

  1. Commitment: Team members individually commit to achieving their team goals, each and every Sprint.
  2. Courage: Team members know they have the courage to work through conflict and challenges together so that they can do the right thing.
  3. Focus: Team members focus exclusively on their team goals and the Sprint Backlog; there should be no work done other than through their Backlog.
  4. Openness: Team members and their stakeholders agree to be transparent about their work and any challenges they face.
  5. Respect: Team members respect each other to be technically capable and to work with good intent.

 

About the artifacts

– explaining all that weird stuff we have mentioned (and some more)

scrum

While talking about the roles, we have failed not to use some other cryptic terms. Therefore, we owe you some explanation.

First of all – Product Backlog. It is an ordered list of everything that is needed in the product or simply the only source of requirements and changes to be made. It contains a description of features, functions, requirements, enhancements, and necessary fixes. Important sidenote: it is never complete! It evolves constantly, as the product and the environment change.

 

Sprint. We have used that referring to a single iteration, a period of time (usually 2 weeks) in which the Development Team is obliged to introduce a finished Increment to the project.

The Increment is the sum of all the tasks completed during a single Sprint. It must be in useable condition and meet the definition of “Done.” It is up to the Development Team and the Product Owner to decide how that definition sounds like. What we say at eVolpe Software House is that it just means a working piece of software, 100% ready to be introduced to our client.

(But we have not explained everything about the Sprint yet!)

A Sprint consists of a couple of smaller parts. It is full 10 working days after all. Those elements are the Sprint Planning, Daily Scrums, the development work, the Sprint Review, and the Sprint Retrospective. Now, let’s quickly go through them.

The Sprint Planning is a meeting being held in order to answer two following questions:

  1. What can we deliver in the upcoming Sprint?

  2. How will we achieve that?

 

The Daily Scrum (or Stand-Up) is an about 15-minutes-long meeting held to synchronize activities and create a plan for the next 24 hours. This is done by inspecting the work since the last Daily Scrum and forecasting the work that could be done before the next one.

A Sprint Review is held at the end of the Sprint to inspect the Increment and adapt the Product Backlog (if needed). During the Sprint Review, the Scrum Team and stakeholders collaborate about what was done in the Sprint. Based on that, attendees collaborate on the next things that could be done to optimize project’s value.

The Sprint Retrospective is an opportunity for the Team to inspect itself and create a plan for improvements to be enacted during the next Sprint.

3 Pillars of Scrum (and the whiteboard, at last)

scrumCongratulations, you have made it to the end of this article and here it is your price! We are finally going to speak on the whiteboard!

An important principle of Scrum is the idea of Transparency. It means that all the Developers should be aware of what everyone else is working on and what the Team is trying to accomplish. In order to assure that, we are using a professional software – called Redmine – along with a little more conventional tool.

Making things clear and visible on a whiteboard is really helping us run the projects properly. It also boosts our creativity. Being able to comprehend the whole process with just one look is definitely making things easier for many of us.

Another pillar of the framework is the rule of frequent Inspection. It helps to detect undesirable variances. It should not eclipse the bigger picture or get in the way of the work though.  The idea is to keep the track of the progress and react if anything goes wrong for some reason.

The third big pillar of Scrum is called Adaptation. If an inspector notices something unusual the adjustment must be made as soon as possible to minimize further damage.

The three pillars together assure the success of the project and make everyone’s job so much easier.


Because there is so much more to say about Scrum than what we were able to fit in a single blog post, we invite you to check our other publications.

Here we speak about Product Discovery – one of the first steps to a successful IT project: https://evolpe.software/product-discovery/.

Here you will find information about the specifics of Agile Software Development in Poland: https://evolpe.software/it-software-development-poland/.

Finally, if you are interested in having your software developed in Scrum, give us a call!

 


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.


03
Oct 17
body leasing

Find out the difference between Body Leasing and Development Teams Outsourcing!

The rapidly growing demand for IT workers that we are currently experiencing caused the increase of difficulties while hiring properly qualified employees. Access to fully-fledged IT staff is a problem of small and middle-size companies as well as corporations with large HR budgets. In this situation, instead of hiring IT workers full time it is way more convenient to use services such as Body Leasing or Development Teams Outsourcing.

What is the difference between Body Leasing and Development Teams Outsourcing?

Looking closer at the software development market you have probably noticed that many software houses apart from classic implementations offer also outsourcing of IT specialists. If you find it hard to spot the difference between Body Leasing and Development Teams Outsourcing, this article is exactly what you have been looking for.

Body Leasing is a periodical hire of IT professionals holding competences from different areas of software development. It is most commonly used to streamline the project management and reduce costs of the implementation. It can be suitable for large, medium and even small companies.

In other words, Body Leasing is a way of getting services of individual development team members in order to implement an IT project of your choosing. It is a solution recommended for all the companies that have an experience in software development, know what they would like to achieve and how, but at the same time need some support to build up a team. The only thing they are missing is a skilled Scrum Master, Business Analyst or a single Developer.

In the case of Development Teams Outsourcing, it is possible to request a whole, complete and experienced team to work on your project without having to invest the time of your company’s human resources. The difference is that it is not only a single person holding a set of skills from a certain area of interest but a team on its own working to get things done for a stakeholder. You don’t need to have knowledge regarding individual stages of software development because the people you hire have it covered and are able to deliver the result you have ordered. They could also be working remotely from a different country and you will be informed only about the outcome of each Sprint. Your job as a stakeholder is to accept the product as it is or communicate the changes to be done. This is also why Time & Material price settlement is a preferable choice while pursuing IT projects developed by outsourced teams (more about it why, later on in this article).

Advantages of Body Leasing and Development Teams Outsourcing

Body Leasing, as well as Development Teams Outsourcing, were created to reduce the cost of employment in the long run. The main advantage of those solutions is that companies no longer waste time looking for IT specialists on the market and thus avoid the financial outlay of constant recruitment. Turning to a software house that is offering to outsource its own employees makes it easier to get an IT project on track. As a client of such company, you don’t have to maintain a full-time employee nor a team of specialist for a single project. Those two solutions help you save on equipment, licenses, and often also on the office space. Furthermore, outsourcing in general allows engaging professionals for a short period of time. In such situations, the lack of rigid costs associated with traditional forms of employment is a great convenience for the company.

Mistakes to avoid if deciding on Body Leasing or Development Teams Outsourcing

The most crucial part of the software development takes place usually right at the beginning of the process. The choice of the supplier and then the early stage of negotiations will most likely shape the rest of the cooperation between the participants. To avoid misunderstandings and make the job easier to handle remotely, you should definitely very carefully check the references and read through Service Level Agreement. In the classic Body Leasing, a fundamental mistake is usually a too poorly defined candidate’s profile. For example, clients often point onto too much competency in relation to their actual needs. As a result, the cost of the order as well as the time of delivery increases unnecessarily. To avoid this, it is worthwhile to designate a person (Project Owner) who will attend the meetings of the development team and take responsibility on what is actually being done. This way it should be easier to profile the actual needs of the customer.

Price settlement – how does it work?

Both Body Leasing and Development Teams Outsourcing can be based on Time & Material or fixed price agreements. The most efficient way is definitely the first option, which is characterized as the calculation of hours worked by a specialist on the project (based on the so-called timesheet). The second model involves evaluating the project, calculating the assumptions and the outcome as well as team’s performance (which is quite subjective). Understandably, it is way harder to agree on the software’s value as it is done and one of the parties would like to already start using it (preferably before paying for it) and the other is still waiting for the compensation. To avoid presumable conflicts it is recommended to use the agile price settlement on the on grounds of Time & Material.

Let’s sum it up!

More and more often companies are interested in hiring experts for a particular project only; especially developers proficient in PHP and JavaScript and its extensions. Forms of this employment can be very diverse: from having a single professional consult on a project to the use of the entire development team. As both Body Leasing and Development Teams Outsourcing become more and more popular, before choosing one it is crucial to examine individual needs and to decide which form could be more beneficial for a specific company or project. Body Leasing is usually more profitable for companies that already have the experience in software development and need just the support from one or couple of individual team members. Development Teams Outsourcing is most viable rather in the case of firms from other branches that do not hire IT specialist and need complex assistance.

For more information about Body Leasing and Development Teams Outsourcing contact our team directly!

 


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.


24
Jul 17
web application

Mobile, desktop or web application – what should you choose?

The app. It has been one of the fastest trending buzz words of last years. Many times when we hear about a successful startup or about the newest tool that everyone just cannot stop using (and talking about), there is a great chance it has to do with some kind of an IT application.  When our customers ask us what could solve their problems there cannot be another answer than: let us develop an application for you, it will be a perfect fit to specific needs of your organization.

Desktop, mobile or web application – about making that choice

When you already know that you want to order a customized application, the next question will probably be: of what kind? There are three main types of such software. It makes a difference if it should be a mobile, desktop or web application. Let us guide you through each kind so you can consciously make the best choice.

It appears that the most commonly used solution is still the desktop app. Many individuals and businesses decide to install hard copies of the software on their servers and use them on their laptops and PCs. It is definitely convenient to have it stored and be able to use it even without internet connection. However, the desktop app is also the oldest solution and it many cases tends to be a little outdated.

A mobile application, on the other hand, was created to meet the needs of growing network of the users of mobile devices. These applications are most often created for specific operating systems (such as Android, iOS or Windows) and work best with devices that support them. If the specificity of your organization requires an above average usage of a mobile phone or tablet, you should consider getting a mobile app instead.

If you cannot estimate if you are using your laptop or your smartphone more, it is likely that the web application will be appropriate.  The great advantage of this type of software is that it can be used on whatever device. It opens in a browser, so it operates the same on the PC in your office, your laptop during a business trip or on your smartphone as you are running late to work.

How to tell mobile app from desktop or web application? 

Mobile and desktop applications need to be installed directly on a device.

A desktop application usually requires adaptation to the operating system of the device, which may mean that it will simply not work on a computer with a different OS. It is also rather difficult to perform an upgrade to the latest version because it means an installment of the most recent patch on every single computer within the firm.

It might be a little less problematic when it comes to mobile apps. To be precise there are at least three sorts of this kind of solution. We will be covering the details in following posts on this blog, but just to give you a glimpse, it’s possible to distinguish:

  • light website,
  • native application,
  • hybrid application.

Talking about the upgrades and switching between devices, light websites or hybrid apps do not cause any difficulties. A slight obstacle might occur if using a native mobile application. In case it was prepared for a certain OS or – even more radically – just for a specific version of the operating system, its users should be prepared to face some limitations.

A web application, on the other hand, communicates with your device exclusively through a web browser. As mentioned, it does not make a difference if you are using a phone or a personal computer. This is a great advantage that saves your time and gives you the freedom of deciding which device is more appropriate at the moment. It is crucial that you have a working internet connection though. (Anyway, nowadays it should not be a problem.) One other thing to consider while using a web application is its responsiveness. Your software house should make sure it opens on a phone’s small screen in a way that will not interfere with your User Experience.

Is web application an ultimate solution?

After reading the latest paragraph you might already be under the impression, that a web application is the best solution out there. It is simpler to use, portable and it saves your time.

Surprisingly, desktop applications are actually very popular throughout many business branches. Especially when it comes to the software that supports accounting or financial analytics. It results from stagnation and misunderstanding rather than from an actual supremacy of this solution. A popular myth, that is still circulating in many organizations tells us that data entered into desktop applications is less likely to be hacked. It comes from the perception of private servers to be the safest solution to store business information. It could not be further from the truth to still think that in 2017. It should be enough to say that even traditionally known as exclusively desktop app, biggest office suite has recently turned into the direction of a web solution[1].

Mobile applications on the other hand are software designed for mobile devices such as tablets and smartphones. They usually work as an addition to a web app because not all the functions can be delivered on a small screen of just a phone with a limited computer performance.

Internet (web) apps are a mobile tool that can be used anywhere in the world and from any device – regardless of its operating system. They are also usually very frequently updated (without involving its users). Those two factors make them the most desirable software of modern times. Very good examples of web applications are all types of applications that require online communication (for example transactional, social and administrative portals).

Connecting different types of applications

A very popular solution is to connect two (sometimes three) types of applications. It can be done if you would like to use the benefits of more than one kind of such software. A connection of the web and mobile application is commonly used in CRM systems. SugarCRM for example apart from a very popular web application offers a mobile version of it. It complements the user experience and allows a convenient way of switching devices depending on a situation.

A little summary

All desktop applications require installation on PCs or portable computers.

Mobile applications are built for a specific type of operating system. Updating them does not involve much attention from the user. In addition, mobile applications can usually work without internet access.

The web application has tremendous capabilities. It combines the assets of a mobile app with some unique features. It can be used on both stationary and mobile devices. The only thing that you should remember about before choosing this solution is the fact, that it depends on the quality of your internet connection.

For more information and some consultancy regarding the most suitable solution, contact our team by filling in our online form available here: CONTACT.

 

 

[1] https://onedrive.live.com/about/en-en/


26
Jun 17
freelancer-software-house

Freelancer or Software House – what to choose?

Before choosing the right option it is essential to identify the difference between freelancing and software house services.

The concept of freelancing relates to a single person handling software development typically from the shelter of their household. The person usually works for an IT company and is using some extra hours on projects for individual investors. It’s a popular method to earn some additional money and gain experience while pursuing smaller projects.

A software house is a larger organization that deals with dedicated, customized IT solutions for business clients. It does what a freelancer could do but on a bigger scale. Software house projects are normally more advanced than those contracted with a freelancer.

What are the advantages and disadvantages of hiring a freelancer?

The main reason to hire a freelancer would be the financial one. It’s definitely much cheaper to have just one person work on a project. Other perk of giving the task to a freelancer is a pretty good chance we will be dealing with someone who has a great knowledge of the software. As mentioned above, many of freelancers out there work for professional teams as well.  Having all that in mind, we have to be also aware that the whole process will probably be more time-consuming and the result could not be enough if we’d expect a fully customized software. It’s simply not possible to quickly deliver well-developed and complex software if only one person is working on it (after hours)… Overall, leaving an IT project in hands of an individual developer is quite risky because every sickness, trip or other reason for taking an off day means suspension of the whole procedure with no one to take over!

How a software house could save the day?

The biggest advantage of a software house is… the continuity! The lack of it if dealing with freelancers sends more demanding customers right to companies such as eVolpe Software House. Having an organized team handle the job is much safer and efficient. As a client you can expect that even if one of the team members gets some time off, your project is being pursued without any disruptions.  A software house operates accordingly to high standards of project planning so you can be certain everything will be right on track even if someone skipped work that day. You could also await warranty or additional support (even after the software was implemented).

The only disadvantage you could find is probably the price. But that’s only if you are looking at it in terms of what’s objectively cheaper. Obviously, you will pay less for hiring a freelancer. But you will also receive less professional customer service. So those are only apparent savings. In the end, if you’re looking for an experienced, organized and well-equipped unit to deliver a customized software on time – the answer can be only software house!

How about an example to understand it better?

One of the most common examples while explaining IT development is the analogy to a construction project.

Let’s imagine you are building a house for yourself and your family. Even if the single construction worker you hired doesn’t deliver on time, nothing serious will happen. Well, you will probably have to stay at your parent’s house for a little longer (and no one would like that) but no tragedy yet.

Now, let’s say you are responsible for delivering a stadium before soccer world championships.  The pressure increases, right? The deadline is serious, your bosses are watching you, the whole COUNTRY (!) is watching you… For such investment you will definitely need an experienced, reliable partner who can assure you of the high level of proficiency and who will take the responsibility off your shoulders.

In conclusion…

When the project is small and there’s no pressure to finish it fast – hire a freelancer.

When your project is rather big and the time factor is important for you – hire a software house.


06
Jun 17
evolpe software house

eVolpe Software House – well-known company, newest brand

Dear Readers,

with the first post on our blog, we want to use the opportunity to introduce the story of how we established a new brand within the eVolpe group …

It started a little low-profile with just the idea to take a closer look at the previously created company and its nearest surroundings …

At least once a month we try to organize an open discussion panel called “What’s new?”. During such meetings, we are sharing interesting facts from many different fields of knowledge, for example, science, psychology or business. Sometimes we hear about sales techniques, sometimes about methods of fast learning, sometimes about the latest software features created by our developers.

One day, during a short speech given by our colleague, we reminded ourselves of the advantages of SWOT. Thanks to the subjective balance of strengths and weaknesses and objective analysis of threats and opportunities, we were able to recognize the direction of further development for our organization.

We are a young and buoyant team of software enthusiasts. We like what we do and we are really good at it! Moreover, we rely on experience gained during more than seven years of Open Source deployments. We have created numerous IT solutions, mostly for Sales and Marketing departments. Our developers are experts in PHP and JavaScript programming. We have worked with large companies from Europe and America. We are able to take on complex, individually dedicated and advanced projects, even from afar.

Awareness of these few, truly valuable competitive advantages, inspired us to take on next, bold challenge. Comparing our own attributes with the trends observed on the market, helped us decide to found a completely new brand. eVolpe Software House!

With the new, second “pillar” of the company, we want to more accurately respond to the needs of our customers. We set ourselves the challenge of providing comprehensive computer software which, through rich functionality and individually tailored structure, supports the sustainable development of your company!

eVolpe Software House vs. Open Source

Based on many years of experience in B2B cooperation, we have gained a broad expertise in the optimization of business processes. Developing systems for companies from different sectors of the economy, we have learned how important is the individual adjustment of the system to the locally adequate procedures. Solutions proposed by major manufacturers, although optimized for the general audience, often require advanced programming skills. At eVolpe Software House, we not only work with Open Source codes but also create a completely original product!

We still believe in the idea of open software and often draw inspiration from free frameworks and libraries. Our mission is to provide comprehensive IT tools that fully respond to individual requirements of eVolpe customers. If it improves this part of the job and makes the final product even more efficient, we take advantage of the benefits of Open Source in the manufacturing process as well.

Outsourcing is trendy

We also try to follow a contemporary trend of outsourcing. To customers who do not want to go through time-consuming recruitment processes, we offer services of professional development teams. We realize how demanding is the task of choosing a suitably qualified, capable of leading complex projects staff. With our support, it is possible to re-delegate the unpleasant duty.

Agile Development in Poland

At eVolpe Software House, we aim to popularize the ethos of Polish programmer. We are proud to hear from our foreign customers how well the Poles do the job. In addition, we also try to be a role model and furthermore promote this type of comments. We believe that Polish developers in many cases outreach the highest international standards.

Polish programmers are well educated and usually share an excellent professional background with knowledge of  Agile Development work techniques. At eVolpe Software House, we focus on directly fulfilling the ideology of Agile with the framework of SCRUM. It’s a modern approach, that organizes the work of the development team and helps to deliver tailored, properly operating and functional software.

Lean Startup, because everyone once started

Finally a few words about the last component of our offer…

During this mentioned, repeated SWOT analysis, we’ve also remembered what’s it like to start from scratch. Although eVolpe Software House is yet another project of the same team, we definitely identify with those who are taking their first steps in the business. Exactly for such people: young entrepreneurs with a vision, we offer the last but not the least important solution: Minimum Viable Product for Startups.

MVP it’s a software that is offering only key features. It is dedicated to the novice businesses, that can successfully work with just the demo version of an unfinished software. With this solution, the startup founders are able to determine what type of a tool and with what features will be the most useful to meet the needs of the target group of customers.

To sum up,…

eVolpe Software House is a completely new edition of another project that was once launched under an orange trademark (eVolpe Consulting Group). Without suspending current operations, we now are expanding the range of our services under a new logo! However, the above-described elements of our portfolio are only a way to achieve following, overarching goal:

delivery of fully customized software which, thanks to its functional solutions, combined with the comprehensive services of our specialists – helps with the development of your business!

We hope that we were able to interest you with our story.

For more details on eVolpe Software House, please contact our team.

Team eVolpe Software House