Blog

The Concorde Fallacy

By Annett Koegler, Co-founder at Santex

Why we finish movies we aren’t enjoying, stay in bad relationships, hold on to investments that are underperforming.

 

When you lose something permanently, it hurts.

In order to avoid this negative feeling we do irrational things. You probably have been to a restaurant and ordered something terrible, but you ate it anyway. You didn’t want to waste the money, so you suffered through it. Or you went to a concert even though you did not feel like or something else was more interesting. You still went in order to justify spending money you knew you could never get back. If you can identify with any of these stories, you fell victim to the sunk cost fallacy, also known as the Concorde fallacy.

The Concorde was a joint development program of the British and French governments that continued when the economic benefits of the project were no longer possible. It was designed to be a supersonic passenger aircraft but its lasting legacy resides mostly in game theory, where it has been adopted as a description of irrational behavior.

image-concorde presentation

The fallacy is known for valuing a project based on how much you’ve invested, its “sunk costs”, rather than on its real present value.

If its value is negative and future costs outweigh future benefits, you should abandon it, regardless of how much you’ve already invested. No decision can influence what you’ve already spent, and only future costs and benefits should be allowed to affect decisions.

It is difficult to overcome our own irrationality, we take general good rules and misapply them. We tend think of money we’ve already lost as being ‘still on the table,’ and if only we increase the commitment, we could get it back. To leave would force us to admit our mistake and deal with the cost.

“Pride goeth before destruction” - Proverbs 16:18

Why?

One explanation is the reward that is placed to fall pray of the fallacy by our institutions. In politics for example we do not pay the price for being wrong individually, since not one person decides the election. We usually make voting decisions that are biased and ill-informed. Unlike politics, the market does often punish those who fall for the sunken cost fallacy. Companies are rewarded for overcoming people’s biases, while vote-seeking politicians are rewarded for gratifying them.

Another explanation is loss aversion. From a psychological point most people prefer to keep their losses low, even if it means enduring a bad experience.

We humans are unique. We like to hang on to investments that we know are going to fail, in an effort to recuperate the money already invested.

We stay in careers that make us unhappy, since we are already with the company for 10 years and it has to get better as some point.

We don’t realize that the time and money you’ve sunk is irrelevant, because it is a backward looking decisions.

The exact reasons why people pay attention to sunk costs are not clear, but the smartest choice is most likely to walk away and cut your losses, something most are not will to do. Our decisions should be for the future and not for justifying the past.

“After a crisis we tell ourselves we understand why it happened and maintain the illusion that the world is understandable. In fact, we should accept the world is incomprehensible much of the time.’” -Daniel Kahneman

About the Author – Annett Koegler is the co-founder of Santex. Former web developer and now managing the global financial affairs of Santex. Growing up in Communist East Germany, building a company in the United States, Argentina and Peru, and living across multiple continents, her life is far from basic. If you can’t find her behind her desk or on the next airplane, she is running, paddle boarding or exploring some undiscovered parts of this world.

5 WWDC ’16 Announcements Every Software Development Company Needs to Know

By Coleman Miller – iOS Developer at Santex

wwdc16

Apple made a lot of announcements last month in its annual World Wide Developer Conference, and introduced the latest versions of its operating systems and developer tools. Here is a breakdown of the most important announcements that will affect software development companies moving forward.

1. SiriKit

In my opinion, this is the most sought-after functionality developers and clients alike have requested over the years. Well, its finally here. Apple is providing a public API so third parties can develop iOS extensions that trigger in response to Siri. The only drawback is that it is limited to the following categories:

  • Audio or video calling
  • Messaging
  • Payments
  • Searching photos
  • Workouts
  • Ride booking

In addition to these new features, its worth mentioning that Siri already supports automotive control features with CarPlay, and HomeKit has allowed allowed Home Automation with Siri since iOS 8. This new API is going to help usher in a wave of innovation and new categories of mobile apps we haven’t seen before. It will also greatly improve the UX of existing apps like Uber and WhatsApp.

