Friday, March 9, 2018

Status Quo of #Blockchain

Not even 10 years after an unknown person or group of people under the name Satoshi Nakamoto invented Bitcoin, the first cryptocurrency in the world, the technology underpinning Nakamoto's creation is everywhere, promising to change the world as we know it. 

That technology is called blockchain, and Bitcoin uses this innovative ledger to record transactions that happen on its peer-to-peer, decentralized network. But financial record-keeping is not blockchain’s only forte. What makes blockchain special is its ability to ensure immutability without any trusted authority.

This key property of blockchain technology makes it suitable for a number of different applications, the most promising of which we explore in this article. But before we get to how blockchain technology could lead to the global disruption of established institutions and entire industries, we find it appropriate to take a closer look at blockchain's present state.

Blockchain has come a long way

Mike Gault, the CEO of Estonia's technology vendor Guardtime, defines blockchain as "an append-only data structure that contains data records that are cryptographically linked together." According to Gault's definition, "Data records are added to the data structure when multiple distributed parties come to a consensus based on pre-agreed rules." Gault has provided this definition in response to the rapidly growing number projects that are developing blockchain-based solutions that widely differ from the blockchain Satoshi Nakamoto created for his disruptive cryptocurrency.

Bitcoin as well as Ethereum, the most popular blockchain-based computing platform in the world, allow for the creation of the so-called Decentralized Applications, or DApps for short. At the time of writing this article, there are almost 1,100 DApps listed on the State of the DApps website. Confusingly enough, Bitcoin, Ethereum, and other altcoins, which are alternative cryptocurrencies launched after the success of Bitcoin, are also DApps because their backend code runs on a decentralized peer-to-peer network.

For example, Augur, one of the most popular Ethereum-based DApps, is using a blockchain-based betting system and the knowledge of the masses to create a forecasting tool capable of accurately predicting the outcomes of real-world events. 
What Augur and many other DApps illustrate is just how incredibly far blockchain technology has come in less than a decade since it first gained traction. Today, there are several large blockchain enterprise alliances, including Enterprise Ethereum Alliance and its 250+ members, Hyperledger, and R3, and annual revenue for the enterprise blockchain market is expected to increase from approximately 2.5bn USD worldwide in 2016 to 19.9bn USD by 2025, with a CAGR of 26.2%, according to the State of Blockchain report from Coinbase

Non-Crypto applications of Blockchain technology

While cryptocurrencies, and their wild price fluctuations, are still the main reason why blockchain technology makes headlines, non-crypto applications of blockchain technology make futurologists excited the most. 

Contract Negotiation 

Blockchain technology allows for the execution of smart contracts, which are computer programs intended to digitally facilitate, verify, or enforce the negotiation or performance of a contract. Smart contracts were coined by computer scientist Nick Szabo before Satoshi Nakamoto created Bitcoin. Many experts expect smart contracts to replace traditional paper contracts, naming complete immutability and enhanced transparency as two biggest advantages of this nascent technology.

Because smart contracts are programmable and self-executing, they can be triggered automatically when a set of preconditions are met. For example, a smart contract between a customer and an e-commerce store could replace a third-party escrow service.

Supply Chain Management 

Blockchain could be a game-changer for supply chain management as traceability and transparency are among the most important foundations of logistics. "Blockchain offers a shared ledger that is updated and validated in real time with each network participant. It enables equal visibility of activities and reveals where an asset is at any point in time, who owns it and what condition it's in", IBM explains some of the benefits of supply chain management with blockchain.

The pharmaceutical industry has been struggling to secure its supply chain and prevent fake drugs from entering the market for a long time, and it is now starting to see blockchain technology as a potential solution to its problems. Pistoia Alliance survey revealed that 83% of the leaders in life sciences think that blockchain will be adopted as a data housing solution in the next 5 years and 22% of life science companies are already using or experimenting with blockchain.

Record Keeping 

Because blockchain is essentially a distributed database, it can be used for all kinds of record keeping. In 2017 Dubai's land registrar has revealed it is developing a system that would seek to record all local real estate contracts on a blockchain, according to Coindesk. Dubai's aim is to unite all real estate and department services on a single blockchain-based platform and achieve this goal by the year 2020.

Dubai hopes that the move to blockchain will save the city money in the long run as an average person will move to a new location nearly 12 times in their lifetime, and each move is not legally possible without someone pulling information from the system and putting new information in. Blockchain would open Dubai's real estate market to investors around the world, giving them a way how to verify property data. It would also connect renters with landlords and property-related billers.

Another form of record-keeping to which blockchain technology can be applied is the management of digital identities, including passports, birth certificates, wedding certificates, personal IDs, and even online accounts.

Cloud Storage

Right now, virtually all cloud storage services are centralized, which means that the users must place their trust in a single cloud storage provider. Blockchain could disrupt the existing cloud storage model and usher in an era of decentralized cloud storage services with enhanced security and guaranteed ownership of personal data.

