Wednesday, October 16, 2019

Is Amazon AWS Robomaker worth it?

Amazon released AWS Robomaker last year (2018) as a service that makes it easy to create robotics applications at scale. But, what does it mean and how this could help us in our developments and release of real products?


The product

AWS RoboMaker nowadays is focused on extending the Robot Operating System (ROS) framework with cloud services. [1].

AWS Robomaker service suite includes nowadays (2019) the following components:

  • Cloud Extensions for ROS: With them, it is possible to offload some resource-intensive computing processes that are used in robotics applications to the cloud and free up local compute resources. These extensions allows to integrate with AWS services like Amazon Kinesis Video Streams for video streaming, Amazon Rekognition for image and video analysis, Amazon Lex for speech recognition, Amazon Polly for speech generation, and Amazon CloudWatch for logging and monitoring. RoboMaker provides each of these cloud service extensions as open source ROS packages, so it is possible to build functions on the robot by taking advantage of cloud APIs[2]. Having said that, obviously AWS charges fees per usage of the cloud services. This seems to be the business model of AWS Robomaker for Amazon.
  • Development Environment, based on AWS Cloud9, so it is possible to launch a dedicated workspace to edit, run, and debug robotics application code. RoboMaker's development environment includes the operating system, development software, and ROS automatically downloaded, compiled, and configured. Plus, RoboMaker cloud extensions and sample robotics applications are pre-integrated in the environment.
  • Simulation system based on Gazebo, that supports large scale and parallel simulations, and automatically scales the underlying infrastructure based on the complexity of the simulation.
  • Fleet Management service allows over-the-air deployment to deploy a robotics application into a robot fleet securely, so updates could be easily deployed in a full fleet or part of a fleet of robots.

(C) Amazon AWS Robomaker


Observations

The product sounds really interesting, but let's consider the following goods and bads from my personal point of view:

  • One of the interesting things of being cloud based is that it could be used for development from anywhere, without the need to have ROS installed in the developers PC. This is a good starting point, but this is not usually a preferred long term solutions for developers, who use their preferred IDEs and tools for static code analysis. Anyway you could always ose your IDE and tools and use only AWS cloud services.
  • This solution support ROS Kinetic and Melody, the latest two long term support versions of ROS1, but does not support ROS2 for example that, although is at some point in it's infancy, already has a LTS version.
  • Cloud extensions are really interesting. Having the capacity to run powerful computer vision algorithms in a massive computational environment in a transparent way is definitely a good option. The same happens with the other cloud based services offered by AWS. But you have to keep in mind that you need to ensure a reliable communications channel if your dependency to the cloud services is critical to your specific application to work properly. 
  • It is very interesting that AWS Robomaker is always considering the idea of a fleet, so simulations and services could be used for the full set of robots.
  • One of the things I really like is the option to deploy updated OTA (Over-the-air) to one or more robots in a fleet. Imagine you have 10 robots installed in a customer. If you update all of them in a shot may be risky. With this service you could update just one, then three and after everything is ok, then the rest, easily, with no headaches. 
  • One of the things I like of the cloud services offered by AWS is that you pay per use, so you may even charge to customers based on this model in case you offer a robot-as-service business model
  • You also could have cloud based metrics of the robots, so you could do preventive maintenance or monitoring.
  • About the simulations, definitely developers could create much more powerful simulations in AWS Robomaker than if they have Gazebo simulator locally installed in their top notch powerful PCs, as AWS offer expandable computing power. This is just a question of how much computing power you need and how much money you are prepared to pay.
  • About real product applications, nowadays I see that there is a risk on the dependency for reliable wifi connection. If your application depends on it, you need to implement alternative ways of communications, so you may need to implement a solution that switches from wifi to 4G in case wifi fails or degrade.
  • Last thing is that somehow using AWS you need to accept that you are creating a dependency to these services, so you will not be easily able to implement other similar solutions with on-board computing in the future. Anyway, Amazon looks to be a good partner for a long term relationship.
---
Reference:

[1] What is AWS Robomaker: https://docs.aws.amazon.com/en_pv/robomaker/latest/dg/what-is-robomaker.html
[2]AWS Robomaker web page: https://aws.amazon.com/robomaker  