2. Swift 3

Although this should be #1 on this list, I believe Swift will bring more changes to software industry in the long term, but short term, Swift 3.0 is a huge improvement from 2.3. One of the biggest breaking changes is Apple adding “Swift Overlays” to its frameworks (some of which were originally written in Objective-C in the 90s) to make Swift a first-class citizen for iOS development. Another breaking change that will affect every single iOS app (with any Swift code), is the move by Apple to forgo classes in favor of structs and value types in its Foundation framework. This is more than a simple API change, it’s in fact, a huge paradigm change for current Apple Developers and programmers coming from other languages like Java, C#, and JavaScript. C developers should feel at home though. Unlike last year, Apple is letting developers chose between Swift 3.0 and Swift 2.3 for publishing apps to the App Store, so developers can take their time migrating to the new version of Swift.

3. Home App

When HomeKit was announced in iOS 8, it took a while for companies to make their existing IoT products HomeKit-compatible. Fast forward 2 years, and now HomeKit is a first-class citizen of iOS, even shipping a beautiful `Home.app` on your home screen. HomeKit’s goal is the unification of IoT and Home Automation products by adopting an Apple-defined protocol so they can easily talk to each other. This allows you to control the lights in your house via Siri, and setup home automation rules (Apple calls them “Scenes”) similar to what IFTTT does with apps. While Apple has accomplished this goal protocol-wise (by providing both HTTP and Bluetooth variations of its HomeKit Accessory Protocol to encompass all manner of devices), besides the Siri integration, Apple provided no user interface for HomeKit, and on the app side, that experience was fragmented. With the new Home app, centralized home automation is easier than ever, and you won’t need to download the specific third-party apps for each HomeKit accessory you purchase. This should boost HomeKit’s popularity and demand with hardware developers.

4. WatchOS GPU-accelerated Games

WatchOS is in a special category of iOS development due to the lack of native APIs like OpenGL and UIKit. While most attribute the App Store’s success to the proliferation of mobile games, that innovation and boom would have not been possible had the iPhone only allowed Web apps like Steve Jobs originally planned. Due to the issue of battery life, the Apple Watch provides a very limited API for native apps, in fact, its more limited then making an average website. One way Apple wants to lure developers to its WatchOS platform is by allowing them to make OpenGL accelerated 2D and 3D games with its SpriteKit and SceneKit frameworks. Since this is what many developers have asked for since day one, it will promote a boom of WatchOS games, like we see on the iOS and tvOS platforms. One drawback is the fact that those platforms can use OpenGL and natively port their code from Android, to iOS. WatchOS game developers will have to rewrite their rendering code for Apple’s platform.

5. Message and Map Extensions

With the introduction of iOS extensions in iOS 8, Apple has allowed third party apps to embed a part of their app in Apple’s stock apps (e.g. Contacts, Photos) and other third party apps. Now in iOS 10, developer’s can write extensions for the Message and Map stock apps. This will allow users to use apps like Uber and Yelp in the stock `Maps.app` without having to switch between contexts. The Message extensions allow all manner of custom content in the stock iOS messaging app, again, allowing for a new category of mobile apps.

About the AuthorColeman Miller is an experienced iOS Developer at Santex,  passionate about his work.  Coleman is continuously learning and training to investigate new technologies.

Key ingredient to success: being stuck with lazy workers

By Annett Koegler, Co-founder at Santex, Mentor at Incutex

We all remember at least one of those moments when traffic seemed to be backed up for no reason. When you finally pass through the cause for all of this commotion, you find a small road construction. One worker is digging furiously in the hole and three or four coworkers are chatting and watching on. What follows next is the classic car conversation, “Really, do they need that big of a ‘mental’ support team?”road-closed-excused-from-work-300x289 (1)