One such cloud storage service, Storj, is currently preparing for launch, promising 99.99999% availability, fully distributed infrastructure, end-to-end encryption, and extremely low prices per GB of stored data.

Digital Voting

"Many states use voting machines that are over 10 years old that are not only antiquated and failing, they are also becoming increasingly expensive to maintain as parts are no longer manufactured. Election fraud undermines the very fabric of democracy" stated Blockchain Technologies Corp, a company that wants to replace existing voting machines with blockchain-based voting systems.

Estonia has already implemented a unique e-voting platform that uses blockchain technology to guarantee flawless availability, transparency, and an unprecedented level of fraud protection. Many other countries around the world are currently considering implementing systems based on the one used by the government of Estonia.

Potential roadblocks to the wider adoption of Blockchain

Blockchain technology will be able to fully realize its potential only if it overcomes the most serious roadblocks to its wider adoption.


The soon-to-be-implemented General Data Protection Regulation (GDPR) by which the European Parliament, the Council of the European Union, and the European Commission intend to harmonize data privacy laws across Europe, to protect and empower all EU citizens data privacy, and to reshape the way organizations across the region approach data privacy  is one such roadblock.

The GDPR stands in the way of wider blockchain adoption for two main reasons: because of the fact that personal data is not to leave the EU, and because it demands that user's personal data is rectified or deleted under many circumstances.

According to Jan Philipp Albrecht, the member of the European Parliament who shepherded the regulation, the GDPR "is agnostic about which specific technology is used for the processing, but it introduces a mandatory obligation for data controllers to apply the principle of data protection by design. This means, for example, that the data subject’s rights can be easily exercised, including the right to deletion of data when it is no longer needed."

Considering that immutability is a key characteristic of blockchain technology, to say that it does not mix well with the GDPR would be an understatement. "Certain technologies will not be compatible with the GDPR" said Albrecht. "This does not mean that blockchain technology, in general, has to adapt to the GDPR, it just means that it probably cannot be used for the processing of personal data."


In its present form, blockchain technology is severely limited by its insufficient scalability. Visa is known to handle around 2,000 transactions per second on average and up to 4,000 transactions per second during high shopping periods. The total capacity of the entire Visa network is expected to be over 50,000 transactions per second.

PayPal handles considerably fewer transactions every second, over 100, but that is still a lot compared to the maximum number of transactions per second of Ethereum: only 15. With the current consensus rules, Bitcoin can only process around 7 transactions every second.

"The Ethereum community, key developers and researchers and others have always recognized scalability as perhaps the single most important key technical challenge that needs to be solved in order for blockchain applications to reach mass adoption" writes Vitalik Buterin, the mastermind behind Ethereum. "Blockchain scalability is difficult primarily because a typical blockchain design requires every node in the network to process every transaction, which limits the transaction processing capacity of the entire system to the capacity of a single node."


Blockchain technology is evolving rapidly, and there have already been a number of practical applications, with considerably more  currently being in various stages of development. If blockchain developers succeed in overcoming the most serious roadblocks to its wider adoption, blockchain could become one of the most transformative technologies of the 21st century - if not the most transformative. 


Tuesday, February 13, 2018

Secrets to Successful Team Management

Behind every strong company are strong teams. And behind every strong team is a capable team manager who directs the team's focus and knows how to create an environment that allows individual team members to perform at their peak potential.

The focus of this article are the numerous techniques used by successful team managers to help their team grow and overcome even the most difficult challenges. When applied correctly, the techniques and strategies described in this article can have a significant positive effect on a company’s bottom line, productivity, and culture. 

Start with the Right Mindset

Many team managers start on the wrong foot by approaching their team with a wrong mindset. Especially when managing software developers, team managers must realize and keep in mind that they are responsible for highly intelligent, talented individuals with an abundance of creativity and excellent problem-solving skills. 

This fact is a common source of problems for inexperienced team managers, who tend to clash with opinionated team members over trifling issues. In contrast, experience team managers take full advantage of the aptitude of their team by maintaining an open mind and supporting the team’s technical decisions by not enforcing strict requirements. 

As we will explain in the following chapters, the right mindset of a team manager is actually the mindset of a leader. Unlike a manager, whose primary quality is the ability to control or administer, leader empowers and inspires. 

"A leader is at his best when people barely know he exists, when the work is done, the team will say: we did it ourselves. This is because the leader has empowered the team so much and they have become so competent that they are mini-leaders themselves, thus the leader is leading without actually leading them. This must be the highest form of leadership. Lead without leading", paraphrases the Chief Trainer Coach at Asia Coaching Training, Andy Ng, the ancient Chinese military strategist Sun Tzu. 

Provide a Strong Vision Statement

A strong vision statement is a critical component of any great strategic plan. Often confused with a mission statement, which explains why a company exists, a vision statement paints a picture of where a company is going. As such, a vision statement succinctly and clearly articulates an inspiring vision of a future which team members, as well as all stakeholders and even customers, can identify with at the emotional level. 