Monday, September 30, 2019

Is ROS ready for industry?


Recently I published my latest book “ROS Programming with Python” in Amazon. Some people asked me free promotional units of the book (just email me if you want yours), but what was really interesting was to find people very reluctant to ROS, saying it is just for education and not for the real Industry. I think ROS is starting to offer interesting options for Industry, but to evaluate that we need to know in advance that there are three different approaches of ROS: ROS 1, ROS 2 and ROS Industrial. Let me briefly explore them:


ROS 1

The Robot Operating System (ROS) is a flexible framework for writing robot software. It is a collection of tools, libraries, and conventions that aim to simplify the task of creating complex and robust robot behaviour across a wide variety of robotic platforms.

ROS 1 born as a solution for single robots, the PR2 from Willow Garage, although it was designed to be used in a variety of robots with no real time requirements.

Today we see ROS used not only on the PR2 and robots that are similar to the PR2, but also on wheeled robots of all sizes, legged humanoids, industrial arms, outdoor ground vehicles (including self-driving cars), aerial vehicles, surface vehicles, and more.

ROS 1 is nowadays the approach of ROS that most people knows, with several releases, being the last LTS versions (Long Term Support) Kinetic and Melodic. In fact, when you talk nowadays about ROS, it is widely accepted that you really are talking about ROS 1.


ROS Industrial

ROS-Industrial (or ROS-I) was created in 2012 to develop collaboration between ROS and the industry. 

ROS-Industrial is an open-source project that extends the advanced capabilities of ROS software to manufacturing.

ROS capabilities, such as advanced perception and path/grasp planning, can enable manufacturing robotic applications that were previously technically infeasible or cost prohibitive.

ROS-Industrial is released under the business-friendly BSD and Apache 2.0 licenses.

With ROS-I, BMW Group Logistics was able to incorporate several different sensors into their STR to enable sensor fusion within each mobile robot. ROS-I allows the different hardware and sensors contained within the vehicle to communicate with each other, and also allows the robot to communicate with different IoT solutions. BMW uses a cloud-based operating platform for central coordination of the STRs.

BMW, Microsoft and Open Robotics on an automation solution using ROS-I


ROS 2

ROS 2 was first introduced in 2014 in ROSCON 2014 conference. ROS two is not a new version of ROS, but a new promising approach, with different releases, that is much more prepared for the Industry than ROS 1.

Robotics and business evolution asked for new use cases that were not considered when ROS 1 was designed and were the reason of creating a new approach of ROS: ROS 2. Some of these use cases are, as described by Brian Gerkey, CEO of Open Robotics and former Director of Open Source Development at Willow Garage:

  • Teams of multiple robots: while it is possible to build multi-robot systems using ROS 1, there is no standard approach, and they are all somewhat of a hack on top of the single-master structure of ROS 1. In the other hand, ROS 2 is designed as a distributed system for single or multiple robots, not depending on a Master and replacing the messaging layer to rely on DDS (Data Distribution Services).
  • Real-time systems: we want to support real-time control directly in ROS, including inter-process and inter-machine communication (assuming appropriate operating system and/or hardware support). While ROS 1 is not designed for Real time, ROS 2 could work in real time while using RTOS. 
  • Non-ideal networks: we want ROS to behave as well as is possible when network connectivity degrades due to loss and/or delay, from poor-quality WiFi to ground-to-space communication links. ROS 2 is designed for this approach while not ROS 1.
  • Production environments: while it is vital that ROS continue to be the platform of choice in the research lab, we want to ensure that ROS-based lab prototypes can evolve into ROS-based products suitable for use in real-world applications.


WHAT ROS APPROACH THEN?

The rivalry may be more between ROS 1 and ROS 2, considering ROS-I definitely more for Industrial robots and manipulators.

I like the recommendation given on July 2019 by Dan Rose and Nick Fragale from Rover Robotics with help from Open Robotics:


