Blog

12 Tools To Improve Management Skills

By Walter Abrigo, Managing Director at Santex

Blog

Aligned with the old concept of Continuous Improvement, among the most common managerial skills, are some aptitudes that should be put into play day to day every time you try to achieve an objective through the work of others. For example:

  • Plan
  • Implement
  • Evaluate
  • Learn (reformulate, adapt, standardize)

Although this cycle holds much truth, today’s reality presents important differences when compared to the past. The following among others:

  • Before what took months actually takes days, hours.
  • Before, steps were consecutive. Now they overlap.
  • The amount of affective variables are of a superior class than in the past.
  • The idea of this article is to present 12 tools that help us better record and follow the significant variables in the development of these skills, so as to alleviate day-to-day burdens.

a) Tools that will up us PLAN:

A Compass
So we don’t begin any activity without clearly knowing where we want to go or what we aim to validate. And to ensure that said activity is aligned with our mission.

Scissors
To make processes easier and to cut or eliminate any step that does not add value. This allows us to question and eliminate tasks that don’t make sense.

Dice
To remind us that sometimes our plans are affected by random events that we cannot control nor prevent, iterating that adaptability in the face of uncertainty is a critical skill.

b) Tools that help us IMPLEMENT

Blinders
These allow us to see straight ahead and not to the sides (toward other difficulties) so we direct all our energy toward the result.  This enables to reach extreme deadlines more efficiently.

A Stationary Bike
So we achieve maximum agility in day-to-day management – from having short, effective follow-up meetings that add value to establishing high-impact policies in record time.

Earphones
To amplify all that we hear, enabling us to listen empathetically to our daily conversations, especially those involving disagreements. Searching to understand before being understood can reveal key information for overcoming differences.

c) Tools that help us EVALUATE

A Clock
So we don’t finalize any critical activity or validation of proposals without having measurements, without having a quantitative result that permits us to compare, analyze, and discuss facts rather than perceptions or interpretations.

A Filter
To help us in the judgments we make everyday. To help us separate intentions from the people who committed a certain action and to make visible our own negative contributions before finding fault in others.

A Magnifying Glass
So we may see beyond the surface and find relationships between variables that may be hard to detect with the naked eye. So we may find those little variables that have a big impact on the end result.

d) Tools that help us LEARN

An Hourglass
To know that the integral development of a person takes time. It is sacred land and improvements may be incremental. Not everything improves at once. It’s like a plant: you have to plan the seed and tend to it before you can cultivate its fruits.

An Alarm
That sounds every time:

  • Before tying processes to people (collaborators, clients, providers, bosses, colleagues, activists, our families, etc.).
  • Instead of being hard headed toward problems and nice to people, we act in the reverse.

A Gong
To remind us that patience is the mother of all virtues and that an error is the path to learning. To capitalize on a mistake develops greater character and more sustainable companies.

About the Author – Walter Abrigo is a Managing Director at Santex. In addition to his large academic career, he possess market expertise in several organizational processes such as management control, change and strategy, recruiting and staffing as well as performance and engagement.

Digital Ecosystem: Even Bicycles Need Technology To Stay Competitive

The Santex Team Editorial

At Santex, we constantly help companies thrive in the Digital Ecosystem. The Digital Ecosystem refers to technology that disrupts how the world conducts business while connecting individual human beings to one another. For businesses, surviving the digital ecosystem necessitates a level of technology and information that matches market demand. Take Gi FlyBike, for example: the fast-folding, smart-phone integrated, electric bicycle that recently took Kickstarter by storm a few months ago. As a company dedicated to integrating technology into the lives of individuals seamlessly and meaningfully, it only makes sense that Santex be the brains behind Gi FlyBike. I was reminded of why even the simplest of products like bicycles need technology to be successful while checking into JFK International Airport. Giflybike - electric folding bike.jpg

A massive, centralized billboard in Terminal 8 of JFK International Airport explains further, “Welcome to the application economy, where every business is in the software business.” While a large sign stating, “Welcome to Terminal 8,” may be more appropriate, JFK International’s current billboard does not even feel slightly out of place. Consider the people within the airport: they efficiently pre-purchase their flight tickets on their phones and then receive continuous updates regarding delays as their departure time nears. They might order a driver to bring them to and from the airport through a mobile application or have a bracelet that estimates the amount of calories they burn as they walk from gate to gate.