A strong vision statement is like a powerful inspirational speech, except that it is typically just a few words long. Some of the most powerful vision statements ever conceived talk about a distant yet reachable future. They are also direct, descriptive, and often audacious. They do not talk about revenue projections, shareholders, nor competition. Instead, they envision a common benefit whose importance is immediately clear to everyone regardless of their affiliation with the company the statement represents. 

Experienced and successful team managers understand the power of a strong vision statement to realize the full potential of their team, and they use it to their advantage. We can draw on years’ worth of scientific research in the field of management to illustrate just how effective of a tool a vision statement can be. For example, a 2014 report from TINYpulse surveyed over 500 organizations worldwide and analyzed more than 200,000 anonymous employee responses to answer a simple question: what motivates employees to go the extra mile? 

Perhaps surprisingly, the number one influence in encouraging employees to outperform expectations was camaraderie, the spirit of friendly good-fellowship associated with soldiers, who fight united to overcome seemingly insurmountable obstacles. Furthermore, nearly two-thirds of all employees felt discouraged by the lack of a strong company culture, which is to say by the lack of a strong vision that would motivate employees to strive for excellence.

A team manager must be trained to recognize that their team lacks a purpose and come up with a strong vision statement to provide it. 

Set Constraints

Once team members have a purpose, they need a plan. "This plan, designed by managers, should be set before the actual work begins. Managers should continuously encourage every developer to stick to the established plan", writes CEO & President of UM Technologies and its partner companies Scott Stiner.

In software development, agile provides a proven and tested time-boxed approach based on iterative development, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams, as described by the Agile Alliance. In other words, agile sets constraints as to what gets built in a given time frame and ensures that everyone focuses only on the plan ahead. 

Again, the work of a team manager does not end after a plan has been designed- far from it. A team manager should act as a filter against outside noise. We say "filter" on purpose because a good team manager knows which information they should allow to reach the team and which they should block before it distracts everyone for no good reason.

A team manager's job is to allow their team to be as productive as possible. That means handling non-development work so that everyone else on the team does not have to worry about it. "For example, if managers are coders, they can assist in writing tests to make it easier for developers to continue with their assigned tasks", Stiner explains. 

Foster Healthy Relationships

Each team member should feel that the team manager has his or her back - not that the manager is on his or her back. "Most projects fail because of people, not technology. You are managing a team of people. Humans. Humans are weird, complex creatures", Peter Kelly provides a perspective of a seasoned software engineer with over 15 years of experience under his belt. "Hiring, nurturing, coaching, maintaining and organizing a team of humans and managing that team to success on projects is the main job of a software manager."

All team managers will do themselves and their employees a huge favor if they build relationships based on transparency and trust rather than controlling and reporting. Active listening and proactive communication are two foundational prerequisites for building this kind of relationship. It is easy to fall into the trap of simply walking around the office and asking individual team members how they are doing, but such effort is futile if not supported by genuine desire to establish respectful bonds.

This brings us back to where we started: the importance of having the right mindset. It is impossible for any team manager to foster healthy relationships with team members unless the manager trusts the team members to do their jobs. As Ilja Preuß, a software developer at Disy Informationssysteme GmbH, suggests, "Find out what the developers like to do and find a way to let them do it so that it benefits the company. The most motivated people are those who do what they like doing."

When team members see that the team manager believes in them and goes above and beyond trying to remove every obstacle to allow them to focus on their work, they are much more likely to support the team manager's decisions when the going gets tough, which can be the difference between a team that sticks together and surmounts even the most difficult of challenges and a team that crumbles under the pressure of a deadline, unforeseen complications, or some last-minute change request.

In fact, a study from Office Team examining the impact of appreciation, or lack thereof, in the workplace found that 66 percent of employees would "likely leave their job because they didn’t feel appreciated" and the number jumped to 76 percent among millennials, who are generally known for placing a higher value on healthy company relationships than previous generations. 

The ability to show genuine appreciation and naturally communicate on a personal level is where the difference between average and exceptional team managers shows the most. Exceptional team managers have an innate understanding of the fact that team members who feel respected and valued work harder. They are not only able to praise and recognize a fruitful effort, but they also feel the need to do so because they understand that the recognition of efforts is one of the most important functions of a manager. 

"Think of leadership like computer programming. Dedicate some time to the backend to create a strong team and set them up for success. Come launch time, just step back and admire as they thrive. As a leader, you will know you have successfully built a strong team when they work effortlessly without you. The icing on the cake? Although they don’t rely on you to function, they still want you there", Marketing Strategist Taunya Williams summarizes what the role of team manager should be about. 


The role of team manager requires a broad range of personal competencies, not all of which can be easily acquired from books or experience. The best team managers give their team members a sense of feeling that they are strongly supported, valued, and trusted. They motivate by creating a strong vision statement behind which everyone can rally, and they help their team maintain focus on what really matters by filtering out what does not matter. Perhaps above all, excellent team managers foster healthy relationships with individual team members and understand the value of making someone feel appreciated. 


Saturday, January 20, 2018

How can DevOps contribute to Digital Transformation and Innovation?