DemographicDescription of userAdvice
StudentsThose who are just learning to use ROSStick with ROS 1 for now. Many of the concepts in ROS 1 and ROS 2 are the same so learning ROS 1 will help you to learn ROS 2 later on.
ProfessorsThose teaching ROSKeep teaching ROS 1 for now but start thinking about curriculum for ROS 2. There are many entities interested in helping to develop curriculum for ROS 2 including Rover Robotics so you don’t have to go at it alone
ResearchersThose using ROS to publish papersUnless your paper is specifically to show off using ROS 2 our advice is to stick with ROS 1 for the time being.
Large CompaniesThose who are in R&D groups funded by a large corporate entityStrongly consider ROS 2 to reduce the amount of technical debt in the future. Put people with experience with ROS 1 on the project.
New Robotics StartupsThose who are thinking about starting a robotics companyStrongly consider ROS 2 to reduce the amount of technical debt in the future. Hire people with experience with ROS 1.
Existing Robotics StartupsThose working at a robotics startup that’s either using ROS 1 or not using ROS at all.This is the hardest group to offer advice to. It really depends on where you are at with your startup. Keep an ear to the ground on ROS 2, at some point you will want to switch but it will be like ripping off a band-aid.
Robotics OEMThose who make either robots, sensors for robots, or anything that needs a ROS driverNow is a good time to switch. ROS 2 Dashing is the first LTS release so its now safe for OEMs to start porting drivers without fear of new features that will break functionality. Additionally we have seen large companies like Amazon, Intel, and Microsoft devote significant resources towards ROS 2 development.



COMPANIES USING OR SUPPORTING ROS

Some Companies Using ROS: NASA, BMW, Clearpath Robotics, Fetch Robotics, Pal Robotics, Robotnik, Yujin Robots, Robotis, Shadow Robot, Husarion, Neobotix, Gaitech, Sony, Ubiquity Robotics, Open Robotics, Rover Robotics, DJI, Infinium Robotics, etc.

ROS-I is supported by an international Consortium of industry and research members: ROS Industrial Consortium. ROS Industrial Consortium includes companies such as ABB, Airbus, Bosch, BMW, IFM, Intel, Pepperl+Fuchs, Siemens, Universal Robots, Yaskawa and much more.

-----
Reference:

Saturday, April 27, 2019

5 keys why ASTI Mobile Robotics is leading company in Europe

ASTI Mobile Robotics, the company number 1 in AGV sales in Europe (+1.000 AGVs manufatured per year), with close to 220 employees and a very strong growth with a CAGR of 53% since 2014 is my new home. I came back from Singapore to Spain about 8 months ago to be the Software Engineering Director, and I found some keys why this company is so successful. Let me go quickly through the five I consider most important. May be it helps other companies to think over their strategies for improvement:


A sample of AGVs offered by ASTI

International mentality: ASTI is always thinking on scalable solutions for the whole world, not for local business only. This explains why close to 75% of revenue comes from international business from 17 countries.

Variety of innovative solutions: An important investment in R&D ensures that ASTI offers a wide variety of AGV solutions for automated intralogistics in different markets, from automobile manufacturing to ecommerce.

Industrial quality products: The solutions are designed, developed and tested to ensure they are robust and reliable for Industry Grade 24x7 requirements.

Customer in the center: ASTI understand customers not as a source of income, but mainly as partners, with a deep commitment on customer success. ASTI do not sell products or projects just to fullfill customer requirements, but solutions to help the customer, to produce better and more. ASTI never abandon a Customer, even if it means to loose in the short run, because it will mean a great win-win in the long run.

Talent gathering: ASTI always looks for the best talent and the best team work, because the people in ASTI make the products quality, the products that will ensure the customer success. Personally I feel proud of the team of 40 people working under my responsibility. They are great people and great professionals.

Clic HERE if you do not see correctly the video



Friday, June 22, 2018

7 tips to choose a Methodology for Software Development


There is quite a variety of Process Models and Methodologies that could be used for a project.  Although there are fans of each model and methodology,  the question to answer is which one fits best for our specific need. This is where I will try to help you in this post.


Sometimes a methodology is used in a company due to company standards (i.e. SixSigma is a standard for General Electric), or just because it has been used during some time, or because the project managers and sponsors do not know well the benefits to apply other methodologies, or just because they are frightened of the change. 