Let’s look a little further, at your office. How many coworkers do you know that hardly ever work while you run behind from one meeting after the other, from one deadline after the other? They seem to have endless time talking to others about life, drinking coffee, and staying up-to-date on Facebook.

It turns out that we are not alone – the same scenarios happen in the insect world. To be precise, in ant colonies, according to Eisuke Hasegawa, a professor at Hokkaido University in Japan.

On average about fifty percent of ants are absolutely doing nothing. They’re resting, grooming, or walking around.

How can colonies with such inefficiency survive and thrive? However, Hasegawa’s study, which was published in February 2016 in Nature, shows that colonies with a significant percentage of inactive workers are actually more resilient. They benefit from a reserve workforce to replace tired worker ants.

“In insect colonies, some tasks are considered to be so critical that they must be performed continuously. Once a catastrophic disaster happens, all active workers are to become completely fatigued simultaneously, so that no tasks can be processed by these active workers. If there are no inactive workers, no worker could engage in such crucial tasks, resulting in serious damage to the survival of the colony. However, if there are sufficient numbers of inactive workers with very high thresholds for task stimuli, they are capable of performing those crucial tasks when all active workers become completely fatigued due to the disaster. Then, the colony is effectively buffered from experiencing such dangerous conditions. Thus, colonies with a high proportion of inactive workers are likely to persist considerably longer than those without such a ‘failsafe’ system, even though the short-term productivity of such colonies becomes much lower than those with no inactive workers.”

This can also be applied to humans if we use the inefficiency as a backup power. A wise person once told me, if you want your project to be done on time and the most efficiently, give it to the laziest member in the team.

IMG_1844

In today’s culture, we value work that is done fast, but is it better?  You receive an important email in your mailbox and you want to answer it right away to show how productive and fast you are. How many times have you reread that email later and thought of all the things you forgot to add?

Thoughts and analyses need time, and for that we have to slow down, focus, and gain perspective. Otherwise we burn out and won’t have an inactive “ant” there to help us.

And in the case of the construction site, maybe you do need 4 workers to dig that hole. Imagine having to dig for hours to repair the problem and put the hole back together… alone, in 90F heat and no shade…

About the Author – Annett Koegler is the co-founder of Santex. Former web developer and now managing the global financial affairs of Santex. Growing up in Communist East Germany, building a company in the United States, Argentina and Peru, and living across multiple continents, her life is far from basic. If you can’t find her behind her desk or on the next airplane, she is running, paddle boarding or exploring some undiscovered parts of this world.

Creating a Work/Life Balance as a Female Tech Executive

In celebration of Women’s History Month, March 2016, we sat down with Co-Founder and CFO of Santex, Annett Koegler. Growing up in Communist East Germany, eventually pursuing a career and starting a company in the United States, and raising a family across multiple continents, Annett’s life has been far from basic. Here she shares with us her perspective on being a female executive in the tech industry and balancing its demands with family life.

Jennifer Eckley:  To start, please tell us a bit about your story about how you first became interested in technology.

IMG_2152Annett Koegler: Back home in Germany, I was studying International Business Management in a 4-year program, part of which involved traveling to work for a company. Having spent a year in the U.S. as an au pair after high school, I was excited when they gave me an internship at a small bank in Sacramento, California. Little did I know that this company didn’t have experience hiring interns! I arrived, and the manager told me, “Well, we don’t know what to do with an intern, but we have this software that we purchased and we don’t know what to do with it. Maybe you can figure it out!” So he gave me the massive manual for this mapping software that tracked data from customers, and I started reading through… and I liked it! The information just clicked naturally with me. Within two weeks I’d figured the software out and it really helped the company. I was so excited that I went back to Germany and found someone who could teach me how to program and use HTML code.

I’d met Juan [Santiago, CEO of Santex] during the student exchange, and we agreed to go back to the U.S. He wanted to pursue his own business idea, but it was the late ‘90’s and he found that a lot of his clients wanted websites. So he came to me and asked me to build them! So I learned as I went and found it really fun, and that’s how Santex was born.