When we talk about Digital Transformation, we soon think of innovation, technology, e-commerce, social networks, mobility, among others, as well as transforming something that was physical into digital, such as banking services, which were previously offered through physical banking agencies and are now available through internet banking, bringing all the convenience to the end user with high availability and without restriction of time or space.

However, for a company to transform digitally and innovate, we must develop and make available new services and products that generate value for the business and that allow the user a rewarding experience in the use of these services or products. It is necessary to go beyond simply providing an e-commerce or an app on Google Play and the App Store. A cultural change is essential.

In this article we will discuss the importance of DevOps to help companies in the digital transformation and innovation. Agility in deliveries is essential in this transformation process. But before we go there, we will take a look some basic concepts that are behind DevOps.

What exactly is DevOps?

DevOps is the result of a join between Development and Operations. According to the precepts of this term, those responsible for creating or improving software should act in an integrated manner with the professionals who maintain the applications on a daily basis and also with the IT infrastructure that supports those systems. DevOps proposes, therefore, the union between creation and maintenance of IT solutions in order to create a process of continuous improvement.

In a way, this concept opposes the traditional way of development, which is the delivery of large program releases after a long development process. In this scenario, it was the job of technicians to simply deploy software according to the needs of the customer and keep it working. The software only advanced when a new version was developed and released.

In DevOps, Development teams and IT infrastructure managers work in constant communication to improve services over very short periods of time. In this way, errors are promptly analyzed and corrected and improvements can be incorporated into the solution much quicker than before. 

Benefits of Using DevOps for Businesses

For how projects are conducted in companies, DevOps brings benefits of time optimization and effort by proposing smaller development cycles, collaborative work, and breaking paradigms between the areas involved. In addition, it always aims to generate revenue and avoid unnecessary costs.

Working with DevOps also brings benefits such as integration with trends such as Cloud Computing (including hybrid clouds), PaaS, SaaS and IaaS, which together reduce operating costs considerably and make maintenance much easier. The development is completely focused on the effective challenges of the client, implementing and delivering solutions  almost immediately.

Automation tools and dashboards help more easily track metrics and results, provide means of automated deployment processes and quality assurance tasks.

DevOps facilitates teamwork and communication across previously strongly seperated departments of the organization, aiding your team building efforts and reducing silos. It manages to raise the quality of collaborative work and helps teams become more receptive to cultural change and see value in this measure.

All this helps the company to meet processes and demands with greater excellence, supported by the use of automation tools and results. In the end, always focusing on a promising cultural change to positively transform the way the company does business.

How to make DevOps work?

Making DevOps work effectively in IT requires some profound changes. First, it is necessary to integrate areas that, until recently, were considered as very distant: development and operations. To put these professionals side by side, one must work on aligning processes, policies and protocols, ensuring that integration is organic. It is also necessary to invest in resource automation and standardization of responses, ensuring that solutions follow an agile and predictable flow, bringing concrete results.

The agility resulting from automation and process standardization is reflected in the reduction of repetitive tasks by IT professionals - both Development and Infrastructure. With this, the employees are released to work in more creative activities, with greater potential for innovation.

DevOps, Innovation and Digital Transformation

Have you noticed that DevOps will help development teams and operations deliver software in a more agile and less bureaucratic way?

Now going back to the main topic of the article, how will this aid in the process of innovation and digital transformation?

It is not enough for the company to digitize its front office and keep its back office bureaucratic and slow in responding to market needs and/or poor after-sales service or the lack of skill and speed in solving problems that are demanded by the business, users and customers.

The focus should be on the clients and how to meet their needs, solve their problems effectively, efficiently, simply and innovatively. This takes into account the entire lifecycle of the service or product, that is, from its design to the user experience. It is essential that companies work to establish a trust bond among their customers: to really know how to listen to it and respond to its problems with quality and safety.

The processes that involve DevOps can contribute to the generation of innovation and also to the digital transformation in companies. This is because, at the same time, it focuses on process automation that touches the software development lifecycle, contributing to the digitization of previously manual activities such as validation of software code quality, testing, and software releases, this model also increases the level of quality and security of the applications.

With the implementation of DevOps, agile development practices such as Scrum become natural because they focus on software deliveries with fast cycles. In addition, through the operation team, proactive monitoring of the applications that are made available to users is performed.

Does the concept of DevOps apply only to IT?

As DevOps has emerged in the Information Technology environment, it is already a reality in this area today. However, its basic principles can also be broadened, reaching different areas of the organization. The important thing is that the goal is to streamline processes.

After all, integration can be the key word to make the marketing, sales and after-sales sectors more attuned, ensuring improvements throughout the whole client engagement. Likewise, logistics and the financial and tax sectors can reduce their costs by investing in updating their own internal procedures.


