Regret and Opportunity

Psychology of Motivation I apologize for the lack of updates. A lot has happened since my last post, the lawsuit that I was involved with was finally settled. It wasn’t settled favorably, and I ended up losing most of my security deposit anyway – a large chunk of it to attorney fees. The seller (who I assume spent just as much on her attorney) probably ended up close to break-even as well. It’s unfortunate that she didn’t come to her senses until 2 years into this ordeal, after the fees started to outweigh the amount disputed over.

Perhaps I was wrong to fight her. Perhaps I should’ve just walked away. After 2 years of dread and stress, I ended up losing almost as much as if I simply gave up on day one and let her have the entire amount. I was ready to compromise, I was ready to split my hard-earned savings in half with a stranger just to preserve something, she was not. As a kid I was told once “Don’t get into an argument with an idiot, they’ll take you down to their level and beat you with experience”. Now I knew what that meant.

This was the most unpleasant experience of my life, 2 years of dread where you know that you’ll lose money, you just don’t know how much. I’ve never felt such disgust for a person before. Not hate, not anger, but disgust. With several million in assets (according to her own agent) from her husband’s estate, she decided that the best use of her time and resources was to go after me (because it’s my fault that flood laws changed as I was buying the house) for what was effectively pocket change to her. To me on the other hand, this was a 3rd of my savings, hence the panic I went through. The rest I already mentioned before. “You could get your deposit back if we end up in court”, my attorney told me, “but you’ll lose more in legal fees, don’t throw good money after bad”. That was my justification for wanting to settle.

However, after I was done sulking, I realized that something amazing happened. In these 2 years that the lawsuit lasted I learned more about real estate than most people do in a decade (partially from the lawsuit, partially from absorbing all the books I could get my hands on – determined not to get into same situation again), I learned more about investing than most do in a lifetime (including derivatives, various quirks of US financial structure, strategies and their pitfalls), I bought my first property to rent out, made connections with local and remote investors to do deals with in the future, learned Objective-C and Swift (which I wanted to learn for a while but didn’t have the motivation), wrote an iOS app, advanced to a lead developer at work, read 43 books, and met an amazing goal-oriented girl, whom I still date today.

What happened? I got the gift of motivation. I realized that life was short, that a single event could wipe me out unless I build a financial fortress out of my remaining assets, and that I was already a decade behind great men who realized this in early twenties. I had to catch up. All of a sudden fear turned from a blockade into rocket fuel, all because my perception changed. I still hesitate, I’m still indecisive, but I now realize that doing nothing is rarely the safest choice. The best analogy would be the Slime Climb level of Donkey Kong Country. I still have to climb up, but now I realize that there is rising water below me, and things in it that could hurt me. This is true for all of us, but most choose to ignore this fact until well into our fifties.

Displaced Aggression

Displaced Aggression I’m going through a very tough situation in my life – hence the slower development of Grafpad and RapydScript. I won’t get into the details, but basically I’m being sued over a house purchase that fell through. It’s a very stressful situation to be in, and I don’t believe the other party is enjoying it any more than I do. The question then is, why don’t we just discuss it like human beings?

I tried to reason with the other party repeatedly to minimize damages to both. She is not interested in negotiating, her attorney says “she is angry”. She insists that she wants to recover her damages. I still fail to see what those damages are. The mortgage is paid off, she may have incurred a few hundred dollars of extra utility bills she wouldn’t have paid if she moved earlier. I already offered several thousand to make up for it and avoid headaches, we also suggested that she offer her own “just” amount. She refused, her response was that she is angry and intends to take it to court – a court that will take over a year to get to and is just as likely to rule in my favor as in hers.

As a result of the lawsuit, both parties have already incurred several thousand dollars more in lawsuit fees. What did I do that she is so angry about, you may ask? I simply wasn’t able to complete the transaction due to a perfect storm of unfortunate events (recent change in local laws, problems with the bank due to these laws, as well as misinformation from a third party). Another buyer walked away right before me as well, and the seller was angry with them too. I should have seen that as a red flag.

Why am I sharing this? Because I don’t believe that the seller is trying to make a quick buck off of me. If the goal was to maximize her own good, she would have taken the settlement or offered a counter, minimizing harm to both parties, while still maximizing her gain. That is how rational people think. Unfortunately, it seems like it’s not what the seller is after. She is angry. It’s not her own good or damages she cares about, it’s maximizing harm to me – even if it means incurring the same harm herself in the process. Why? Because she is angry, because she wants to “punish” someone for the pain she feels.

