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.


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


  • 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

Sunday, June 4, 2017

ICRA 2017 Singapore

ICRA, the IEEE International Conference on Robotics and Automation, is an annual academic conference covering advances in robotics. It is one of the premier conferences in its field. This year I was invited to attend to its 2017 edition in Singapore.
Francesco Ferro (Pal Robotics CEO)
and  Alejandro Alonso (IR CTO)

With a superb organization and a beautiful location, the event included conferences of leading researchers and companies from all around the world, as well as workshops and exhibitors area. This last was where I spent most of my time, as I love the direct interaction with the companies and research centres. Also, in this kind of academic events, compared to trade fairs, you usually have the chance to directly find very technical people, able to explain you in very deep all the ins and outs of their products. 

Really, the robotics community is not so big yet, so we know each other. Therefore I had the pleasure to meet some good friends from companies like Infinium Robotics, PAL Robotics and Fetch Robotics between others.

Infinium Robotics is the company in Singapore where I work as CTO. I already wrote about this great company in one of my previous posts: "Infinium Robotics. Flying Robots".

PAL Robotics is a company in Spain well known for having developed some of the best humanoid robots in the world. I have very good relationship with this companies team since more than ten years ago. Great people, well motivated, well managed, that has been able to look out of the box and enter with bravery in the world of the robotics warehouse solutions, with robots like Tiago (seen in the previous picture) or StockBot.

Junyang Woon (CEO IR), Melonee Wise (CEO Fetch)
and Alejandro Alonso (CTO IR/Hisparob VP)
Fetch Robotics is also one of the big players in the robotics solutions for warehousing industry, 

But I met many other very interesting people and had amazing chats with people from companies so key in this field as Amazon RoboticsDJI or Clearpath Robotics, At the end of this post there is a full list of exhibiting companies.

I saw very interesting technology, like the reabilitation exoeskeletons from Fourier Intelligence (Shanghai), the Spidar-G 6DOF Haptic interface from Tokio Institute of Technology, the Haptic systems of Force Dimension and Moog, the dextrous manipulators of Kinova, Kuka, ABB, ITRI, the modular robot components of Hebi Robotics, Keyi Technology, the ·D motion capture technologies of Phoenix Technologies and Optitrack, the educational solutions of Ubitech, GT Robot or Robotis and many, many others, most of them ROS enabled. 

As I usually try to do in these sort of events, I recorded a "home made" video of the exhibition area to give you all a slight idea on technologies shown there.

ICRA 2017 Exhibitors verview

And last but not least, I want to thank my friends from SIAA (Singapore International Automation Association) for their always kind friendship and support. They organized also the Singapore Pavilion in this event. 

Ms LIM Sue Yin, Civic Seh (both SIAA) and
 Alejandro Alonso (IR/Hisparob VP)

List of exhibitors:

Thursday, April 27, 2017

Unmanned Systems Asia 2017

A few days ago (April 2017) I visited Unmanned Systems Asia 2017, an event organized by Experia in the Changi Exhibition Centre of Singapore. This year the event was mainly focused on drones, although it was possible to see a few other non-flying unmanned systems.

I made a very "home made" non-professional video of the event, just to give you all a general idea on what some companies and institutions where exhibiting there.

If you could not see the video clic here: https://youtu.be/pAlHVwIoyS8

Although I am sorry to say I found the event a bit limited on the number of exhibitors, I found some interesting players anyway:

EWATT Technology, a Chinesse company that produce fixed-wing and rotary-wing systems, showed their big drones, mainly for industrial and security purpose. The company employs more than 300 people, including more than 80 R&D and technical support engineers in Chinese HQ, and two R&D centers located in Italy. EWATT has filed over 500 patents related to UAV embedded technologies in China, with a large number already approved The company showed a coaxial octocopter (EWZ-S8), but is also working on a gas-powered variable-pitch quadcopter (EWZ-110) with an expected endurance of 2h and 20kg payload.

ST Engineering (Singapore Technologies Engineering Ltd), an integrated engineering group providing solutions and services in the aerospace, electronics, land systems and marine sectors, ranks among the largest companies listed on the Singapore Exchange, and is one of Asia’s largest defence and engineering groups. Between the companies that form such group are: ST Kinetics, ST Dynamics, ST Aerospace, ST Marine and ST Electronics. Therefore they showed solutions from the different companies of the group. ST Aerospace showed their U-Star X quatrotor, specially
designed for urban and open terrain applications. and U-Star Y coaxial hexacopter. ST Dynamics showed their Autonomous Multi-Robot Exploration of Unknown Environments solution, based on a set of four-wheeled robots (Husky A200 developed by the Canadian company Clearpath Robotics), The solution is able to create a collaborative 3D map in real time, using 3D laser scanners and GNSS systems among others. They expect to have the solution ready for first trials within one year.