With the practices that involve DevOps, it is possible to have agility, either in the time to market or to respond quickly to problems identified by the user experience, continuously improving a product or service. Furthermore, coupled with Big Data technologies, it is possible to extract useful information which can bring a huge competitive advantage over competitors as well as evolve into predictive analytics. In addition to a cloud infrastructure, it is possible to be prepared for demand peaks in a safe and high level of efficiency for the availability of these services to users. If your company is looking for innovation allied with efficiency, focusing on the user experience, you need to start to embrace the concepts of DevOps today.

Friday, January 5, 2018

Tips that will assist you in backlog prioritization

The Product Backlog is the Scrum artifact that represents what must be developed in the project, that is, it contains all the work that needs to be completed. 

We also know, in an agile project, a change in course is to be expected, so the initial set of functionalities to meet the product requirements can vary in priority as time passes, and with this, maintaining the Product Backlog prioritized and updated is of paramount importance to the success of the project. 

In this article I will list some tips to help you prioritize the Product Backlog.

Keep Product Backlog Updated

Stories that are no longer in line with the product view should be discarded from the backlog. The smaller the set of stories that have to be prioritized, the simpler the task will be. As difficult as it is to "detach" from a thoughtful and well written requirement, keeping it in the backlog after it has been identified as obsolete will only set you back.

Give importance to Definition of Ready (DoR)

The definition of ready for user stories is another factor that can greatly aid in the prioritization of the Product Backlog. Without it, the development team may not know how to correctly estimate a story, passing a false sense of story size to the PO, resulting in prioritizing decisions based on unreliable information.

What is the knowledge, uncertainty and risk about a story?

As these factors directly influence the success of the product, stories with a low degree of knowledge and a high degree of uncertainty and risk should have a high priority, since the sooner they are developed, the better the path to follow can be perceived, otherwise not having the time to develop the story and reap the rewards of the development of it.

What is the story's influence on the next release?

Stories that enable faster product launching should also be at the top of the Product Backlog. For example, in an invoice generation software, the generation of the note itself is much more important than the registration of the products, so it must have a higher priority.

Attention to the size of the stories

Remember, the story should be small enough to be independent and add value to the software and to the client. Seek a uniformity in the size of the stories. Try to keep short stories on top of the backlog and find bigger ones as you progress through it. Avoid having the team estimate very large stories that are at greater risk of presenting surprises in their development and which have estimates that are more susceptible to errors.

Attention to dependency between histories

Despite the definition that stories must be independent, we often can not avoid the dependency between stories. In this case the best option is to make this dependence visible, with a note, a different color, anything that draws attention to it. If story A depends on story B, it does not add value for the business to make A prior to B and this should be visible to all involved in the Project.

Listen to all stakeholders

The Product Backlog priority decision is a responsibility of the Product Owner, however, he or she must listen to all stakeholders in the Project and assist in their decision making process. This is important because the product being developed is not only developed for the PO, but to everyone involved in the Project, mainly stakeholders and customers.

Use Prioritization Techniques

The use of specific techniques can be very useful when there is doubt in the priority of a small set of stories. Use prioritization techniques as your ally to help resolve these small conflicts.

Consider prioritization by themes

Dependency between stories is often unavoidable. In this way, grouping dependent stories into a theme and prioritizing the theme can also help you. Prioritization can be divided into two steps, first prioritizing the themes and then sequencing the stories within each theme, thus avoiding stories of the same theme be scattered throughout the Product Backlog.

Stay current

As always, never stop studying and updating. Every day new techniques appear, and, being open-minded to absorb new knowledge is always important to help us improve our work.

Monday, December 18, 2017

Techniques for an efficient agile retrospective

Inspect and adapt processes is a practice known for a long time and, even today, used by many companies to ensure continuous improvement. It is common, at the end of traditional projects, for the team to meet, together with management, to capture lessons learned in order to benefit future projects.

Although this approach is valid, it often happens that projects are totally different and teams are formed by other people. That is, the context is very different and you can not use the same path of success. In addition, the vast majority of projects usually take months or even years to complete.

These facts indicate that problems encountered over the course of the project will be raised and discussed only at the end, that is, when the project is over and nothing more can be done.

Often, people no longer remember the troubles that happened during the earlier development period. Others remember, but do not want to upset their colleagues or the management and end up repressing the information.

Agile methods often work on short cycles, delivering incremental parts of the product and not just at the end of the project. Retrospectives were adapted to occur at the end of each of these cycles. This is why it is so important because it is possible to reflect over short periods of time and not only when the project is over.

Conducting Retrospectives

Basically, in a retrospective the team stops and analyzes their way of working. There are several ways of conducting retrospectives, the most common of which is the discussion of the following three points:

  • What went well in the sprint? This question helps team members recognize and share the good points, that is, good practices that they should continue to apply in the next sprints.
  • What did not go well in the sprint? Here members are encouraged to look at difficult challenges they faced and obstacles they encountered.
  • What actions can we take so that problems do not recur? This question allows ideas to be raised for improvement actions in order not to go through the same problem.

Reflecting on days or weeks of work brings a lot of benefits to the project and to the people who work on it.