When you think like this, you will eventually find someone to punish. Problem is, you’re punishing another victim, you’re not addressing the real cause of the problem. She was angry at the previous buyer, that same anger was later projected at me, amplified by additional headaches. Why was she angry at me? Because this house was a pain to sell (it was on the market for over a year) and because I happened to be the easiest target in this interaction. When you’re angry, you don’t think rationally. When you’re angry, you’re simply searching for a scapegoat, you’re not searching for a solution. If we asked ourselves “how to solve this problem?” more often and “who caused the problem?” less often, we’d create less stress for everyone and we’d need less lawsuits to settle things.

Business Ping Pong

Ping Pong I used to be notorious at procrastination. I still do it, but I got much better at it. The problem was my thought process. We all think in terms of pain. We avoid new pain or seek to minimize existing pain. Procrastination is simply a mechanism to avoid new pain. What we fail to realize, however, is that same pain dwells in our mind. That mental to do list is eating away our brain capacity, causing distractions from other tasks. It’s a numbing pain that keeps coming back. It’s like storing clutter in your house, where the house is your brain. After thinking about my own procrastination, I realized that the pain of dwelling on a task is bigger than the pain of actually doing the task.

As I started tackling these tasks, it became easier to do them. The hardest part is starting. Indeed I got better at this once I started forcing myself to start. The other trick is that you don’t have to do it all in one go, once you start tackling the problem, it gets smaller. The other side of the coin is addressing tasks that involve other people. We tend to procrastinate our responses until the nagging from the other side becomes severe enough. But what if you were to handle the responses as soon as you can? I recently heard a term for this in a conversation: business ping pong. When a ball comes your way, hit it back as soon as you can. Don’t procrastinate, be the one waiting on others, not the other way around. The sooner you reply, the less time you spend thinking about it, the less clutter you keep in your house.

Bringing a Project to Life

I have always found that building something out of nothing is hard – whether it be a new feature, or a new product. It’s much easier to fix a bug or make an improvement to working code. Yet, I’ve been on some ambitious projects that got done (building a completely new API for a large ad serving company & a radar program that was designed & built from scratch in 3 years, to name the most difficult). Even though many people thought it was a miracle we got these done, I noticed some techniques that were useful in bringing these projects to fruition which apply to open source projects as well.

Before getting started, you must first give up the idea of building a finished product. You need to make something just usable to start. If you have something useable (and useful), people will start using it – and for open source projects, some of those uses will help make it better. After a project is brought to life, it can evolve into something more – a finished product. The difficultly then lies in making that first usable product.

Fail Fast

Nothing has been accomplished yet. You have to start planning and try to eliminate bad ideas before they take up too much time. The most efficient way of doing this is by getting feedback from others. If you find experts, or even just people with different perspectives, they can draw upon their experiences to quickly point out problems, and save you spending days or weeks working on a solution that will never work.

In addition to getting feedback, prototype things and make proof of concept models. Most importantly, don’t invest a lot of time here. You don’t need pretty code – but it should be accurate. The goal is to wrap your head around the problem and discover potential solutions and failures early – not to write something maintainable. The models themselves aren’t important, the data/information you learn from these experiments is what matters.

Build a pre-alpha version

You need to get something working that you can build off of. Most projects have more than 1 component. Even small web apps have a view & controller. Connecting the different parts together is difficult because it is easy to make assumptions about how & what data passed between interfaces.

On the radar system I worked on, many properties of the raw input signal were not planned to be passed along to processes further down the line. But after building the first version of the code, that format of that data quickly changed to include additional information. And after the first version of every component was done, we could look at a display, albeit a very crude one, and see a real object – that is very motivating.

Focus, Iterate & Test

The radar system I worked on was also hard because we were short on time due to an accelerated schedule – time was our most valuable resource. The main reasons we were still able to finish was because the motto of the project was an idea from Voltaire: “perfect is the enemy of good enough”. We were told not to spend any time working on something that already met the specs – we could not spare it. Instead we had to find something that was not good enough, and focus there.

This list of areas we needed to focus became our list of improvements/bugs. We made it past the difficult part of building something from nothing with our pre-alpha version, and now we were working on fixes and improvements – the easy part. After repeating the focus & fix process many times, we got to the point where we had a useable product.

Also crucial here is testing. You need to test so you can confidently make changes without causing regressions. The less effort required to run them, better (automated ;))

Share your project

Alex Martelli gave a talk at PyCon 2013, “Good enough is good enough”. He said, if you make something people need, they will use it, even if it’s not perfect. The catch here is it has to be something people find useful. If enough people use your open source project, some of them will contribute back, fix bugs, and maybe even clean up and optimize code. Even if people do not fix anything, they can file issue tickets. This last weekend we had someone file several issues with example code – perfect test cases.