JE: What challenges have you faced transitioning from software developer to owner of a company to CFO?

AK: The challenges have been almost constant from the beginning. Everything I’ve done for the company is kind of from ground zero, up, and I’ve learned a lot on the way. When I became pregnant with our first child, Farahn, Juan had the idea to hire developers in Argentina, so I’d be able to spend more time with the family. This also helped us take on a greater workload and gain more clients. During that time I became more of a Project Manager to coordinate work between Argentina and the U.S. and monitor project timelines. Then with our second child, Johan, I “retired” for a couple of years to focus on raising the kids. Afterward, I was anxious to go back to work to expand myself personally and intellectually and learn new skills. But I quickly realized that being out of technology for four years is a lifetime! So much had changed. I realized that with the family, I couldn’t dedicate myself full time to the work and meet important deadlines, so we re-evaluated where I could provide the most help. And I made the full circle back to the business management I’d been studying and took on the role of CFO. Having been with Santex from day one, I know it as if it were my child, so I feel like I can see what it needs.

JE: I remember you telling me when I first entered the company that stress can be a good thing, and that you do some of your best work under stress. Can you expand upon that point?

AK: When you stand in front of something and don’t know where it’ll take you because you can’t see the road ahead, that’s a stressful situation… but that’s where creativity comes in. I don’t like everyday to be the same with the same routine. When that happens, things are clearly working, but you’re not creating anymore or being challenged. Stress can be nice because it pushes you beyond your comfort zone.

JE: Have you noticed any challenges particularly related to gender?

AK: I don’t know that any of them have been specifically because I’m a woman. For me, I don’t think it’s been any real advantage or disadvantage. When meeting with clients, I’ve never felt that I haven’t been taken seriously simply because of my gender. In the early years of the company, I noticed a certain respect was automatically given because I knew about technology, which impressed people.

JE: In working across countries and cultures, have you noticed different ways in which female executives are treated?

AK: There is a difference most definitely. I feel the most equally treated in Lima and Cordoba for who I am and what I do. In the U.S., I’ve observed other women executives needing to be extra aggressive to get noticed or treated as equals to their male counterparts. Female programmers stereotypically had to look more “nerdy” from my perspective. Those images needs to be portrayed so as not to be misunderstood. Women are so concerned about the stereotype that it can become consuming. In South America I don’t feel that way. Women celebrate being women and express themselves as such in business and in private.

JE: Have you ever had issues sharing ownership of the company with a male executive?

IMG_2635-2_FotorAK: I think the key is finding a person who is compatible with who you are and what you do. With Juan, I’ve been really lucky that our areas of expertise complement each other. Even as my responsibilities changed, he did a really great job keeping me in the loop with the company so I never lost touch with what was happening. I’d come back and it was as if I’d never left! I think if we were working and competing in the same area of the company, that might make things different. But our work is compatible.

JE: Was balancing motherhood with a growing career a challenge?

AK: Part of being a woman is the nurturing instinct, and many women are forced to leave careers to focus on family. I had a choice, which was very liberating to me as a woman. Not everyone gets that. I’ve had the flexibility to dedicate time to both my kids and work, which has worked out really well.

JE: You have both a young son and daughter. What have you told them about pursuing their dreams and/or owning a business?

AK: Juan and I want to sell the business before our kids are old enough to get into it, so that they can start something of their own! We don’t want Santex to be a traditional family business. I want the kids to be able to pursue their own interests.

Right now, Farahn’s dream is owning a horse ranch. What does that mean for her future? I don’t know! But I don’t want to pressure her into any one direction. Kids should be kids and be out playing in nature. The pressure will come soon enough. I want them to be happy, they don’t need to make Juan or me happy. If I’ve achieved that as a mother, then I’ll be happy!

Santex’ Women in Tech