Perhaps, the biggest advantage of doing this reflection in short periods of time, is that the memory is still fresh. If something was bothering anyone, he or she probably still remembers it well. As the project is still in progress, this discomfort can be reported and resolved for the continuation of the project.

The same is true for good practices used by team members. If it is considered beneficial to the project, it can be adopted by the entire team to improve the progress of the project.

Another important factor in hindsight in agile projects is that after the problems and obstacles have been raised, action plans are drawn up for them, by the team itself. This means that the team analyzes what happened, defines the actions and then performs on them themselv. Since it was the team that defined the actions, the commitment is much greater than if they were imposed by management.

By being a staff-only meeting, people tend to feel safer and more comfortable talking freely about their frustrations. In addition, retrospectives tend to discuss problems without raising guilt or making accusations. For this reason, it is important to focus on resolving these barriers and dividing responsibilities among team members so that changes will actually happen.

A key point is the learning obtained in retrospectives. The learning culture germinates the moment a team realizes its deficiencies and begins to take regular steps towards improvement. Implementing improvement practices is necessary so that team members do not repeat the same mistakes in the future. They evolve as individuals and contribute as better team players.

It is also very valuable to capture the positive aspects, that is, all that was good. Recognize hard work, identify and share successful practices so that they continue to be applied by the team.

Continuing practice of retrospectives results in finding more efficient ways of working and delivering better value to customers. With every retrospective the team grows and improves their efficiency. 

It is worth mentioning that there are many teams that ignore retrospectives in order not to waste time. However, ignoring the Retrospective meeting causes the feedback to not be shared between the team, leaving no chance for improvements that the team could work on.

How to structure an efficient retrospective

First meeting point

Each team member notes on post-its the strengths and weaknesses of a sprint.

Different colors can be used to differentiate positive points from negative points.

The Scrum Master is responsible for giving a time limit so that the team is focused on the objective of individually evaluating what it considered good and what it considered bad in the sprint in evaluation. 10 minutes is a good time to keep the team focused on this first stage of the meeting. Of course we devalue the time required in function of the total time that was stipulated for the retrospective.

Second meeting point

Each team member presents the positive points he or she has raised and the team discusses them.

After all the positive points have been presented, all of the team's negative points are presented one by one and the team evaluates them and tries to come up with a solution for each one.

The Scrum Master supports the team to focus on the main objective of the meeting: Raise solutions for improvements.

The importance of providing solutions to problems

It is no use for the team to discuss the whole meeting about  problems of a sprint and to end it without any proposed solution to them. The problems will remain. The Scrum Master should lead the team so that at the end of the meeting there are concrete solutions to what will be done to improve each negative point. 

Of course realizing that the team is not mature yet the Scrum Master can propose ideas for the team to work on, discuss and improve them according to what the team judges best for the improvement of their work.


If you were to remember just one thing from this blog article, it should be that restropective meetings are important to grow your team and improve their efficiency in their current and future projects. The second most important point is that your retrospectives should have a clear structure and be directed towards identifying and discussing actionable ideas for improvement.

Sunday, December 10, 2017

How to integrate UX with Agile Methods

Agile Methods are common in software development and the use of these methods has been practiced in many companies and teams for several years. However, it is often difficult to fit the design of UX (User Experience) into this type of work methodology. 

At what time does the design come in? At the beginning? At the end? In the middle? 

In this article we will take a look at some of concepts and best practices that can help agile teams to improve the user experience in their projects.

Agile vs. UX

These two approaches use different ways of allocating resources in a project. On the one hand, through short iterations, agile methods focus efforts to deliver small sets of software functionality to customers as quickly as possible. On the other hand, the User Experience approach advocates spending efforts on researching and analyzing user behavior before development begins. Using Agile Methods, the product is often launched quickly, without the UX process being completed or at least being started.

In Agile Methods the development versions are periodically delivered to customers. Feedback from these clients influences the current implementation cycle and directs the planning of future cycles. The customer is not a person outside the product team, who buys or uses the product, it interferes with the product team's decision making.

While these feedbacks are precious for the development team, they are often limited by the scope of the current development sprint. Furthermore, in order to really gather a good understanding of the user experience, it is often necessary to observe the behavior of the user while he or she is using and interacting with the application. 

Undoubtedly there are several ways to integrate UX and agile methodologies and the right thing is to choose the way that best suits your situation and availability of resources.

While it is important to have UX experts, people who know the basics about information architecture, interaction design, visual design and all themes related to the user experience, UX should be a concern of all people on the team. There is no reason for the PO and team members not to worry about the issue and leave everything in the hands of a specialist. 

All members of the agile team should know the basics of UX.

Practices to integrate UX and Agile Methods

The best practice for incorporating UX with Agile Methods is to build a regular cadence of engagement with the user. The purpose is to engage users to investigate their experience in using the product, to investigate their behavior and sequence of activities when using the software. For this, it is recommended to incorporate usability tests in all stages of the development process in order to improve the UX of the software as well as to promote a closer proximity between the product, the brand and the user.