Gi FlyBike is no exception to these technological advances. The electric bicycle has its own mobile application that syncs to Android and Apple Smartphones. Through the App, riders have the ability to control the level of electric assistance they receive and to choose their preferred cycling route. Riders can even create a user profile and share both fitness statistics over social media and the bike itself with friends and family through the mobile application. Last but certainly not least, Gi FlyBike has a built in USB port so you always arrive to your destination with a fully charged phone.

Gi flybike - electric folding bike.jpg

The bicycle, a 200-year-old invention and the iconic cornerstone of all childhood mobility, is no longer just a hardware product. Instead, Gi FlyBike has innovated the bicycle to another level by combining hardware and software to create a new bicycle experience – one that meets the needs of the modern commuter. And the modern commuter responded with a resounding, “yes.” Gi FlyBike met its initial goal in its first five hours of launching and has since raised well over $500,000.

The fact that the billboard is in an international airport is a particularly telling metaphor because it speaks to the digital age as a global phenomena. People from all over the world are drawn to webs of connectivity because it makes their lives more productive. While we may think of bicycles as simple modes of transportation, Gi FlyBike challenges the traditional bicycle design and makes the claim that even the simplest of things can be successfully integrated into the digital ecosystem that surrounds all of us.

Avoid Burnout and Improve Quality

By Juan San Martín – Senior QA Analyst at Santex

^49CABBFA9312E26D61BBA771EBB0F8E4A6BA3C6760BB1BAD04^pimgpsh_fullsize_distr

The purpose of this article is to detail the problems that arise from having a static Quality Team working on a given project during long periods of time. To this effect, the analysis that was done was based on both practical and theoretical concepts, and on the personal experiences I’ve had regarding this issue.

Before we start, I must say that the sample taken for this study considered only people that currently work as Quality Assurance Analysts, taken at random from the populations provided both by Santex itself and from an online testing platform.

The start of this investigation was founded on one of the principles of testing called “The Pesticide Paradox”, that reads: “If the same kinds of tests are repeated again and again, eventually the same set of test cases will no longer be able to find any new bugs.” The idea has been to apply this paradox not only to test cases, but also to test teams as a whole. The first step is to understand why this could be applied, and it came in the form of Burnout Syndrome – a psychological term coined by Dr. Freudenberger in 1974 that describes a disorder characterized by exhaustion, lack of enthusiasm and motivation, feelings of ineffectiveness, and diminished mental capacity while working.

As a quality engineer, I’ve sadly had to go through the same feelings after being trapped in the routine of a project that lasted for over a year, yet didn’t change much, so the work that had to be done was a repetitive and meaningless task most of the time, this in itself is the prime cause of Burnout in the workspace, considering any industry, not just our own. This experience was what led me to believe that there should be a way to keep the workers motivated, which in turn will better the effectiveness of the quality team, and the quality of the end product that the client receives.

After speaking with several coworkers and people that work in the same area, I’ve been able to see that many other testers have gone through the same thing, or are still going through this. What must be understood is that anyone that is suffering from burnout will not give his all to the project and will do just enough to go through the day. This has a massive effect on the quality of any product, but worse is the effect on the person itself – forcing him/her to take medical leave or requiring treatment from a mental health professional. While this is not the normal case, it should be taken into account and seen as a prime reason for any enterprise to avoid letting the situation go out of hand to this extent.

I’m not going to discuss in depth what the burnout syndrome may do to a person, so for now we’ll focus on the proposed solution to this problem: rotating quality assurance analysts over time to alleviate the symptoms.

This technique offers a few advantages to the team itself. Firstly, obviously, is preventing burnout. But it also offers a new point of view on the project that usually finds bugs that were skipped by the team because they were either minor issues or not in critical areas of the software. As ISTQB compliant testers, we know that defects tend to group themselves in certain modules of a given software, and our attention will focus on these modules. But a new person to a project is free of these vices and, given the freedom to explore the software, will most likely find things the team didn’t see, consequently bettering the quality of the product.