For Software Development we could use different Process Models, like 

  • Linear Process Models, that follow a pattern of phases completed one after the other without repeating phases (Waterfall, V-model, Sawtooth model,..) and
dilbert.com all rights reserved

I would like here to point out some tips and benefits of the mostly used Process Models and Methodologies, to get some idea on what is better for us:

  1. Linear Process Models are not very adaptable to change. I used quite often these models, but usually for projects with very fixed and well defined requirements, that involved not only software development, but hardware integration. Although changes could happen in this model by applying Change Management practices, the model is not very well designed for those changes, so if these changes happen late in the project, they may add great delays and costs.
  2. Iterative Process Models are more adequate for Software Development as they are focused on iterations, with releases deployment after each iteration, getting feedback from customer and improving/modifying the product in each iteration. Desirable this iterations are short (under one month), so adaptation to change is much easier than with Linear Models
  3. Unified Process Model is one of the most interesting Iterative Process Models, that emphasizes gradual development. Something I like from this model is that it considers parallel work at the same time as cyclic iterations. Therefore for example it is possible to design the product architecture while developing tests at the same time. This is good and logic, as the Architecture may change when there are changes in the requirements and sometimes it is not necessary to have the full system architecture design ready before the coding phase starts. It is ok to have a general architecture definition at the beginning and go more into detailed architecture design for the features we are going to prepare during an iteration.
  4. Extreme Programming Agile Methodology or XP is all about client satisfaction by encouraging customer feedback during all development, small and frequent releases, simple designs (adaptable to change), coding standards, continuous integration and testing, balance between work and personal life and something that, in specific phases of the project is really good, although costly, that is “pair programming”, meaning that programming is done in groups of two developers, using the same computer and developing the same piece of code. It is interesting because drastically reduces failures in the code design, but needs to ensure that there are no personality conflicts in each pair. Also we need to keep in mind that XP is designed for small development teams. With big groups may become a mess, specially in the integration part
  5. Scrum is one of the most popular Agile Methodologies that is based on three pillars: Transparency, Inspection and Adaptation. From the Transparency pillar I really like the common agreement on standards and the “definition of Done” concept, that basically emphasizes clear common understanding on when a feature to develop is considered finished. This prevents misunderstandings and false expectations that later could add complaints and delays to the project. Also from the Inspection pillar I like the four events that happen in a Sprint (cycle in which a working release is produced). These events are: Sprint planning, daily Scrum, Sprint review and Sprint retrospective. They are a good way to progress in the project without spending much time in management or micromanagement.
  6. Lean software development (LSD) is a translation of lean manufacturing principles and practices to the software development domain, to reduce risks and deliver high quality products quickly. It sounds good, isn’t it?. I like one of it’s main principles: “Eliminate waste”. It states that anything that doesn’t add value is considered waste, like unnecessary meetings, unclear requirements or product defects. Other important principle, “Building Quality in” promotes the use of the best practices available to avoid errors in development, may be by using the pair programming concept, well commented code and good documentation, Refactoring if needed and automated testings.
  7. Kanban is used in Lean Software Development. This approach aims to manage work by balancing the demands with available capacity, and improving the handling of system level bottlenecks reaching the ideals of Just-in-time manufacturing. In Software Development this balance is made having multi-functional teams that could be placed in one or other phase depending on the demand. For example a developer could become tester during a specific period of time, depending on the “work in progress limits” established in each phase. Work items are visualized to give participants a view of progress and process, from start to finish usually via a Kanban board. Work is pulled as capacity permits, rather than work being pushed into the process when requested.

In summary, choosing one Process Model and Methodology depends on the kind of products to develop, the size of the development team, the culture of the company and the relationship with the customer, between others.

Depending on the company I worked for and the kind of project, I used Six Sigma (not described in this post), Waterfall, or Scrum Agile methodologies, but usually I added some ingredients from other methodologies that I considered may add value and adaptation to the needs. Sometimes being too strict with the methodology may not be the best option, depending on each specific situation. Because of that, it is good to know several methodologies, even if you are just using only one of them.


Reference:


Sunday, June 3, 2018

ROS, for more than proofs of concept