In celebration of Women’s History Month and International Women’s Day, Santex asked a few of our prominent female engineers about their experience being a “woman in technology.” Each one has her own perspective, but together women like Jimena, Gabriela, and Ashley are fostering greater opportunities for women in the tech industry.

What led you to pursue a career in software engineering?

JImena-2Jimena: Since I was very young, I used to go to my dad’s office, who had always been working in the IT industry and I really enjoyed that time with him, pretending to be part of that environment. Also at home, I admired the conversations between my dad and my brother about Engineering and Math and wished I could be part of them someday. Later on, I loved to spend time on the web so I did some research about the majors available at my city’s university and finally found Systems Engineering, which end up being much better than I expected!

Gabriela: I entered this world through gaming. It’s not something I planned since I was little though. After trying several different jobs I started testing games and I found this place was a good fit for me. I love technology and I felt I could project myself and grow as a professional. Since this is an ever-growing area, I feel excited being part of new developments that might shape the future.

Ashley: My father worked in IT since his early years. He was born and raised in San Francisco and when he was a teenager he met a guy that showed him one of the very first computers. He started working in the IT business when he was still finishing school. My house was always literally filled with computers; old ones that did not work that he was trying to fix, and the new ones he would buy as soon as they were out in the market. When I was 10 he gave me a book with small programming exercises for kids: something like, “Quick Basics for Kids,” and it was something that we would work on together.

What’s the biggest challenge you have faced as a woman in tech?


Jimena: I’ve had many challenges at work, but I don’t consider them to be because I’m a woman. The only thing I can think off is… given the fact that we have to work with people around the world, sometimes I’ve faced some cultural barriers that were then knocked down after a few times working together.
Since we are a minority in the industry, I believe we are welcome to offer a fresh perspective to the business. I think that teams with the best results are those that draw multiple approaches, including ours!

gabriela-2Gabriela: I haven’t had technical difficulties and the road has been pretty straightforward in that aspect. One thing I would mention is that working in an environment where a high percentage of the employees are men, I’ve had always worked with good people and have always been treated well by my co-workers. But what sometimes can be challenging is tolerating sexist comments that are commonly said as jokes. There’s a persistent stereotype that women aren’t capable of logical thinking while the reality proves that we are just as capable as men. That notion luckily is slowly fading away from the cultural mind. I believe we will get to a point where your gender won’t matter, only your knowledge and abilities will.

Ashley: I am not sure I can say I’ve faced challenges for being a woman. The only thing that was hard was getting through college. Some male teachers were very “open” about showing their dislike for females in their classes. But luckily that was the exception and not the rule. When I started working, at the age of 21, I discovered that there were a lot of other women in IT and that we were treated the same as the men. My bosses and partners have always been very friendly, polite and respectful.

What advice would you give to young girls wanting to enter the tech world?

Jimena: One of the best parts of working in IT is the whole range of vacancies within the tech sector offering a wide variety of opportunities available for women to challenge themselves in different ways.
My best advice is 1. Never stop learning – everything changes so fast and we need to always be prepared if we want to be prevalent in this industry. 2.Take risks – it may feel awkward in the beginning, but it starts to feel natural at some point. Try different areas, clients, projects, until you find the position that you love!

Gabriela: One thing I particularly love about this career is building things and then seeing them working. It’s a fantastic feeling! I would advise young girls to follow your passion, never listen to discouraging comments and think big, REALLY BIG! Anything can be achieved with hard work and imagination. All we learn in this career are just tools to give shape to our ideas. Imagination is a big part of what we do and is what we also call ‘thinking outside the box’. Never let go of that thinking!

ashley-2Ashley: I would tell them that getting their college degree is probably one of the hardest parts but they should never give up. Fortunately, in this business, it is possible to work and study.
And then, it is also important to continue studying after getting the degree. Technology changes everyday, the business changes everyday and in order to be a good professional, it is important that you keep up to date on the latest frameworks, languages, and tools.

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