Thought Flow

Tag: decisions

  • People Debt

    noun, Definition:
    Unwillingness or resistance to change in the context of organizations, application design and development, when the change is objectively or arguably positive for the organization.
    From the David Dictionary :-)

    Deal with the tech debt
    Deal with the tech debt by Dafydd Vaughan (CC-BY-SA)

    Imagine a house in need of renovation. You can continue to paint the walls over and build new extensions, but at some point, the foundation needs an overhaul or you risk having to tear down the entire house.

    Tech debt is like that. As an application grows, some old parts inevitably start to get outdated and in need of repairs. The biggest problem in application development is often not tech debt itself though. A lot of the time, people are the problem, not the code.

    I recently had a conversation with a good friend about one of those little conflicts that happens at work sometimes. In this instance, my friend was trying to optimize a process that was rather slow and costly for the company. Apparently, this rubbed a manager the wrong way and they basically told my friend to stop making things more efficient. I only know one side of the story, but the situation sounds familiar. It is a symptom of People Debt.

    People Debt is not about competence. It is about unwillingness or resistance to change. “We have always done it this way” is a common quote to hear in an organization with high people debt. Change is difficult to handle, even if the change is objectively for the better, e.g. more happiness, more profits, less complexity etc. When you combine people debt and tech debt, you get a very bad cocktail. This cocktail is often called Corporate Software, but it can also happen in smaller organizations.

    I do not know exactly what leads to people debt, but it probably has a lot to do with pride and fear of looking bad in other’s eyes. I can relate to that feeling. It does not feel good when one’s decisions are being challenged and this often leads to defensiveness. Another part of the problem might be a consequence of “normal” power struggles. For example, encroaching on the area of responsibility of someone else.

    I think one of the first steps to avoid people debt is to create a company culture where people feel comfortable and secure in their position in the company. Insecurity leads to defensiveness. I also think it is important to encourage open and positive collaboration between different areas of responsibilities. The best results usually come from team efforts and not a “me” effort. Finally, encouraging people to not be complacent and instead challenge the status quo from time to time also helps.

    As always, the most difficult change to make is to ourselves. Defensiveness and insecurity are natural feelings to have. But I do believe that we can tame those emotions when it makes sense. When someone tries to help us improve in any way, it is easy to dismiss and defend, and much harder to listen, accept and maybe even learn something new. This goes for everything in life by the way — not just my tech bubble.

  • Historical design decisions and consequences

    Douglas Crockford discovered JSON and he also wrote a reference implementation for JSON in Java. One of the great stories I heard him share was on Hanselminutes episode 396: He was contacted by some developers that were getting syntax errors while parsing JSON using his reference implementation. It turned out that they were transferring JSON documents more than 2GB in size but the Java implementation was using a 32 bit integer to keep track if the number of characters in the JSON document. The maximum value of a 32 bit int in Java is:

    2^31-1 = 2.147.483.647 ~ 2 billion = 2G

    So because 2GB of data has a higher number of characters than can be stored in a 32 bit integer, that was obviously a problem. As Douglas Crockford says in the podcast, he had no idea that anyone would ever use JSON to store so much data yet it happened anyway and all of a sudden it was actually a bug.

    Historical design decisions and their consequences for modern day computing are very interesting and I recommend listening to the entire Hanselminutes show through the link above. I just wanted to share a recent example of the same kind of problem. Here is a screenshot from the landing page for Rocksmith (a guitar hero kind of game but with a real guitar):

    Rocksmith splash screen

    The interesting part of this screenshot is the highest arcade score. It is exactly the maximum value of an int (2.147.483.647). I do not think it is a coincidence. I think the Rocksmith developers simply did not think that anyone would ever get more than 2 billion points in the arcade game and it was probably a fair guess. I could be wrong of course, but it is still a good reminder that even small decisions like choosing a datatype to keep track of a score has consequences for the software we produce.

  • Lucky decisions

    Most people make lots of decisions every day. Some are tougher to make than others and some are more consequential than others. One of those small everyday decisions recently made me think about the cost and how much we depend on luck to affirm that we did something right.

    A story

    Here is a little story that started my thought flow about decisions:

    I take the train to work. It takes 35 minutes when it is on time. Yesterday, there was a signal failure somewhere between my departure and destination stations so the trains could not run. In my case, I had the following options:

    1. Skip work.
    2. Wait for the trains to start running.
    3. Take the car instead.

    1. was not an option but how to decide between 2. and 3.? Taking the car would mean getting to work with only a small delay but it would cost extra highway tolls (The Ă–resund Bridge) and parking, a total of about $90. Waiting for the trains to start running would mean an unknown delay, potentially leading to lost work and thereby incurring an indirect cost, especially since I get paid by the hour and my hourly rate is slightly higher than the cost of driving.

    If we ignore the much higher health risks involved with car driving compared to taking the train, the decision depended on how long I estimated the train delay would be. Since I had experienced signal failures before and they often take between two and three hours, I made an informed decision to take the car.

    It turns out, it was a bad decision. The trains started running just when I had gotten half-way across the bridge. It felt bad to be wrong and it came with a small cost.

    Luck

    Decisions and luck are often tied together. In the story above, I highlighted the words “unknown” and “estimated” because a lot of the tougher decisions in life also have unknown factors and are based on estimates. And even though we make “informed decisions”, there are a lot of outside factors that we cannot control and that have an impact on the outcome of our decisions.

    I consider these factors to be luck in both a good and bad sense, depending on the outcome. In the big picture of life, luck has a huge role to play but it is easily forgotten, ignored or overlooked.

    For example, some successful people might say that their success is well-deserved and earned entirely by hard work and being smart but they forget to factor luck into the equation of their success. Bo Peabody (internet millionaire from the nineties) wrote a book about entrepreneurship and luck called Lucky or Smart? and I think the following quote sums up his points nicely:

    Was I lucky? you bet your ass I was lucky. But I was also smart: smart enough to realize that I was getting lucky. — Bo Peabody

    For me, the fact that I am even able to write this blog post shows how lucky I am. Sometimes, I even feel like my life is just a long series of lucky streaks. Realizing this helps me sympathize with people that have had much less luck in their lives. Poor life conditions are often not self-inflicted but the consequence of decisions that suffered from bad luck.

    In the end, I think the best we can do is to try and acknowledge when we are actually being lucky and take advantage of those situations when they arise. But of course, that is easy to say for a lucky person like me.