It was not so far in time when I used to program robots using assembler language, a sort of machine code extremely close to the hardware of the machine. In those times programming a robot for complex functions, like navigating autonomously from one room to another was a difficult and time consuming project, that may take months for a team of people.

Robotics is evolving very fast as well as the open source movement. A really interesting outcome of both evolutions is ROS (Robot Operating System). ROS is an open-source, meta-operating system for robots, is a robotics middleware (i.e. collection of software frameworks for robot software development). It provides the services you would expect from an operating system, including hardware abstraction, low-level device control, implementation of commonly-used functionality, message-passing between processes, and package management. It also provides tools and libraries for obtaining, building, writing, and running code across multiple computers.

Nowadays it is possible to program a proof of concept for a robotics system in few days, thanks to ROS and all the open source, already available tools. Its integration with Gazebo Open Source Simulator is also a great help on the design and test of algorithms and behaviors.

Just as an example, let me share with you a development I did recently, using ROS. It took me about 10 hours to write on my own an application for a robot to work as a messenger, able to go to any room or location in a house  or an office to deliver goods. The function of the robot is very straightforward: You just put something on the tray of the robot and indicate in the touch screen where to deliver. Then the robot, using a 360 degrees laser scanner for detection of the environment and SLAM navigation technology, finds a trajectory to the required location. This development would have taken easily 6 months of work for a team of 5 people 10 years ago. Now you could have it in 10 hours of only one developer and with a hardware technology (robot platform, lidar, embedded computer) 



HERE you could also find all the documentation about the development of this solution.  In fact this documentation will be one of the chapter of my next book about ROS that I expect to publish soon.

But ROS is not only for developing a proof of concept, but real products for consumer and industrial market. I will talk more about it in future posts.

Thanks for the Open Source philosophy, thanks for the developers of Linux, the Open Source Operating System in which ROS works, thanks for all the hard work done by Willow Garage team for the development did of ROS and thanks to the incredible community of developers that share their knowledge and code for the Robotics evolution. This is the key factor of this time. We all are working to make the Robotics technology evolve, by sharing, for the art of sharing.

