How An Algorithm I Coded Helped Me Take A Life Changing Critical Decision
Published on August 16, 2020 by Hemanth
--
It all started with me trying to solve a critical problem in my life. I have almost always successfully used the following approach to solve big first-time problems I have faced in my life:
Step 1: Assume that although it is my first time facing such a problem, it is highly likely that someone else has faced the same or a similar problem at some point of time in human history.
Step 2: Look for documentation of at least one person who has faced the same or similar problem. Once found, study and analyse his or her solution to the problem.
Step 3: Reverse-engineer the solution to my needs to come up with my own version of the solution. Then, execute the solution with open-mindedness and assertion simultaneously.
With the aforementioned procedure, I ended-up realising that the scale of my problem was much larger than I had initially thought, and the work done by Ray Dalio in the field of my problem really appealed to me. I could neither find any logical flaw nor any moral or ethical flaw in his ways. As a result, I would like to clearly state that the lion’s share of my own solution is based off of the work done by Ray, and he deserves credit for his brilliant work.
Before I proceed with explaining my solution procedure, I feel that it is equally important to analyse the nature of the problem I was facing. A proper analysis of the problem is half the solution anyway.
The Problem: Facing the consequences of deviating from my own principles and virtues
The nature of my problem was a moral and an ethical one. I was faced with a situation where I had to choose between compromising my own values and principles or to uphold them, but suffer a significant setback in life in terms of my professional progress. This is a classic lose-lose situation. Within this domain, things are never clear, and it is almost impossible to withhold emotions from interfering with a clear logical thought process. It wasn’t always this challenging though. In my quest to find a solution to my problem, I managed to peer into my own past (refer to: Hindsight Bias), only to figure out my own trail of mistakes that led me to this stalemate situation. I will try to share some of these mistakes with you, so that you may learn from mine, and we could try to avoid making them in the future.
Be very wary of micro-corruption
Never, ever compromise on your most fundamental principles and virtues of life! Naturally, one has to reflect deeply upon oneself to establish or realise these principles, and this goes beyond the scope of this post. However, I would say that one can at least start with questions like “What is the one thing I would never, ever do, no matter what the situation?” Possible answers could be “I would never hurt an innocent animal.” or ” I would never drive when I feel sleepy or tired” for instance. Life principles are highly subjective, and everyone has his or her own ways.
Life imposes situations in which we are often pressed to compromise on our principles. Let’s say that you are very tired, and are feeling mildly sleepy, and it is 02.00 AM in the morning. You are with your friends at a party, who are all not fit to drive. They press you to drop them off at one of their homes. This goes against your principle of not driving when you are tired or sleepy, but you eventually give-in to their incessant pressure, and say to them, and to yourself, “This is the first, and the last time that I’m doing this.” And that is the exact moment when the micro-corruption begins. You are beginning to eat away at your own principles. The first time becomes the second time, the second the third, and so on. With each recurring occasion, your moral pillar is quaking. It appears harmless; it appears like each of these occasions is an exception rather than the rule. But if you keep doing this long enough, it eventually leads to a point where you are uncomfortable with your own existence, and this is a dark door that opens into all sorts of psychological illnesses. Let’s try not to go there. It is far easier to tame the dragon when it is a baby dragon (credit: Jordon Peterson). In my case, I didn’t even realise that this was happening to me. I was only able to realise this in hindsight. So, I am in no way saying that this is easy to accomplish, but at the same time, both you and I can try to do our best to avoid this.
Do not tolerate unresolved differences of opinions
Whenever you come across a difference of opinion between yourself and other people, the priorities associated with other events tend to push us from confronting it and solving it then and there. Do not give into this misconception! Spend ample time into achieving synchronisation of understanding each other’s views so that harmony prevails even if the difference of opinion continues to exist. If you fail to do this long enough, it leads to an eruptive confrontation which in turn leads to possibly destroyed personal relationships. You can take a wild guess as to which side of the scale I ended up on.
The Solution: An algorithm
Ray’s fundamental proposal was that no matter how complicated one’s life principles are, they can be written down in the form of algorithm(s). The reasoning behind this approach is that the algorithm would represent the ideal self, and not bend to the whims of emotions that one would be susceptible to on any given day. Now, the approach is NOT configured to help one make the correct decision right away, but is configured to help one make the best possible decision to move forward; a decision that is aligned with one’s moral compass. Based on the consequences of the decision, one needs to loop back into the algorithm, and aim to continuously improve it (this way one’s moral compass also undergoes continuous improvement). In this sense, the algorithm is never really complete, and gets more and more robust and rigorous with time. After a point in loop iteration-count, the algorithm is expected to exceed typical unitary human intelligence. I would not have believed this myself, if I hadn’t seen the proof of concept from Ray. In computer science terms, this is no wonder because the algorithm would grow to a point where it simply becomes capable of doing complex decision making analyses by considering a ridiculously huge number of cases in parallel. A human being would simply not be capable of processing this amount of information in parallel due to sensory input and output limitations. Developing such an algorithm requires an array of skillsets which include (not exhaustive) radical open-mindedness, logical decision making skills, visualisation and synthesis skills, data collection and noise elimination skills, brutal honesty, and assertive boldness.
Development of the algorithm
Getting back to my situation now, I started writing down my problem statement, and the list of life principles associated with it. At this point of time, I was “coincidentally” learning python, the programming language (mostly for fun; I learn new stuff for fun as a hobby). It just occured to me that I could employ what I have learnt so far to write a piece of code that helps me break my stalemate situation of having to compromise on values or compromise on professional progress. It boiled down to two decisions, and a tree of all possible scenarios that could play out. The challenge here was that this required very intense imagination. I was not good with this. I did my best, and outsourced the rest via friends and employing the same three step process I described at the beginning of this post. Herein lies an important point: No human being is likely to be good at all the skills necessary for executing such a complex process. Therefore, I accept my shortcomings, and seek help where necessary. It played out as a bunch of ‘if-then-else’ statements, and without going into specifics, the algorithm resembled the below simplified scheme:
The Code:
The process of developing the algorithm took me about 8 – 10 hours. I also learnt that one always has multiple options, even with perceived ‘either-or’ scenarios. In fact, I was stubborn not to settle for ‘either-or’ scenarios, unless they directly conflicted with my life principles. My inclination towards radical open-mindedness helped a lot. After some very uncomfortable work with my own thoughts, I was able to work out second and third order consequent scenarios, and finally hard coded my own perceived risk rating for each scenario on a scale of 1 – 10.
I then programmed an interactive module into my program, and sent the code to a good friend of mine. He could interact with it in role-play survey style, and had to give his own perceived risk rating on a scale of 1 – 10 for each scenario. He did not see or know that I had given my ratings in the background.
Validation:
At the end of the process, the code wrote out a data file that had all the scenarios and ratings listed, and we averaged our ratings, and the results surprised the both of us. Options that emotionally appealed risky were rated low in rated risk, and options that emotionally appealed safe turned out to be high risk options in terms of rated risk. We discussed validity of the risk ratings in detail, and I made notes as we discussed.
Stress-testing the principles:
After this, I worked on reiterated versions of the same algorithm, talked to more friends, and well-wishers, and started stress-testing my own principles with harsher and even harsher scenarios. I typically used questions along the lines of “Would I execute my decision even if my puppy dog was held to ransom?” to help stress-test. In reality, the questions were more brutal than the hypothetical puppy dog scenario.
The Decision:
Once I had looped it enough times over, and had convinced both myself and my friend over the thought process we had used, I did not touch the algorithm again for a couple of days. After sufficient time, I came back to the algorithm, and went through everything once again to confirm for one final time if it all made logical, and ethical sense. When it all aligned, I executed my decision assertively.
I chose to uphold my principles at the so perceived cost of professional progress. The latest version of my algorithm indicates that I’m actually making professional progress in the long run with my decision (something that I could never see before implementing the algorithm). Time will tell whether this projected scenario comes to pass or not. But I plan to loop real time feedback into the algorithm to make the ground principles more and more robust. The alorithm aside, it is fully within my responsibility to steer my actions in the direction of attaining the projected scenario, as I am the key active component in this whole system.
If anything, for now, this approach has helped me break the stalemate, which has resulted in clarity of thought that helps me proceed in a progress-driven and growth-mindset promoting direction (refer to work done by Carol S. Dweck), both personally, and professionally. If you are wondering about my imaginary, hypothetical puppy dog, worry not! I am pleased to say that my determination not to settle for ‘either-or’ scenarios helped save him. As a final thought, I hope there were insights from this post that you found helpful and / or thought provoking.
I hope you found this article interesting and useful. If you’d like to get notified when interesting content gets published here, consider subscribing.
We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept”, you consent to the use of ALL the cookies.
This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
Cookie
Duration
Description
cookielawinfo-checkbox-advertisement
1 year
Set by the GDPR Cookie Consent plugin, this cookie is used to record the user consent for the cookies in the "Advertisement" category .
cookielawinfo-checkbox-analytics
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checkbox-functional
11 months
The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checkbox-necessary
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-others
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
cookielawinfo-checkbox-performance
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
CookieLawInfoConsent
1 year
Records the default button state of the corresponding category & the status of CCPA. It works only in coordination with the primary cookie.
viewed_cookie_policy
11 months
The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Cookie
Duration
Description
_gat
1 minute
This cookie is installed by Google Universal Analytics to restrain request rate and thus limit the collection of data on high traffic sites.
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
Cookie
Duration
Description
__gads
1 year 24 days
The __gads cookie, set by Google, is stored under DoubleClick domain and tracks the number of times users see an advert, measures the success of the campaign and calculates its revenue. This cookie can only be read from the domain they are set on and will not track any data while browsing through other sites.
_ga
2 years
The _ga cookie, installed by Google Analytics, calculates visitor, session and campaign data and also keeps track of site usage for the site's analytics report. The cookie stores information anonymously and assigns a randomly generated number to recognize unique visitors.
_ga_R5WSNS3HKS
2 years
This cookie is installed by Google Analytics.
_gat_gtag_UA_131795354_1
1 minute
Set by Google to distinguish users.
_gid
1 day
Installed by Google Analytics, _gid cookie stores information on how visitors use a website, while also creating an analytics report of the website's performance. Some of the data that are collected include the number of visitors, their source, and the pages they visit anonymously.
CONSENT
2 years
YouTube sets this cookie via embedded youtube-videos and registers anonymous statistical data.
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.
Cookie
Duration
Description
IDE
1 year 24 days
Google DoubleClick IDE cookies are used to store information about how the user uses the website to present them with relevant ads and according to the user profile.
test_cookie
15 minutes
The test_cookie is set by doubleclick.net and is used to determine if the user's browser supports cookies.
VISITOR_INFO1_LIVE
5 months 27 days
A cookie set by YouTube to measure bandwidth that determines whether the user gets the new or old player interface.
YSC
session
YSC cookie is set by Youtube and is used to track the views of embedded videos on Youtube pages.
yt-remote-connected-devices
never
YouTube sets this cookie to store the video preferences of the user using embedded YouTube video.
yt-remote-device-id
never
YouTube sets this cookie to store the video preferences of the user using embedded YouTube video.
Comments