Updated: Sep 7, 2022
Instead of me opening my blog with complaints, allow me to actually be a bit more productive first this time. Don’t worry, I have saved the scathing indictments afterwards. You will understand why I put this advice first soon.
Always think in terms of probabilities, distributions, and payoffs
I always liked this one because this applies in so many scenarios. It’s nearly impossible to predict the future, even in engineering where code and the writing of it is relatively deterministic compared to other disciplines. The problem is that despite this, there is a significant amount of tail risk that we incur.
For instance, suppose someone asks you to scope a task or bug. Let’s see how thinking in terms of probabilities can help us for projects instead of trying to be exact.
In general, projects have a long skinny right hand tail of distributions for time to completion. That is, any project is far more likely to drag on for much longer than anticipated than to complete before the deadline. If the average time to finish a project is 2 years, you are much more likely to take 3 years than you are 1 year.
The reason this occurs is because many projects tend to drag on due to unforeseen circumstances and issues. It is very rare that a project receives a tailwind and a reduction in requirements and effort. Also implicit in this is that your true average is farther out than the median. In other words, most people think they’re dealing with a normal distribution, not a long tailed one, and confuse median time with mean time. The consequence is that calling the time wrong has massive consequences.
If you disagree and think that things follow normal distributions, here’s a great way to visualize that mistake: going back to our 2 year project like a codebase migration, assuming a normal distribution would imply you are just as likely to finish the migration in 3 years 11 months as you are in 1 month. Let me know when you find someone who can migrate the Facebook messenger codebase in that time.
So how might we apply this to the real world and make this actionable? That is, how might you propose and think about timeline projections for a project?
Person 1 says it will take him an average of 2 weeks and commits to that. But is that 2 weeks on average or the median? But most importantly, he is wrong for being so confident in such a precise answer. That means that he will take more than 2 weeks 50% of the time. The penalty for calling this wrong is that the project will drag on much longer than expected. This can be even worse if you make optimistic projections about the task at hand (ease of understandability, risk of regressions, etc.)
Person 2 is more conservative. He decides that it will take him 8 weeks to account for all of this and gives a majority of the worst case scenarios. The manager isn’t happy: how can a simple small 1 class take someone 8 weeks to write? There is always the random off situation that a company lays off 25% of its work force and the 8 weeks will be deemed the correct amount of time. But going through life assuming the worst case scenario is hardly a winning strategy.
Person 3 says “I’m reasonably certain the task will take me 1-3 weeks.” This 1-3 week range represents his p25-75 expectation. The expectations change and the manager can reasonably expect the task to be done in 2 but with some wriggle room. The manager also is not anchored to a firm commitment like the other 2 and understands this person is giving an estimation and there is a chance it can be more.
Out of the 3 cases, person 3 has come up with the best answer.
Here’s another thought exercise. Suppose you undertake the project and you find that your blast radius (outside code affected) is much higher than you anticipated. How would you evaluate that situation?
I’ll leave that answer to you.
You cannot judge an action by its outcome.
This is very much along the survivorship bias that I’ve talked about in previous blogposts. But in general, an action cannot be deemed good or bad simply because of the result. In many situations, there are thousands of variables at play that can swing a result one way or another and to simply say that a reasonable and optimally planned action was wrong just because it didn’t work out is missing the point.
Let’s take an example: Dota. There is a legendary play in The International 8 (Dota’s equivalent of the world championships) that turned a game losing fight into a game winning one, causing momentum to swing away from LGD and subsequently the gold medal.
Notice that as Ceb (playing the large red looking hulk, Axe) tries to get in and out with his invisibility, he is constantly attacked by Enchantress (the bambi looking hero). This prevents him from blinking into the fight and become a taunting tank. But the moment Ceb is sufficiently separated from the fight, LGD forget about the Axe and turn on the rest of OG and begin to wipe them. With the final kingpin carry in danger, things look nearly hopeless. Then, all because nobody was checking Axe, Ceb manages to get a blink into the middle of the LGD team and saves the carry.
This moment decided the entire game. Does that mean LGD did not work as hard as OG leading up to the tournament? No. Does that mean LGD did not play well? No. Does that mean LGD made the wrong decision at that moment? Perhaps. Does that mean that the draft was bad? Not necessarily. There are thousands of factors here that can be debated but for whatever reason, one second decided a crucial game winning fight that changed the fate of LGD.
This doesn’t just happen in esports. There are thousands of hidden factors in real life as well that can cause not just a extreme reversal of events but also an implicit systematic bias and any one of them could change history forever. Warren Buffett would not be so successful had he not had Benjamin Graham, the father of value investing, as his mentor and boss. Malcom Gladwell’s Outliers and the entire field of “what if” history goes in depth into this.
If you need more examples, here are a few brought to you by Will McAvoy from The Newsroom:
Strange, isn’t it? For all our emphasis on effort, individualistic achievement, and perseverance, almost everything that happens to us in life is out of our control. No matter how hard we work at something, it is the fundamental nature of the problem and the circumstances we are in that dictate a good amount of the result.
We can even see this in the real world and in observable actions. One quote from Warren Buffett:
“When a management with a reputation for brilliance tackles a business with a reputation for bad economics, it is the reputation of the business that remains intact.”
In other words, if you work very hard at a very difficult and bad problem, you’re basically sentencing yourself to rolling a boulder up a hill forever like Sisyphus. One huge exercise in futility where the result is most likely already decided for you.
It is only with the benefit in hindsight and after repeated attempts with a wrong assumption can we even begin to understand that that assumption was incorrect. Or, in this case, we were tackling impossibly hard problems that we had mistakenly believed to be easily solvable. While visible in hindsight, it may not have been in the moment.
Conversely, that must also mean that, to some degree, a lot of what we do is determined by things out of our control. That does not mean that effort does not count. After all, a glass of water does not pour itself.
The proper way to think about this is that a person is more likely to succeed the more attempts he tries and the smarter his attempts become. Learning from mistakes is a great example and those aversion to past mistakes, provided the learning is correct, will allow the person to act more efficiently and accurately the next time.
It is for this reason that you take every reasonable step to do everything you can to achieve the best possible result. The result is simply a combination of having the right actions and right timing with the result more influenced by individual actions than others. On one end of the spectrum, you have physical objects around you where nothing happens to them unless you act upon them. On the other end is the lottery. Investments are pretty close to the lottery end of the spectrum where being invested in the right stock at the right time can outsize your returns and give gains that handily beat years of proper painstaking research.
Fortunately, in engineering, determinism is less of a factor because the problem space we deal with is a bit more deterministic. But in sufficiently complicated codebases, problems resemble poker, not chess and decisions on how a project should progress are often decided in a moment. I think we often forget that as an engineer: sufficient complexity renders our understandings less and less relevant.
Maybe the engineer was not focusing for one day and submitted a badly designed project that everyone trusted. Maybe the project was actually a good project to begin with but the manager who needed to fund headcount for it decided not to because he needed a short term win for the organization. Maybe the route the engineer pursued to fix the issue was the right one but ran into bad luck with other bugs, causing other people to doubt him. Maybe he was right all along.
Again, that doesn’t mean the project was bad and the steps taken during the project was wrong. Circumstances happen.
But that also means that you cannot judge someone else’s results because they were right big. They could have been easily just as lucky and wandered into success. I’m looking at you, Tesla millionaires.
It is only time that truly tells us who is real and who is not. So do take people’s results with a grain of salt.
Avoid things that are stupid, evil, and make you look bad, especially in comparison to someone else.
This one I like so much better. It’s plainly easy to see why.
Alright let’s get to the roasting.
“I’ve Done My Research”
There’s a great question that Charlie Munger posited in the 2019 Daily Journal Corporation meeting. I will paraphrase this but you can find the original question here.
“A bunch of the world’s top finance firms hire all the brightest and top IQ kids from Harvard, Wharton, and so on to try and come up with a strategy for beating the market. To do so, they send 1 kid into every industry to understand it, master it, and then come up with a formula to beat the market. Once the formulas were completed, the firm combined them into a proper trading strategy. That proceeded to woefully underperform. How can this be?”
To my knowledge, Munger never gives an answer to this question.
I have an answer. I’ll hide it here and maybe it’s wrong. But I’d like to think I have spent a considerable amount of time on the problem.
1) The finance discipline is just one of many disciplines by which to view the world. You throw it at every industry, you’re going to look at it the wrong way. The world is much too complicated to do just that. ie. If I looked at baking a cake the same way I calculate return on equity, like calculating the return on taste for every cup of sugar, I’d have a very awful cake. 2) Every industry competes against another industry (airlines vs trains for distance) in some way. You are putting the smartest brains against one another to effectively compete and take from one another. 3) Similar to 1, there are only so many opportunities in the world. In order to go after the small scraps that remain, you need to come up with more fragile theories that work under more stringent and impossible conditions. The more variables you rely on, the more likely something is going to go wrong. 4) You never truly understand something until you try it.
Why do I bring this up? Because it poses an interesting question: if there is no real world advantage in the financial research produced from a bunch of extraordinarily high IQ individuals who spend their entire life in finance, what advantage is there in a purely researched video by someone with little to no experience in the field they are investigating?
Long Term Capital Management (LTCM) was an excellent real life example of this. Nobel prize winning economists who lay the foundation for modern finance managed to blow up their firm (and thus personal wealth) and risk over a trillion dollars in the US economy in the mid 90’s. This lead to a Federal Reserve-lead orchestrated bailout.*
So do be careful when someone says “I’ve researched” a topic. Their research may not necessarily be wrong. The topic they are researching might be small enough in scope that it may not warrant heavy scrutiny. What they say may not be incorrect. And for the most part, their reasoning might be sound.
But they can still be wrong. In fact, I would wager that they’re most likely wrong in any given circumstance. Just by nature of problem solving: nobody truly understands something until they’ve tried it out themselves. If meager understanding and study was sufficient, the world would be run by history professors, not capitalists and politicians.
There are only a handful of people in the world who can do extensive research and come up with conclusions that are consistent with a real life practitioner. The entire field of finance is filled with people trying to do this but only the top 10% truly succeed in this and capture most of the gains.
As an audience consuming this research, we should be very well aware of all the biases and human tendencies that cause us to simply believe and consume this information at face value. With successful people who are borderline frauds pedaling their “advice” and “information” to a highly impressionable and naive audience, judgment is very biased.
In the age of social media, it is far too easy to misjudge research and accept it at face value.If you consider the incentive of popularity combined with the human tendencies to copy one another, you can begin to see how opinions begin to mostly align towards incorrect feel-good information where nobody wants to stir the pot. Rational evaluation of information bows before authority (the person appears to know more), social proof (everyone else believes they know more), and the association with feeling good (this person is telling people what they want to hear). Bonus points for the person looking good (halo effect) and the audience associating other good things with that one characteristic. Not to mention, social media with its incentives towards short-term attention grabbing content play into human laziness. All in all, it makes for one hell of a “lollapolooza”, a phenomena that Charlie Munger identifies as when human brains turn to mush.
I would like to refer you to Cialdini’s Influence: The Psychology of Persuasion for a more in depth commentary. Its a truly fascinating book that shows the human tendencies that marketing tactics take advantage of. While no car dealership has ever held a gun to a person’s head and made them buy a car, a lot of pressure and subtle manipulation on an unsuspecting victim is the next best thing.
It is therefore prudent for us to distrust research that has not been severely battle tested in real life. And I mean severely. After all, most of what people put forward as “research” is just them marketing their own brand with cheap meaningless words. All to try and get a few more seconds of your attention.
In short, think of the information you consume as coming from a used car salesman. The information is a used car he is trying to get off his lot. You don’t know what condition the car/information is in: you just know his incentive is to sell it and he’s going to use every mind trick in the book to do so.
Along the lines of bad research is this idea of hindsight and judging actions and decisions based on results. This is quite bad and a very naive way of evaluating the quality of decisions.
As I mentioned before, you cannot judge an action based on its result.
Let’s give an example. An engineer straight out of school has two offers: to join a startup or a well known tech company. He picks the well known tech company for its learning opportunities, stability, and name recognition. One year later, the startup gets acquired by the well known tech company. The engineer is kicking himself for not having made an easy $2M and wishes he could have picked a startup all over again. He vows, therefore, to join startups whenever possible.
This is a very stupid way of thinking about engineering and the world at large. If you were to replay this event and job offers over and over again in every variation of the world’s events, how many times would you get a runaway success? How many times would you go broke? And knowing all that, would you still think the same way?
Some of you out there would say “Yeah, I would just join for 2 years, collect my equity, and hope for a buyout because when I’m young, 2 years is nothing for the chance for a big gain.” Others might not think so: “No, because this was a stupid idea and a stupid app that shouldn’t have been bought or created to begin with.”
And some smarter people would say “I would join if the company was profitable on an operating cash flow basis. At least the company will survive and as long as it survives, it can be bought out. I would only do this if I was young because I wouldn’t be risking the lives of my wife and kids.”
Every person will have a different calculus of the situation. Although I would say the last person is more likely to succeed since he’s thought of a reasonable strategy with much better payoffs and a more well thought out risk/reward position.
But I would like to say that if the person is ever so confident in his proposition and peddling the regret to others for attention, then they should be searching and waiting for new opportunities consistent with their position. If a person is regretting not joining a lottery ticket startup, why is he not trying to join another startup?
Which begs the question: why is the person telling you all of this, telling you that he wishes he joined a startup and cashed a lottery ticket, pivoting to social media? Is this just another lottery ticket to him? And how might that motivate his actions and the quality of his information?
Why might someone who says he laments not joining a startup that could have made him a multi-millionaire not pursuing other startup opportunities? Hmmm….
Ordinarily, I would not mind all of this if it was just for pure entertainment. But when I see this being sold as both information and entertainment, I start looking at things differently. When you begin to affect people’s everyday lives, decisions, and financial futures, the level of responsibility changes. As a “influencer”, your job is to literally influence your audience. If you want the credit for “helping people” when your audience listens to you and succeeds, you must also accept the responsibility for “hurting people” if people waste their time and money listening and imitating you.
Funny how the second part is something these people never think of. Only the money and the engagement.
I commonly see a rejection of that responsibility in a manner that is classic DARVO behavior: "deny, attack, and reverse victim and offender". What might DARVO behavior look like? I’ll let Mr. Garrison from South Park explain. (Pls don't flag me, I love you South Park).
One interesting note, from the Wikipedia entry:
Some researchers and advocates have indicated that it can be as a common manipulation strategy of psychological abusers. Let’s see what that looks like. Names will be obscured to avoid any lawsuits.
Since these people love to engage in the “not financial advice disclaimer”, let me pull a page from their book: this is not psychological advice and I am not a psychologist. But my “researched” opinion is that people who engage in these behaviors are psychopaths and abusers.
Let’s suppose I make predictions about the stock market, hype up a stock while selling it out of my portfolio,. The audience gets mad at me and accuses me of misleading them and using them for exit liquidity on failing positions.
“I’m not a bad person. The value of my job is to influence people and I just did an action that everyone else copied while I did the opposite the very next day. I’m the real victim because everyone is blaming their mistakes on me. They should have done their own research.”
That sounds a lot like fraud, doesn’t it?
Another example, while I’m on a roll.
Let’s suppose I constantly talk about the millions of dollars I missed out on by saying "no" to startups that eventually got acquired, then I should be responsible when people begin to make decisions based on my experience. I should be held responsible when people’s careers are cut short when they gamble their career’s longevity on risky unprofitable startups where they don’t learn anything:
“I’m not a bad person for telling others about the millions of dollars I missed out on. The value of my job is to influence people. I’m just telling everyone my life situation and how I got here: by turning down engineering offers that could have made me very rich. I’m the real victim because everyone is blaming their career mistakes of joining failing startups and trying. to make millions of dollars on me. They should have done their own research.”
Sounds a lot like fraud, doesn’t it?
You might think that I’m just sitting on the sidelines calling out random people from the cheap seats. But I assure you I too have been solicited by these types and I am very disappointed in their behavior. Allow me to share that experience:
There have been some well known online personalities starting capital and real estate management firms. Despite the fact that these people have repeatedly said in the past that investing in a plain index fund will outperform most hedge funds, they have, in effect, started their own hedge funds with similar fee structures. Ironic, considering that these are the same people who made their careers making financial content and rallying against Wall Street and hedge funds. Now that they have a chance to make a lot of money, it's time to switch sides.
Funny how that works: money and the need to sell out renders all past convictions obsolete.
After having done my due diligence, I asked that they change their fee structure because of the misaligned incentives. They would get 2% of the purchase price, 1% of the exit, and 2% of the gross income. This means that if a deal should fail or underperform expectations, such as lower than expected rent collection, higher expenses, or even a lower sell price, they would effectively still be able to collect a 7 figure sum.
This is not even factoring in the possibility that they may underperform the S&P index, which they’ve repeatedly extolled it's virtues in the past.
Funny how they have preached this until they decided to open a private equity hedge fund. Funny how they abandoned their past success and message once the opportunity for more money came along.
I asked that the fee structure be reworked so that the incentives could better protect investors. Their response? Well, I’ll post it below:
People are happy to brag about their competence until you make them put real money to their words.
Sounds a lot like fraud, doesn’t it?
Let me be clear: if you engage in this behavior, asides from the fact that you’re being stupid, evil, and making yourself look bad, it's perfectly acceptable behavior.
Similar to the above interaction, I regard career advice and researched opinion videos from immature tech career people in the same vein. Those opinions are going to shape the competency, real world impact, and financial future of another human being. Someone’s going to listen and someone’s going to get hurt. So unless the person is ready to suffer reputation damage for any and all incorrect information and opinions expressed, I regard their opinion as literal bullshit. If their opinion is right, they look like a genius. If their opinion is wrong, it's the audience’s fault for listening and taking them seriously. They should have “done their own research.” Oh wait, we’re back to square fucking 1. If they’re confident in their research, they should bet on it.
But why stop there? Here are some more aphorisms I just have to take shots at:
“Software Engineering is a great long term career, I know people who have been in the industry for 20 years and still love it” - tech influencer who quit their job after 3 years. If it’s so great, why did you quit?
“Here’s how I made $1M in a year as a software engineer” - tech influencer who made more than half his money selling courses.
“Career hacks! 5 easy ways to turbo charge your career” - tech influencer who became a manager after 3 years
"FAANG Offers Are Worth It in 2022!" -ex-FAANG engineer who spent 2 years at FAANG and now runs a business getting people into FAANG. If FAANG is so good, why aren't you there?
How many people will get into a career they hate because they listened to these people? How many people will have unrealistic expectations and take the wrong path in life? How many people will just do short term career hacks at the expense of their long term career prospects?
And, most importantly, what has your favorite influencer who gave you this “great career information” grifted to next? And why do they grift? Did they grift to your field too?
So to the influencers with 0 skin in the game peddling their short-term bullshit around: asides from the fact that you’re being stupid, evil, and making yourself look bad, its perfectly acceptable behavior.
Focusing on The Wrong Things
I dislike what the engineering advice space has become. It simply becomes a bunch of people who do research and relay feel-good opinions and bullshit. I’ve briefly covered this in my last memo, Turds as Rent. In short, the most popular and successful software engineer entrepreneurs who act as influencers got here because of the arguably rampant fraud they may or may not have committed in the software engineering space:
“The money was found in selling terrible ones that were cheaply made for a price no sane individual would ever want to pay, cashing out, and then starting a new terrible company.”
“People are rewarded for impact, not for longevity. If someone had an infinite amount of time in their career, they would surely want to take the long view and do everything they can to make the next subsequent projects they work on easier. Which means removing all the prior tech debt. But because there is an incentive to make hay while the sun is out, people take shortcuts, deliver the feature, shine bright, and leave before the inevitable disaster they created hits. “
In short, I don’t trust people who have had short careers with high turnover at each place. There is just too much incentive to cut corners and not get a meaningful experience out of it.
Let’s look at some top tech information articles.
“Great Programming Languages 2021”
“Salary in Tech”
“Drive your career”
“Coding interviews are broken”
All looks great right? Maybe if you’re looking to get into engineering. But if you consume this content after getting into the industry, I guarantee you you will be worse off. Why may that be?
Fundamentally, engineering is about solving problems and software engineering is, therefore, solving problems with software. Everything else that falls out of that is a consequence of that pursuit.
Let me prove this by responding to all the flashy video titles that I’ve posted.
“Great Programming Languages 2021”: The programming language you choose to be primarily based in is just a tool for you to use. Of course there are some limitations: knowing Python won’t help you write Android apps. But having a proficient understanding how programming languages are used and how code is written is good enough.
“Salary in Tech/Drive Your Career”: Your salary is correlated to how competent you are at solving problems with engineering. Career is, well, just what you get out of simply getting better at your job.
“Coding Interviews are Broken”: And god help you if you have seen me and my clients’ track records for coding interviews and still believe that coding interviews are broken.
Suffice it to say, the topics people are talking about are just saturated with bullshit because it's too easy to take surface level misinformation and pass it off as meaningful. All these articles only ever take the short view and focus on short term results at the expense of your long term prospects and career!
Why? Well, let’s think about the logical conclusion each of these articles would imply:
“Great Programming Languages 2021”: Languages are born and retired. Some never get mainstream adoption. Others do but are so short lived that it is meaningless to learn them. I can remember 10 years ago when everyone wanted to learn PHP over Java or Python because Facebook was using it. Now, PHP isn’t even in favor. Go is the new kid on the block. All while Java and Python are perfectly fine languages that are still the #2 and #1 programming language in the world.
For my entire career, I only ever used Java and Android. While I recently picked up Python and some Kotlin, I still primarily only use Java. I’m sitting on my ass working on more interesting projects in engineering and solving real problems while people are still chasing the ghost of the next hottest language. I’m a great counter example to the relevance of these videos.
The lesson is clear. If you chase the latest and greatest programming language, you are chasing a ghost. You might be one step ahead of others for that programming language. But it is meaningless because what matters isn’t the language but what you do with it.
“Salary in Tech/Drive your Career”: Most people believe they can get a higher salary jumping around every 2 years. This works at the junior and some midlevel companies. Its very hard at the senior level and impossible at staff. The reason is because after the senior level, you need to compound your knowledge on a codebase for a long, meaningful time in order to come up with good long-term initiatives that will get you to the staff level. Focusing on short term gains will never allow you to do this. But let’s say that you can cheat your way to staff: what other company will recognize that?