Reference:
[ Wikipedia. https://en.wikipedia.org/wiki/Robot_Operating_System ]
[ Ros.org http://wiki.ros.org/ROS/Introduction ]

Wednesday, March 21, 2018

Market trends on Robotics for Logistics


The warehousing and logistics robot market is experiencing strong growth, with many prominent companies showing greater confidence in new robotics technologies that could yield a return on investment (ROI) in less time than it took a few years ago. [1]


The global Robotics market

The following graph, from the International Federation of Robotics and Boston Consulting Group [2] shows the market growth un billions of us$ for the main four sorts of robots:

Source. Boston Consulting Group [2]

  • Military: Including UAV, UGV, UUV and task robots widely used for military applications.
  • Industrial: Including applications for welding, assemble and material handling.
  • Commercial: Including applications such as medical and surgical robots, logistics, agricultural robots, maintenance and construction robots.
  • Personal: With applications as entertainment, cleaning, education and security robot.


The market of warehousing and logistics robotics

Tractica market intelligence firm forecasts that worldwide warehousing and logistics robot unit shipments will increase from 40,000 in 2016 to 620,000 units annually by 2021. The market intelligence firm estimates that global market revenue for the sector reached $1.9 billion in 2016, and anticipates that the market will continue to grow rapidly over the next several years, reaching a market value of $22.4 billion by the end of 2021. [3]

Source. Tractica [3]


IDTechEx research firm gives a different perspective on the growth of Warehousing and Logistics Robotics based on the investment on companies in this arena.

Source: IDTechEX [4]

This data shows the investment data for ground-based 25 start-ups focused on mobile robotics in warehouses/logistics.

Evidently, the interest has increased in recent years in mobile robotics targeting the warehouse/logistics area. Note that this figure excludes some major events: Does not count money spent internally by existing firms to launch such robots; Some start-ups are at seed stage with an undisclosed amount; it does not include acquisitions.

Some notable ones are Amazon's acquisition of Kiva for $775 in 2012, Omron's acquisition for Adept Mobile Robotics for $200m in 2016, and Uber's acquisition of Otto for $680m in 2016. Drone-based delivery robots are not included [4]

Forrester Research predicts a 10% year-on-year growth for online retail in Europe and the US. Online growth in Asia is even faster; for example by the year 2020 the online retail market in China is projected to be equal to that of France, Germany, Japan, the UK, and the US combined.

This growth directly affects the requirement for logistics labor since online retail typically needs more labor per item sold than traditional brick-and-mortar retail. This is because, instead of moving merchandise to a retail store in bulk, the organization must pick and pack online purchases individually by hand. Freight and parcel handling labor goes up as well since these goods must be shipped as separate parcels to be delivered directly to consumers' homes. Added to this, the average weight of these shipments is increasing as consumers can now order large items such as white goods, building supplies, and even furniture online. [6]

Another interesting perspective is from the end customers preference in the B2C market. 


Source: McKinsey&Company [5]

McKinsey&Company conducted a survey of more than 4,700 respondents in China, Germany, and the United States. They used conjoint analysis to better understand consumers’ relative preferences for different delivery options, including their willingness to pay. Nearly 25 percent of consumers were willing to pay significant premiums for the privilege of same-day or instant delivery. This share is likely to increase, given that younger consumers are more inclined (just over 30 percent) to choose same-day and instant delivery over regular delivery. [5]

Therefore, to reduce the delivery time, automation is key, both inside the warehouse and in the last mile.



Conclusions

Logistics Industry is facing a difficult moment, were competitors are innovating very fast to improve the throughput of their operations while reducing costs and delivery time. To do this, the digitalization of the Supply Chain is key, including not only the usage of automated systems and robotics, but the integration with good WMS (Warehouse Management Systems) and the definition of clear procedures and protocols to follow in operations, were manpower and robotics solutions should coexist in a colaborative way.

The market for automated solutions is growing very fast. There are good tchnical solutions ther, but the Logistics Management should be brave enough to leave the traditional methods and enter the world of Automation and Digitalization, investing on proper solutions for them.



Apendix

For more information on automation solutions for the warehousing inductry, visit my previous post about it

Here there are some companies and products compiting in the market of robotics and automation for logistics, just for your reference:



---
Reference

[1] Manoj Sahi. Research analyst from Tractica.
[2] Boston Consulting Group. The rise of the robotics. 2014
[3] SDC Executive. Warehousing and Logistics Robotics. 2017
[4] IDTechEX. Mobile warehouse and logistic robots. Oct. 2017
[5] McKinsey&Company. How customer demands are reshaping last-mile delivery. Oct. 2016
[6] DHL. Robotics in logistics. March 2016

Tuesday, February 20, 2018

Technical Debt. Help please!

The actual pace of life very often demands actions to have products in the market as soon as possible, asking many times for fast hardware and software developments, that not always are made for the long run, creating what is called a Technical Debt.

Just like a financial debt, a Technical Debt can be managed easily, or it could become a serious problem for a company. An improper implementation of software code may not be an issue by itself, but if this code becomes a core part of a system, and you start implementing other codes that depend on it, that’s when things start to go out of control. Upgrading / fixing small issues can become a nightmare when there is a huge Technical Debt.

Time developing (green) versus time solving technical debt effects (red)
source: Christiaan Verwijs

What could be the consequences?

Some of the consequences of having and not paying down the Technical Debt may be:

  • Eventually the cost to deliver functionality will become so slow that it is easy for a well-designed competitive product to overtake the badly-designed software/hardware in terms of features (see graph above).
  • Badly designed software/hardware can also lead to a more stressed engineering workforce, in turn leading higher staff dissatisfaction (which in turn affects costs and productivity when delivering features).
  • Additionally, due to the complexity in a given codebase, the ability to accurately estimate work will also be affected.
  • In cases where development agencies charge on a feature-to-feature basis, the profit margin for delivering code will eventually deteriorate.
  • and last but not least, poorly design product may fail in critical situations, producing service disruptions that may seriously affect the operations of a customer, the credibility in our products and company and even produce serious financial implications.


Why this happens?

There are many reasons why this happens, to name a few:

  • Inadequate or incomplete requirements. Very common situation, were the development starts before a clear definition of the deliverables expected by the customer or the product.
  • Lack of communication or understanding of the implication of the rush. Quite often the Technical Debt is originated by Business Management asking for solutions in extremely short timelines, not understanding the implications in terms of Technical Debt. Sometimes this is caused by an improper communication between Technical Management and Business Management, so Technical Management is not able to make Business Management understand the implications of accepting a Technical Debt.
  • Not willing to pay. Sometimes everyone understands the need to have some Technical Debt for having things 'ready' as soon as possible, but then there seems not to be 'time' to pay the Technical Debt, becoming an endemic problem. The longer that refactoring is delayed, and the more code is added, the bigger the debt.
  • Lack of proper Technical Management. This includes ensuring standards and procedures for development, adequate follow ups and measures of the Technical Debt accumulated, proposals of plans to pay the Technical Debt and prevent as much as possible it's growth. Ensure adequate training of people on usage of modern development tools, enforce documentation and knowledge sharing.


How to handle the Technical Debt

Here are some suggestions to handle the Technical Debt:

  • Alignment between business and technical concerns. Incurring Technical Debt allows to release quickly today at the cost of the slower delivery in the future. Therefore, the approach to technical debt should be clearly articulated and negotiated to balance business outcomes over the near and long term.
  • Making Technical Debt visible. It is helpful to use tools that make the quality of the software/hardware visible. To build this kind of micro-feedback loop, consider using editors that highlight coding standard violations, or tools that automatically run static code analysis and test code coverage.
  • Definition of 'Done'. Although it is an Agile Methodology term, it could be perfectly used by waterfall projects. The definition of done can help avoid and reduce Technical Debt. Elements like required code coverage and code review are examples of injecting the discipline, at a story level, needed to prevent Technical Debt.
  • Education and Mentoring. For the Business Management on the implications of Technical Debt and the value of Technical Debt reducing activities; for the Developers, on techniques to prevent Technical Debt.
  • Measure Technical Debt. Organizations that are serious about technical debt measure it, something that code/schema analysis tools help with, and more importantly keep an eye on the trends (which should be going down over time). You may choose to track code quality metrics, data quality metrics, usability metrics, time to address defects, time to add features, and many other things.
  • Regression test continuously. One of the easiest ways to find problems in your work is to have a comprehensive regression test suite that is run regularly. This test suite will help you detect when defects are injected into your code, enabling you to fix them, or back out the changes, right away.


Conclusion

Although we understand being in a Technical Debt is not ideal, sometimes is the only option to ensure quick results. In such cases make sure to keep track of the Technical Debt, and have proper plants to handle it. Otherwise sooner than later, the situation may become a nightmare that may affect the business success of the company.

Alejandro Alonso
automacomp.blogspot.com

--
Reference

  • 11 Strategies for Dealing With Technical Debt. Scott Ambler. http://www.disciplinedagiledelivery.com/technical-debt/
  • Using a "Technical Debt Register" in Scrum. Ian Mitchell. https://www.scrum.org/resources/blog/using-technical-debt-register-scrum
  • How to Resolve Technical Debt: Pay-off and Prevention with Agility. Don Clos. 2018. https://compuware.com/how-to-resolve-technical-debt-pay-off-and-prevention-with-agility/
  • How to deal with Technical Debt in Scrum. Christiaan Verwijs. https://blog.agilistic.nl/how-to-deal-with-technical-debt-in-scrum/
  • Project Management and Technical Debt. Agile Alliance. https://www.agilealliance.org/project-management-and-technical-debt/
  • Technical debt. Wikipedia. https://en.m.wikipedia.org/wiki/Technical_debt
  • Introduction to the Technical Debt Concept.  Agile Alliance. https://www.agilealliance.org/introduction-to-the-technical-debt-concept/
  • Technical Debt. Technopedia. https://www.techopedia.com/definition/27913/technical-debt
  • Technical Debt Explanation and Examples. Maximum Int. http://www.maximumint.com/technical-debt-explanation-examples/
  • Static Code Analysis. OWASP. https://www.owasp.org/index.php/Static_Code_Analysis
  • Code Coverage. Wikipedia. https://en.wikipedia.org/wiki/Code_coverage
  • Regresion Testing. Wikipedia. https://en.wikipedia.org/wiki/Regression_testing