But as with any technique that alters the way we normally work, there are disadvantages and it would detrimental not to mention the most important ones. First is the time lost due to the need of knowledge transfer and training. Additionally there’s the loss of experience in the group, which occurs when a member does not perform a full rotation. Team communication will also be disrupted.

Now it’s a matter of balancing these attributes and keeping a close eye on team performance to see if the benefits outweigh the cons. As it has been said before, burnout eventually will have an impact on overall product quality. It’s the main factor we are trying to avoid, and the reason it’s best to rotate teams if the client allows it.

By maintaining a healthy, confident, and happy team we benefit our clients by giving them a product of the highest possible quality.

It is my advice to any Project Manager reading this to look at your teams, see if they are exhibiting any of the symptoms of burnout, and if they are, consider the possibility of rotating them to new teams. By doing this, you will help both the tester and the team in general.

Please keep in mind that while this investigation was performed considering Quality Teams, it also applies to most jobs.

About the Author – Juan San Martín is a talented Software Engineer who specializes in Quality Assurance. Juan is a strategic team player capable of realizing multiple forms of Testing. Great analytical skills and quick learner.

What Thread, Main Thread? Part II

By Martín Zangl – Android Developer at Santex

mobile-phones-1

If we are to understand some basic, common behaviors for approaching a simple solution using threads, we know that at some point we have to manage communication and execution order. For that, Android provides us with a bunch of concurrency and communication frameworks that are designed, implemented, and integrated in accordance with many patterns that you can find in POSA books.

Android provides differents tools according to concurrency patterns:

We can resolve many problems with one or more of the following:

  • Using handlers and other threads
  • Asynctasks
  • Loaders
  • IntentServices

Custom Handlers and Threads

As previously stated, there is only one Looper per Thread, but we can also have different handlers post messages and process them.

For example, we could define two threads with two handlers to send messages to each other.

threads1.png

For one instance, what if one of that threads is the Main Thread, we could send update messages to UI widgets and notify something happens in the other thread. Remember that if we are just using a simple pattern like observer pattern and notifying every change directly to the UI won’t work because we are trying to change the state of view object from a thread other than the main thread. In that case we could post the result or intermediate results on the handler registered to the main thread. In other words, we have an Activity, we declare a new Handler, that handler would be associated to the Main Thread – that is, the main looper – so every time we send a message from another thread, the handler will post the message in the message queue, then the looper will process that message sending it to the registered handler. Then we can update some UI widgets.

This is a pretty clean solution, but it becomes very difficult to handle the UI widgets’ lifecycle. That is to say a configuration change happens or the user changes the context often.

The worst scenario is when a configuration change happens, because in that case a new instance of the activity will be created. It would be even worse if we had references for any particular view on those messages; in that case the reference cannot be garbage collected and we’d just be leaking memory.

More in detail, every time that a configuration change happens two new messages are posted to the looper queue, one is CONFIGURATION_CHANGE and the other is RELAUNCH_ACTIVITY and this is what happens after that message is processed:

  1. calls onSaveInstanceState(), onPause(), onDestroy() on the old activity instance.
  2. create a new activity instance.
  3. calls onCreate() and onResume() on that new activity instance.

In the case that we send messages from other threads to the main thread, we have be careful. We cannot predict in which activity instance we are posting those messages.

We could do some speculation and think if any message posted before the orientation change would be handled before onPause() the leaving activity, and if any message posted a after the orientation change will be handled after onResume() he incoming activity.

 What can we do?

Fix the architecture instead of messing it up with handler.post().

Do not hold view or context references.

Remove all messages or callbacks in the activity onPause()

And the last one if you want to get fired use hanlder.postAtFrontQueue() to make sure a message posted before onPause() will be handled before onPause().

Next post we’ll talk about Asynctask, IntentService and Loaders.

About the Author – Martín Zangl is an experienced Android Developer at Santex,  passionate about his work.  Martín is continuously learning and training to investigate new technologies.