Lockheed Martin is one of the largest companies in the aerospace, defense, security, and technologies industry. This company offers a set of unmanned systems for underwater, air and land. In this event they showed their Indago quadrotor unmanned aerial system and also presented their recently launched Hydra Fusion, a photogrammetry software able to produce 3D maps in real time using a standard laptop.

Elbit Systems is an Israel-based international defense electronics company with more than 12.000 employees, engaged in a wide range of programs throughout the world. The company, operates in the areas of aerospace, land and naval systems, command, control, communications, computers, intelligence surveillance and reconnaissance ("C4ISR"), unmanned aircraft systems ("UAS"), advanced electro-optics, electro-optic space systems, EW suites, signal intelligence ("SIGINT") systems, data links and communications systems and radios. They showed some small unmanned aerial systems, including their well known Da-Vinci multirotor.

Let's see if for next year we could get some other players I missed, like... yeah, I think I will keep those names for myself ;-) 

Saturday, April 15, 2017

IOT Asia 2017

A few weeks ago I had the opportunity to be in IOT Asia 2017 (The International Exhibition & Conference on Internet of Things), held in Singapore Expo.

This year they covered may areas related to IOT: Smart Cities, wearables, industrial IOT, design applications, enablers, IoT Data Analytics, Cybersecurity and Robotics. With more than 70 speakers sharing different points of views about the present and future of IOT. I also was invited to give a lecture about the robotics in Spain and how through HISPAROB we are connecting Asia and Spain in the robotics area.

Alejandro Alonso Speaking at IOT Asia 2017

Also I was invited by SIAA and SingEx organization to be part of the panel of judges of the IOT Trailblazer Award, were G-Element won a well-deserved award for their product Nucleus, a 3D unified management system that interposes the real-time data avalanche of sensor networks with 3D building information to provide comprehensive situation awareness to premise managers. Also, Ambi Labs won a well-deserved award for their AmbiClimate indoor climate control applying Artificial Intelligence techniques. The awards were given by Dr. Vivian Balakrishnan, Minister for Foreign Affairs/Minister-in-Charge of the Smart Nation initiative.

In summary, IOT Asia 2017 was an interesting event, not only for the exhibition part, were we found innovative solutions, but also for the conferences, awards, and ambiance. My congratulations to the organization.

Friday, March 31, 2017

Interview for Robo Asia

One of the hats I wear is VicePresident of HISPAROB, a Professional Robotics Association from Spain. Recently I was interviewed by RoboAsia, the most important Robotics Magazine in Asia, about the connections we are establishing between Spain and Asia. Here you could find the interview:

What is your main role in HISPAROB? 

HISPAROB is the leading non profit Professional Robotics and Automation Association in Spain, with more than 60 members between companies, research centres and universities.
My main role as Vice President, living in Singapore is to represent the interests of these companies, research centres and universities in Asia, either as exporters or importers of technology, as well as facilitating them for potential collaborations and joint ventures with Asian companies.

What potentials do you see in Asia robotics industry?

Asia is where things are really happening nowadays in terms of robotics and automation. Huge manufacturing industries, enormous population, extensive need for automation. The big investors have their eyes on Asia. Loads of very creative companies are building innovative solutions, in an ecosystem were governments are investing great amounts of money to improve and automate operations. Japan announced recently the “Japan’s Robot Strategy”, to help the country adopt robotics solutions for elderly, disabled people, and production between others. South Korea has also announced recently a plan to invest 426$ million in the drones industry. Asia as a whole is really taking the lead in the automation and robotics sector.

What difficulties did Spanish Robotics companies encountered when they expand their business in Asia?

One of the main difficulties is the cultural difference and language. Although Singapore is a very open country to western relationships, China or Japan may be more difficult for western countries including Spain. The bureaucracy, the lack of people speaking English, and the sort of business relationships, more based on traditions and personal relationships are sometimes difficult to understand for Western countries in general.
Also with China there have been cases of infringement of foreign patents.
In terms of human resources, while western employees tend to delegate responsibility and have flexible lines of authority, Chinese workers are used to a more hierarchical structure with clearly defined roles. These differences may lead to tensions between western managers who prefer employees who take their own initiative, and Chinese staff who have been trained from a young age to always follow instructions from the managers.

How would you overcome these difficulties?

My goal is to help both sides, Spain and Asia, to connect. In order to do this efficiently I need to keep a deep respect and understanding to the local cultures and traditions of each country. Try to find the possible synergies between the companies, research centres and universities and help them as a facilitator, as well as in any additional consulting needs they may require from the technical point of view. 
Singapore is a great country to live for this purpose, due to its location, its multicultural and multilingual environment, the extremely low level of corruption (one of the lowest in the entire world), the security and the facility to travel throughout all Asia.