Here are some suggestions for user participation that can help to improve the user experience:

  • Research:
    User Experience research activities and requirements gathering depend on whether what is going to be developed is a new functionality or an improvement on an existing one. For a completely new functionality, users are interviewed to investigate their needs and understand the domain, context, and limitations of the user regarding the new tool. For the improvement of an existing one, it is recommended a usability test with the functionality in question to identify the good parts that should be maintained or emphasized and the bad parts that cause problems to the users.
  • Usability tests with prototypes:
    Defined the scope of the iteration it is recommended to make a low fidelity prototype and test it with internal users who are real users of the software and who will perform operations level tasks. It is interesting to have at least two different solutions for the test. The feedback you collect helps validate the concept.
  • Usability tests with MVP (Minimum Viable Product):
    Once the solution is defined an MVP is developed to be tested with external users. Observing users interacting with the system and performing key tasks allows you to evaluate the hierarchy of information and your experience with the interface. Feedback is real, and you can apply it directly to improve the experience.

The need for constant testing is the main reason for faster and cheaper analyzes. This method has a huge impact on collaboration among those involved in a project because it deepens the understanding of the users in the product development process in the team, and this is a very powerful approach. However, the difficulty in performing these tests is known. In order for the team to achieve a higher level of credibility, it is necessary to educate all members about usability practices.

Agile practices that can be incorporated into UX

As we have seen, agile methods and UX design, despite having different concepts, can be integrated to generate a final result that brings more efficiency and satisfaction to the client.

Plan the entire product for 6 months and then release. It gives us the possibility of the product being outdated even before its launch. This is one of the reasons agile methods are being incorporated by so many companies and other disciplines like UX.

In UX the application of techniques like Kanban has become very popular very fast with the help of agile concepts. Today we have many UX professionals creating their own kanbans to solve problems in a collaborative, fast and effective way. Most kanbans aim to bring the product user closer to the team responsible for product development.

Following this precept, below are some characteristics of the agility to assist in the tasks of UX design:

  • Anticipate the design as soon as possible:
    A common situation for the design team is that they need to receive more input from the client or the research team before they begin to design the screens. But this attitude goes completely against the "agile" philosophy. Make some deductions, work with some assumptions, fork out a few paths - but anticipate the design as soon as possible. When the inputs come in, you make adaptations to design and incorporate new features. But almost always the skeleton of the functionality you are designing will not change, whatever input it may be.
  • Accept changes and uncertainties:
    If you are always the first to complain when the client asks you to change something or send something important at the time, agile methods may not be for you. Accept that your designs are changeable and use this to your advantage. Gradually you will realize that these changes are making your product more robust and more consistent. Be an optimist, above all else.
  • Get out of your desk more often:
    In such projects many decisions are made in informal conversations. Be out of your desk with more frequency. When a decision is made without everyone's present, help to communicate it clearly to all, and more importantly, communicate to the Product Owner. Being aware of what is being spoken around you can prevent miscommunication problems from happening. Do not be  afraid to get in the middle of someone's conversation when you feel like you should be a part of it.
  • Keep a shared library:
    Establish constant meetings with the team to align in detail how each element of the screen should work. When you come to some conclusion, update your documentation so that everything is standardized - or else communicate the new standard to everyone. Keep a library of UI patterns somewhere easily accessible, so that the next screens that are drawn already contain these formats and avoid duplicity of styles.
  • Meet often but shorter:
    One of the great advantages of agile methods (such as Scrum) is the daily meeting. In addition to this initial meeting, plan your day in advance and schedule other meetings with each of the areas - but always in that 15-minute format with no delays. Often the initial impression is that in a few days there will be nothing to talk about in these meetings, but when the project progresses and new unforseen issues arise this impression gets quickly disproved. Make sure to stay on focus. Don't let your project status meeting digress into some discussion about the implementation details. Schedule seperate meetings instead. 
  • Align quality expectations:
    It is common that at the beginning of the project, when people do not know each other, misalignments exist regarding the expected quality of the final product. That is why it is important to make these quality goals clear.

Lean UX: An agile alternative for traditional UX

Traditionally, User Experience Design and its variables of Interaction Design, User Interface Design, Information Architecture, among others, are work based on deliverables. These deliverables are structures that define stages of a UX project, such as: Wireframes, Sitemaps, Flows, among others.

Lean UX came exactly to focus the daily update of all these deliverables to spend that time more deeply on the user experience and its variables within the project.

Have a prototype to validate internally and test externally. The key here is to gather feedback from everyone, as it is much easier to make meaningful and low-cost changes when the product is still at an early development stage. That's why Lean UX is so well-suited for creating an MVP.


User experience plays an important role in the perceived quality of your application. Use this to your advantage by incorporating UX design early in your development and project planning, regardless of the methodology used - be it agile or traditional.

Saturday, December 2, 2017

Gamification in the context of software development

Software development is a prolonged and demanding activity that requires not only a deep cognitive engagement but also creativity. Software developers, who repeatedly solve challenging problems and acquire new skills to do so, can lose their intrinsic motivation over time, which inevitably leads to the progressive degradation of the quality of their work. 