Source:
https://corner.squareup.com/2013/12/android-main-thread-2.html
https://www.youtube.com/watch?v=S1Y1Zt3lfeQ&list=PLZ9NgFYEMxp4KSJPUyaQCj7x--NQ6kvcX&index=32

 

What Thread, Main Thread? Part I

By Martín Zangl – Android Developer at Santex

mobile-learning

Public Static Void Main

As we know, every single Java app starts with call to method public static void main(). This is true for Java desktop, JEE servlets, and Android applications.

When Android boots, it uses a simple process called ZygoteInit. Zygote (Wikipedia) is a cell that can divide asexually by mitosis to produce identical offspring. This is a VM Dalvik process that loads the most common classes of the Android SDK on a thread, and then waits. When starting a new Android application, the Android system forks the ZygoteInit process. The thread in the child fork stops waiting and calls ActivityThread.main()

Here is what it’s essentially doing:

public class ActivityThread {

public static void main(String... args) {

Looper.prepare();

Looper.setMainLooper(Looper.myLooper());

Looper.loop();
}
}

Looper? What is a Looper?

Here we can find a particular concurrency pattern called Thread-Specific Storage. This pattern allows multiple threads to use one “logical global” access point to retrieve an object that is local to a thread, without incurring locking overhead on each object access.

articulo

When a Android application starts, it creates a Looper object. A Looper object contains a static ThreadLocal object, a Message Queue, and the Thread reference that created it. In other words, a Looper implements a Thread-specific event loop. Using a Looper is a good way to process messages serially on one Thread.

Looper.prepare(); This operation associates the looper with the current thread and storage it in a static ThreadLocal.
Looper.loops(); will process each message in the queue, and block when the queue is empty.

As previously said, each looper is associated with one thread. To retrieve the Looper associated to the current thread you can use the method Looper.myLooper().

An example of using a Looper with a Thread:

class HandlerThread extends Thread {
Looper looper;
public void run() {
Looper.prepare();
looper = Looper.myLooper();
Looper.loop();
}
}

Handlers is the natural companion to a looper. Looper has a Message queue and Handlers put messages or runnable objects in place and process each of them, i.e. it allows them to send messages to a looper message queue from any thread and handle messages dequeued on the thread associated to that looper.

You can associate many handlers to one looper. The looper delivers the message to one specific handler.

A default Handler constructor associates it with current the thread and its looper. We could define the other Looper if we want in order to post messages to the Message queue of whatever Looper we want.

The looper instanced in the void main method is called Main Looper, part of the Main Thread. This particular thread is in charge of dispatching events to the UI widgets that include the drawing events. All components (other Activities, Services, Broadcast Receivers and Content Providers) that run in the same process are instanced in the Main Thread.

When an application performs intensive work in response to user interactions, this single thread model can yield poor performance. If everything is happening in the Main Thread it will block the whole UI, so no events can be dispatched, including drawing events. That is when a ANR (Application Not Responding) dialog appears. In that case, we just put all the long background operations in another thread, but other problems arise in paradise – only the main thread can process UI widgets. So, we need to somehow handle communication between threads.

Next post we’ll talk about:
Using custom handlers and other threads
Asynctasks
Loaders
IntentServices

About the Author  - Martín Zangl is an experienced Android Developer at Santex,  passionate about his work.  Martín is continuously learning and training to investigate new technologies.

Source:

https://corner.squareup.com/2013/10/android-main-thread-1.html

http://developer.android.com/reference/android/os/Looper.html

http://developer.android.com/guide/components/processes-and-threads.html

7 tips for new Project Managers

IMG_2912

By Johan Tabori – Project Manager at Santex

The project management role has evolved very rapidly over the last two decades. The traditional view of “boss” has morphed into a combination of “facilitator” and “coordinator” which fits better in agile organizations. The following tips may help you to improve your project management skills in today’s increasingly changing business environments:

1. Ensure healthy and friendly work environments.
Fear is the worst incentive to work, therefore, make sure the team work environment is as friendly as it can be, your teammates will trust you and you will be able to delegate responsibilities more adequately. Same works for the client, team dynamics can be affected by how good a relationship with the client is, so don’t be afraid to demand collaboration and mutual respect.