What are the benefits entitled to companies who join HISPAROB?

Although HISPAROB only accept Spanish companies and institutions as members, there is no impediment for Asian Companies to have professional relationships with Spanish companies through HISPAROB. On the contrary, this is what we are looking for. 
For Spanish companies and institutions, joining HISPAROB helps them to access the services to a synergistic professional network, with facilities to participate in national and international events. 

What are the current plans that you have to expand/build up HISPAROB?

At this moment we are opening relationships not only with Singapore as a gate to Asia, but also with UK through the British Embassy.

Past November I had the pleasure to represent HISPAROB, in the signing ceremony of a Memorandum Of Understanding (MOU) between HISPAROB and SIAA (Singapore Industrial Automation Association). The event took place in the Singapore International Robot Expo (SIRE).

Singapore Industrial Automation Association, SIAA is the leading hub for Automation, IOT and Robotics technologies, solutions & applications in Singapore. It also serves as a business catalyst in the APAC region.

The MOU signing is the starting point for a mutual collaboration focused on finding synergistic relationships between both countries. 

How do you think robots will impact the economy? 

Early 2016 Foxconn, the largest contract electronics manufacturer in the world, said it automated away 60,000 jobs in one of its factories, as part of an ongoing process to replace humans operations with robots. 

The massive usage of industrial and collaborative robots and automated systems will increase productivity and quality, replacing human force to some extent. A report, conducted by Deloitte and Oxford University, predict as many as 35% of jobs will be automated over the next two decades. It is not clear at this moment if this means an increase in unemployment or an increase in employment. IFR (International Federation of Robotics) and CE (European Commission) have analyzed the correlation between robotics adoption and unemployment based on the automobile industry sector in USA and found that although 80.000 new robots were installed between 2010 and 2015, 230.000 new jobs were created. The case of Germany is similar, with 13.000 new robots in the same period and 93.000 new employments.

Governments are investing a lot of money in the adoption of robotics and automation in the industry, but an important consideration should be to invest in the training and relocation of the replaced workers as well as on the acceptance, adoption and learning of the people, from the early education stages.

How would you predict robotics industry in next five years? 

Five years is nothing, at the same time it is a lot of time in terms of technology advances.  Five years ago almost we didn't see drones around and now there are really big players like DJI, competing very hard for the market.  Companies like 3DRobotics or GoPro are suffering seriously this tough "Drones war". Although drones per se are not robots, I predict they will become smarter and fully automated for several applications, being real decision taking flying robots. In the same way autonomous vehicles as cars, buses or trucks will start being used widely as is happening with Tesla and other. In the industrial field, collaborative robots will be the usual partners of workers in factories. 
Also, I foresee a continuous growth of other technologies that will benefit robotics, like cloud computing, big data, smart analytics, IOT, communications as well as smarter and more efficient human-machine interfaces and haptic systems.

Wednesday, March 29, 2017

Rapid prototyping is key to manufacturing success

You want to have a product in the market. You think it will really be successful and will work superb, but how could I produce it?

Well, there are lots of steps to follow in terms of market research, business plans, resources, funding, and so on. You could get a good idea on how to cover all that in my previous post: What is the key to get the successful product?

But let us see quickly here some steps to follow if your product has physical parts.

First draft design

Everything starts with a design, but I would recommend starting with a first draft design, not going to all final details. The reason is because it is good to have a quick prototype as soon as possible, to learn from it and get a better experience of the product, that may alter our design.

Build the first prototype

We need to have a first "quick & cheap" prototype as soon as possible. This prototype may be made of cardboard, wood, plastic, or any other material. 3D printers are really useful for that purpose. The idea is to get a physical 3D feeling from our senses. Touch it, see its aspect, form from different view angles, if it fits wherever it should, and in general the feel we get, and the potential production issues we may face.

Update design and Build prototype cycle

As a result of the previous step, we could go more in deep on the design details and subsequent prototype production. This cycle may repeat until we get a product that has the aesthetic design we want, the functionality it should have and the feel you want to get from it.