In the recent years, researchers and software development companies alike have started to explore the ways in which gamification could be applied in the context of software development to provide positive reinforcement and a sense of accomplishment to software developers. 

What Is Gamification? 

In their influential book "For the Win: How Game Thinking Can Revolutionize Your Business" Kevin Werbach and Dan Hunter define gamification as the use of game elements and game design techniques in non-game contexts. 

The concept of gamification is sometimes confused with game theory, which is the study of mathematical models of conflict and cooperation between intelligent, rational decision-makers. Whereas game theory is concerned with the human desire to maximize gains and minimize losses, gamification is all about "turning something not a game into a game" as Richard Bartle, the inventor of the first MUD (Multi-User Dungeon) game, defined gamification.

What Is a Game?

To understand how to turn something that is not a game into a game, we need to first understand what are the core defining characteristics of all games.

According to Jane McGonigal, the author of "Reality is Broken: Why Games Make Us Better and How They Can Change the World" all games have the following defining characteristics: 

  • Goal: The goal of a game gives players something to strive for and motivates them to play the game as it was intended to be played. Without a goal, players would have to explore how the game can be interacted with, which, while entertaining, would be unproductive in the context of software development. 
  • Rules: As counter-intuitive as it may sound, rules boost creativity by providing direction. In a famous experiment, Haught-Tromp and colleagues recruited 64 undergraduates and asked them to write a series of rhymes. One half of the participants were given eight specific nouns, while the other half could use any nouns. "Participants generated more creative rhymes when they had to work with the externally imposed constraint of a given noun", wrote the judges who evaluated the rhymes. 
  • Feedback system: The feedback system serves two purposes: first, it provides positive encouragement when players successfully reach the goal of the game; second, it informs players how much they need to improve in order to successfully reach the goal of the game in case they fail to do so. 
  • Voluntary participation: Kene Boun My and Benoît Chalvignac have studied the effect of voluntary participation in the context of a collective-good experiment and discovered that voluntary participation could induce a recovery of cooperation levels when the payoff yielded by the exit option is high enough, so that the usually observed decay of average contribution levels can be counteracted. Without voluntary participation, games stop being games and turn into tasks, and tasks don’t have the same positive effect when it comes to overcoming unnecessary obstacles as games.

Examples of Gamification

Perhaps the best-known example of gamification in practice, one that most software developers are already familiar with, is the popular question-and-answer site for developers Stack Overflow, which describes itself as the largest, most trusted online community for developers to learn, share their programming knowledge, and build their careers.

On Stack Overflow, users can receive reward points and badges for answering the questions of other users or spreading links to questions and answers via social media websites. According to Stack Overflow’s help center, a person is awarded 10 reputation points for receiving an upvote on an answer given to a question and 5 reputation points for receiving an upvote on a submitted question.

Another particularly relevant example of gamification is Visual Studio Achievements. This extension for Visual Studio allows software developers to earn achievements for performing various coding feats or exploring some of the less-known features of Visual Studio.

Gamifying Software Development 

"Gamification, if applied to software development, may provide several advantages. First, because of its rewarding mechanisms, it may motivate developers to learn new technologies and increase their productivity (e.g., the Visual Studio Achievements). Second, it may improve the quality of their work if adopted to encourage best practices (e.g., testing, code conventions, etc.). From a management perspective, it may be used as input to give economic incentives and to support the evaluation of employees as well as of teams", claim researchers Daniel J. Dubois and Giordano Tamburrelli.

According to Pew Research Center, 53 percent of technology stakeholders said that the use of gamification would be widespread by 2020, and the other 42 percent predicted that gamification would play an important role, but would not be as widespread.
Clearly, gamification has its place in software development, and there are already several gamification frameworks for software development, some using cognitive principles, while others are focusing on improving the quality of the software development lifecycle.

Most gamification frameworks and real-world implementations use the PLB Triad. "Points, Badges, and Leaderboards are … widely used in gamification systems, because they appear to work moderately well as extrinsic motivators", state the researchers from the University of Lugano, Switzerland

To introduce gamification systems, such as the PLB Triad, on a real or virtual system, it’s necessary to understand where to derive value from to encourage a certain behavior, and it's also necessary to design sufficiently interesting activities and avoid tension with other motivational structures. 

The Swiss researchers argue that because adopting a gamification system means modifying the behavior of people and influencing their routine, the adoption might actually backfire. "As such, it represents a delicate matter that may negatively impact well-functioning parts of the system. Put simply: Adding a reward to a boring task may help to motivate the user, but will not turn it into an engaging activity."


While gamification may be the future of certain types of software development, a great deal of caution should be exercised when implementing game-design elements and game principles to improve productivity, learning, and motivation of software developers. There are many individual and contextual differences that need to be accounted for to design a functional gamification system, and large-scale, successful implementations of gamification principles are still fairly scarce. 

Gamification frameworks intended for the context of software development can serve as an excellent starting point and help  companies avoid many potentially costly mistakes.