2. Know your team and client.
As a project manager, you need to be a little bit of a psychologist. As you move forward in the project, it’s very important to understand both your team’s and client’s mindsets. This will become very helpful when bringing up sensitive issues or when you need to resolve conflicts.

3. Quickly respond to communications.
Unless you are in a meeting or have an emergency, don’t wait too long to respond an email or call. If you’re not sure about the topic in discussion, don’t be afraid to ask for clarifications. If it requires further investigation, let the sender know and promise you will looking into it and get back to him/her as soon as possible.

4. Review project status with your client periodically.
Weekly follow up meetings is the best way to keep your client and/or stakeholders informed. Make sure you cover key aspects of the project such as current status, scope, milestones, communications and team updates.

5. Involve your team as much as possible in key decisions regarding the project.
In most cases, your team have more technical skills than you do, so instead of imposing any particular technology, architecture or framework, make sure these are agreed within the team.

6. Take the opportunity to learn.
Self centered project managers fail miserably in accomplishing long term goals . Acknowledge your weaknesses and information gaps and learn from every team member and client.

7.  Demonstrate your value as a service provider before asking for more business.
Clients hate when they are presented with prospective new businesses at the beginning of the contract. They want to see you “in action” before they can start thinking about it. Once you have proved you deliver value to their organization, they will come to you and discuss future projects.

 About the Author
Johan Tabori - Johan’s education as an informatics engineer prepared him well to become the project manager that he is today. A natural multi-tasker, he has been leading IT project teams in a variety of vertical markets and applications for more than 10 years.

Installing and protecting WordPress from CLI and .htaccess

By Martín Navarro – Quality Assurance at Santex

MArtin Navarro Blog 2

Installing WordPress has never been easy as it is in the most recent versions of it. The steps are as easy as to copy over FTP all the files of the CMS to our hosting and access our site from its URL to start its installation. Sometimes if we have SSH access to our server we can download and unzip WordPress files directly to our website directory without the need of a FTP client, we just need a shell from Linux, OS X or Windows with Putty and use the following commands.

First we need to navigate to the root folder of our website that depending on your hosting/ server configuration can be different from the following example:

cd /home/your_website/public_html

Now that we are already positioned on our website root directory, we proceed with the download of the latest WordPress installation files:

wget http://wordpress.org/latest.zip

The download will start and it will be blazing fast since we are using our hosting internet connection.

Now lets unzip all the WordPress files:

unzip latest.zip

After doing this we are going to get a new folder in our website root called “wordpress”, we need all the files inside of it, located in our website root folder (only if we are going to host just one WP installation)