There are so many techniques nowadays to produce prototypes. Depending on the size of your company and product development department you may have only a FDM 3D printer or a more complete equipment. If you do not have the equipment, there are tons of companies offering prototyping services. Some of the machines and processes you may use are the following:
  • Additive manufacturing: This technique helps us produce pieces by adding material, that may be almost of any kind. Between these techniques, they are: (a) FDM (Fused deposition Modeling) that is the typical 3D printer using some sort of plastic, (b) Polyjet printing, that uses resin layers and cure using UV light. We could get even transparent pieces, (c) SLA (Stereolithography), that uses liquid resin and you could get very nice prototypes, (d) SLS (Selective Laser Sintering), that produce nylon and other materials layers by fusing nylon powder by a laser beam. Usually, it has a granulated surface like sugar and does not require adding supporting material, (e) DMLS (Direct metal laser sintering). This technique is very similar to the previous one, but using different sorts of metals and alloys, getting strong, fully functional pieces.
  • Subtractive manufacturing: This technique helps to produce pieces from blocks, by taking out material, like a sculptor. There are mainly CNC machines (mill and lathe) able to automatically build the piece from the design.
  • Injection molding: This is a very traditional technique, where you have a mold made typically out of resin, aluminum or steel, depending on the amount and type of pieces to produce by the injection of different materials in liquid form (usually fused)
  • Other: There are other combinations of techniques that may require using industrial robotic arms, bending machines, cutting machines (Plasma, Oxy fuel, Waterjet, Laser Cutting,...)

Final production

In summary what is done typically is to start producing the prototype by using FDM 3D printing technology (quick & cheap), test the size and look, refine the design, make better prototype until we get something apparently correct, go to injection molding using resin molds (cheap) and do functional testings. After it is ok, go to aluminum injection molding and produce few units for final testings and correct production issues. in fact, you could use the aluminum mold for the production of several hundreds even few thousands of units, depending on the material injected. Then go to still molds (expensive) for a full-scale production of millions of units (if needed)

I hope this helps to have a general idea of the process. Happy prototyping!

Wednesday, February 22, 2017

Requirements please!

I have seen it many times: One company hires another to do a project, after a while, they end up in court because the contracting party does not want to pay the contractor, arguing they didn't receive what expected, while the contractor say they did as agreed. Most of the times requirements are not adequately written, giving each company the freedom to create their own expectations, that may not match.

But, why this happens so frequently? There are a lot of factors that may make this happening. The most common are the following:

  • One of the parties is not interested in having clear requirements because they think this gives them the capacity to change things during the project or avoid specific compromises, as there is no written document.
  • The contracting party is not able to clearly define what they want or what they could expect.
  • There is no clear communication between parties, so each party has its own set of expectations taken for granted that may not match the expectations of the other party.
  • There is no adequate knowledge or compromise to do adequate requirements.

The reality is that having poor or no requirements are very bad practice for both parties. Both will end up losing money, time, credibility, or opportunities.

If you are developing a product or service for the market is the same story. Good requirements will help to make a good product or service, not losing track of what you are offering to the market.

Source: http://www.projectcartoon.com/
Requirements Engineering is one of the processes of Systems Engineering, that is focused on defining, documenting and maintaining requirements. In the Waterfall Model, requirements engineering is presented as the first phase of the development process while Agile Methodologies, like Scrum, assume that requirements engineering continues through the lifetime of a system.

Basically, a requirement is a singular documented physical and functional need that a particular design, product or process must be able to perform. The systems engineer needs to carefully elicit requirements from users and stakeholders to ensure the product will meet their needs.

Fortunately, Requirements Engineering is a well standardized process by the International Organization for Standardization, under the standard ISO/IEC/IEEE 29148 Systems and software engineering - Life cycle processes - Requirements engineering.

It is crucial to ensure the requirements are correctly defined and here I will mention some key characteristics of good requirements from INCOSE (International Council on Systems Engineering) [1]

  • Necessary: State only what is determined to be necessary for achieving the client’s mission within regulatory constraints. These statements are derived through analytical means to the depth necessary for design, procurement, implementation and verification.
  • Clear: Convey what must be achieved in a manner that can be understood by those who are expected to implement the requirement, without having to ask the author what was meant.
  • Achievable: Confirm with the implementer that the requirement can be affordably achieved either by previously developed means, or within a reasonable period of development.
  • Traceable: Ensure derived requirements can be traced to a user need or a higher-level specification, and to a supporting analytical basis. Derived requirements need to also trace to the implementing item.
  • Verifiable: Requirements must be stated in a manner that compliance can be objectively confirmed. Typical methods of confirmation include analysis, inspection, demonstration and test.
  • Complete: A set of requirements needs to be complete, such that if all are met then the resulting system will successfully achieve the client’s need for the system. In addition, the needs of other stakeholders will be addressed to the agreed extent, and the regulations will be met.
  • Implementation Free: State what is required and how well it needs to be done without bias for how it will be done. The design team should be allowed to choose the best means of accomplishing the requirements. This helps to provide stable requirements and to control cost.

Requirements Engineering is not an easy task, but crucial. Is the origin of a lot of work and investments. It could be key for successful results or a terrible disaster. Let us pay the adequate attention to this process.

[1] Managing Requirements for Design. INCOSE Infrastructure Working Group
[3] Wikipedia