cp -rf ./wordpress/* ./

With that command we are moving all the files inside the “wordpress” folder to our website root folder.

And that’s all! Now we just need to point our browser to our domain and start with the configuration of our new WordPress site.

Although that’s not really all, once the installation/configuration of our new website is done, we need to secure it. One of the easiest ways to do this is by using the .htaccess file (Hypertext Access) within that file we can override some features of our webserver. By using the right commands, we can defend our website from spammers, hackers and other types of attackers.

After enabling the “Permalinks” functionality of WordPress a .htaccess file is created in the root folder of our website and indicates to our web server how the URL’s for our posts are going to be created.

Let’s protect our wp-config.php, .htaccess files. These files contains very sensitive information and it’s the first file we MUST protect from attackers. It contains information on the database we are using, user, password and other configurations parameters.

This is the parameter we must add between the lines “#BEGIN of WordPress” and “#END of WordPress”

<files wp-config.php> order allow,deny deny from all </files>

<Files .htaccess> order allow,deny deny from all </Files>

No one, not even ourselves, will be able to access that file. In our case we will still be able to access it via SSH, SCP, FTP.

Let’s disable directory listing, by doing this we are going to hide our folder structure and it’s a good measure to difficult the attacker’s first intentions.

Options All -Indexes

Protecting our images from Hot Linking, this is a technique where other users steal our bandwidth by using our images directly from its URL into their own websites. This is good for the bandwidth thief but not for us since all of the images in their website are going to be loaded from OUR web server.

Add the following lines to your .htaccess file.

RewriteEngine On RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain.com/.*$ [NC] RewriteRule \.(gif|jpg)$ http://www.yoursite.com/hotlink.gif [R,L]

With these lines the attacker will use the URL but the image displayed is not going to be the right one but a warning image that we created for this matter.

These lines and practices are just a few but are the most important ones to follow right after the installation of our website or even later if we already have an old installation of WordPress.

About the Author: Martin Navarro is a detailed Quality Assurance professional with full system development lifecycle experience, including designing, developing and implementing test plans, test cases and test processes. Martin is a strategic team player always willing to contribute and to solve problems.

US Ambassador visits Santex premises in Cordoba to discuss the importance of ties between Argentina and the US

[Press Release]

Cordoba, Argentina – June 8th, 2015

Noah Mamet, the United States Ambassador in Argentina visited one of our major development centers located in Cordoba. The Ambassador was accompanied by Yamilee Bastien, Commercial Attaché at the Embassy.

Ambassador Mamet addressed important observations about the U.S. – Argentina relationship and stated that Cordoba is a promising technology hub, rich in talent and tech start-ups. During the visit, the dynamic and creative economy of the Province together with the strong technology field and the developed entrepreneur ecosystem were mentioned as key aspects which are accelerating Cordoba’s position on the global arena.

This visit was part of an official tour the Ambassador is taking on to strengthen relations between the country’s provinces, its people and the United States.

Santex welcomed different technological entrepreneurs at its “Tech Pub” to share experiences with the US delegation, where Mamet gave advice and discussed different programs that encourage bilateral initiatives.

Juan Santiago, CEO & Co-Founder of Santex, shared his experience both undertaking his own company as well as supporting local entrepreneurs stating his confidence in the high skilled resources, the cultural proximity and the creativity that Argentinians bring to the table as the main differentiators.

Because of trade and talented people, future economic prospects between the U.S. and Argentina are bright. According to the Ambassador there are a lot of US Companies that are ready to invest in the country. He stressed the potential he is seeing in some of the most important sectors like telecommunications, informatics and agriculture. “Argentina is on the rise”, said Ambassador Mamet.

IMG-20150608-WA0004

What makes Argentina special?

The Talent

  • Argentina has a high level of educated workers with formalized education. Indeed, over 70% of workers have pursued university education with as many as 50% of those obtaining computing related degrees.
  • Approximately 90,000 international students come to study in Argentina each year, more than any other Latin American country.
  • Over 30,000 of these students are from Europe, the US and Asia, with attractions including the high quality of courses, affordable living costs and the chance to become proficient in speaking Spanish.
  • Argentina has a very talented pool of technically savvy and well-educated resources ready for work. During the dot-com boom, the country was home to approximately 65 percent of the design and implementation work of most regional Internet startups. Argentina has a highly educated skilled workforce, a robust telecom network, and an abundant supply of office-space. Moreover, a team from the National University of Buenos Aires beat important groups like Harvard, Stanford and San Pablo universities in the last international Programming contest.

A Technology Pool

  • The ICT sector in Argentina has been growing without interruption, thus being positioned within the high performing countries.
  • World-class companies such as Oracle, Microsoft, IBM, Motorola, Intel, stand out in Argentina by the stimulus they have given to the development of local companies and the level of innovation shown in different projects; and furthermore, for the development centers that some of these companies have established in our country.
  • Sustained increase of the budgets allocated to Science & Technology and Higher Education.
  • Argentina promotes collaboration between the development of science and technology and the innovation of productive sectors. Following this purpose, the Government has created different programs.
  • Argentina is currently ranking at the global level as a nation with a superlative performance in its ICT sector. It is also known for its high level of consumption of technological products and services, which accounts for the importance in the use and dissemination of these new technologies in the country. Argentina has an important place within software and computing related services.

Argentine Culture

  • According to the English Proficiency Index, Argentina is number 15 in the world, and number 1 in LATAM.
  • The culture of Argentina has a European flavor that will is familiar to most North Americans.
  • Argentinians, like Americans, approach their work and life in general with a can-do attitude. Their knack for discovering innovative solutions is a direct result of their desire to make things work with the tools and materials at their disposal. WE MAKE IT WORK!

Thanks to those who trust us:

Services-Clients

Sources

Extreme programming… once again

By Jose Torres – iOS Software Engineer at Santex

images

Vague or constantly-changing requirements are a fact of life. Instead of ignoring them, we should adapt our processes to reality. Extreme Programming (XP) principles exist to help us safely drive the work of building software. The web is full of information on XP, which can be synthesized as:

> Lightweight, evolving, flexible knowledge to develop software.

The concept of XP comes from the 90s. It bears repeating though, because, unfortunately, many organizations have lost the point. Perhaps they apply technical principles and fail in their flaccid adaptation. Maybe they employ agile processes but little technical practices. Can these discrepancies be balanced? How can we fight back?

Move to an extreme state and embrace its principles. Some organizations resist this shift. One of the best ways to adapt to this change is by running a pilot on a small, internal project.

XP principles state that at least two developers must work in a single workstation. To extend this concept, add one more step after the development sprint organization and consider having the team determine the number of developers who will work together for each user story. On the most critical user stories, place the whole team at a single workstation to discuss and then write production code.

XP principles also dictate a short release cycle for the product. To take this concept further, set up a specific time period during the day (i.e., every three hours) to continually release the product. You could also consider a full integration, if possible. This will help relieve the problems of production integration later, as integration is always happening. As David Farley states “reduce cycle time and the rest falls out.”

Keep in mind that having an active local community can help you to go further. In London, for example, there are multiple extreme programming initiatives like XProlo, eXtreme Tuesday Club, XPDay dedicated to XP practices, where people can join and share knowledge. We should continue creating initiatives and networking to create communities and evolve together.

There are many ways of actively moving forward on integrating extreme principles to software development. As main actors, we are responsible for tracking the efforts of our organizations as they assimilate real XP practices to the next level.

About the Author
Jose is an innovative Software Engineer who specializes in developing iOS applications for both iPhone and iPad. Skilled in creating business applications as well as games, Jose enjoys mentoring colleagues and fellow developers.

How Agile methodologies mitigate cognitive biases that lead projects to failure

By Walter Abrigo, Managing Director at Santex

I want to emphasize in this article how the existence of two cognitive biases (which are almost always present in our daily lives) position agile methodology practices  as one of the most adaptable frameworks for project monitoring and management in general. This is especially true when the context of the given project development is complex, has changing requirements that are poorly defined, and where innovation, competitiveness, flexibility, and productivity all combined are critical to achieving the desired results.  

Cognitive biases

  1. The emotional aspect of our decisions and choices.

  2. The fallacy of planning.

By reviewing each of these biases, we can see how people’s behavior fits better and more consistently with the structure of Agile methodologies.

Our decisions and choices are emotional

The following cases demonstrate how in our everyday decision-making we often forget the Base Rates (or the true distribution of events). Additionally, we strive to make sense of representative stereotypes, we seek causes and explanations, and we have a natural aversion to losing whenever there is something at risk.

First Case: Forgetting the Base Rates (the true distribution of events)

Tom is extremely intelligent, although he lacks true creativity. He needs order and clarity, and prefers systematic organization. He has a strong competitive drive and seems to have little interest and sympathy for others. He does not enjoy dealing with other people. Although he’s self-centered, he has deep moral awareness.

Let’s order the following nine areas of expertise according to the probability that Tom would be a student in any of these fields. We’ll use 1 for the most likely and 9 for the least likely.

  • Business Administration

  • IT

  • Engineering

  • Humanities and Education

  • Law

  • Medicine

  • Physics and Biology

  • Social Sciences and social work

Most will agree that Tom fits well with the stereotypes of smaller groups of students, like IT and engineers, but would fit poorly into larger groups, like humanities and education, social sciences and social work. This is an example of how we substitute the probabilities of the Base Rates for representative stereotypes.  

Second Case: Prejudices based on stereotypes

Linda is thirty-one years old. She’s single, outspoken, and very bright. She majored in Philosophy and when she was a student, she was very concerned about the issues of discrimination and social injustice. She participated in several anti-nuclear protests. Given this information, which of the following scenarios fits best with Linda’s personality?

  1. Linda is a bank teller.

  2. Linda is a bank teller and activist for the feminism movement.

Most will agree that Linda is most suited to the role of “bank teller and feminist.” The stereotypical teller may not be a feminist, so including this detail adds more emphasis to the description. Nonetheless, both feminist tellers and regular tellers share the common fact that they coexist in the world of ‘tellers.’

P(teller)=P(feminist teller) + P(teller not feminist).

Third Case: Seeking causes

Take the gender of six children born one after the other in a hospital. The sequence of boys and girls is random. Each event (birth) is independent of the other, and the number of boys and girls born in the hospital in the last hour has no effect on the gender of the next child. Consider now three possible sequences (M = male, F = female):

  1. MMMFFF

  2. FFFFFF

  3. MFMMFM

Are these sequences equally probable? The intuitive answer is, “Of course not!” but that is false. Because each event is independent and the results M and F are both (approximately) equally likely, all possible sequences for the six births are as likely as any other. Now that we know that this conclusion is true, it seems counterintuitive because only the third sequence appears to be completely random. Our minds are built with associative machinery that continuously seeks causal relationships, and this tendency leads to serious error in our evaluation of sequences that are truly random.

We are hunters of patterns, believers in a coherent world in which regularities (like a sequence of six girls) are not accidentally produced, but rather the effect of a particular cause or someone’s intention.

Fourth Case:  We are willing to risk more when it comes to losses than gains.

Situation 1: Imagine a group of people where each one has $3,000 and you give them a choice between:

  1. Receiving another $1,000, or

  2. Flipping a coin and playing the $1,000 for double or nothing: if they win they’ll receive an additional $2,000, but if they lose they get nothing.

What would you choose?

Situation 2: Imagine a group of people where each one has $5,000 and you give them a choice between:

  1. Giving up $1,000, or

  2. Flipping a coin to play $1,000 for double or nothing:  If they lose, they give up $2,000, but if they win they don’t lose any money.

What would you choose?

Most of us in Situation 1 prefer option 1 and most of us in Situation 2 prefer option 2. The interesting thing here is that the odds of the four options are identical, but differ considerably in our minds. We are more willing to take a risk when it comes to LOSSES and are more reluctant to take a risk when it comes to benefits.

The fallacy of planning

The fallacy of planning in one manifestation of an omnipresent optimistic bias. Almost all humans see the world as less harmful than it really is, our skills better than what they really are, and our goals easier to achieve than they really are. We also tend to exaggerate our ability to predict the future, which exudes optimistic overconfidence.

When we complete a successful project, we assume that it was due to our accurate and detailed planning of controlled variables. We forget the random variables that impacted us positively. We assume the cause of success was within the plan, and we are the performers.  

When we finished a project and it was unsuccessful, we assume that this was due to the presence of external uncontrollable variables, not foreseen from the beginning which affected us negatively. The cause of failure is out of our hands, and we are not the performers.   

Agile methodologies mitigate these biases

Having raised the existence of these two cognitive biases (the emotional side of our decision-making and the fallacy in our planning), we see two aspects of Agile methodologies that make them in the most effective way to mitigate the biases: valuing people and response to change.

By realizing that our decisions are more emotional than they are rational, we place more value on individuals and their interactions than we do tools and processes. This allows us to communicate more empathetically and understand the emotion behind our choices.

Regarding the fallacy of planning, by putting more value on response to change, rather than following a plan, we can better detect the random variables that may arise and impact the results.

In this way, we can realize the importance and value that Agile methodologies have in reducing the noise and deviations that may occur during the development of a project.

Sources

KAHNEMAN, D. (2011) Thinking, Fast and Slow. Debate Editorial.

About the Author - Walter Abrigo is a Managing Director at Santex. In addition to his large academic career, he possess market expertise in several organizational processes such as management control, change and strategy, recruiting and staffing as well as performance and engagement.

You can read the spanish version of this article published in “Pulso Social”.