I recently went to the Berkshire Hathaway shareholders meeting for the first time this year. The media tries to sell it as the “Woodstock for Capitalists”. I will say that it's a little better than a bunch of unhygienic hippies doing drugs in the middle of a farm and listening to live music.
But I liken it more to an anime convention or Coachella.
Instead of being there for the experience, most people just go there to latch onto the event’s prestige to grow their own brand. In the case of Coachella, people go to Coachella to write about how they went to Coachella and how people should follow their influencer Instagram. For Berkshire Hathaway, people claim to be a long term value investor, worship Warren Buffet, and ask people to invest in their fly-by-night fund that is highly leveraged into closet indexed ETFs, unprofitable growth stocks, and unproven cryptocurrency.
You might be thinking this is the behavior of a know-nothing 20 year old sorority girl with a 4.0 in beer pong and a 2.0 in her History degree who recently discovered Robinhood. But I assure you it is the behavior of several fund managers in their mid 30s with kids. Other than their overwhelming lack of self-awareness, they’re respectable human beings.
Software engineering as it exists today sits today somewhere in the middle when it comes to intellectual authority in society. Which also means it too suffers from a large amount of know-nothings running around marketing themselves that is all too pervasive in the world today. In this blog, we will focus on these people specifically. The influencers. The people who try to produce content for the sake of growing an audience and gaining attention.
The biggest concern I have is that letting these people run loose will eventually wreak havoc on the unsuspecting and vulnerable, whether its their career or or their financial futures. I want to write this post to reflect on how we got here.
How software engineering as an industry has lost its nuance and effectively became a tool to rob others by people with no skin in the game. No holds barred.
There are 3 areas where this has become a concern: the business itself, the code itself, and the marketing game of software engineering as a career. The entire game has mostly become a way of collecting money and creating no value at all whatsoever. And I don’t even think the players in this game realize it themselves.
But if there is one thing in this post you should remember, it’s to always ask yourself “does he have skin in the game?” A person who has no skin in the game is someone who has no reason to stand by their words and results. They should not be trusted.
Proceed with caution.
Allow me to introduce to you the idea of rents. No, I don’t mean the $5000 you pay per month for a shoebox apartment in San Francisco.
Economic rent is an amount of money earned that exceeds that which is economically or socially necessary.
In plain english, it just means money that is gained where no value is created. This is the core idea I want to explore.
A good example of this is a sneaker reseller. He buys a pair of Jordans at a retail store for its original retail price of $190. He then sells them on StockX, a sneaker reselling website, for $390. The $200 difference is the rent.
Now, is this because the reseller has produced $200 in value? No. What benefit did people receive when he bought a sneaker and sold it on the secondary market?
In fact, it could be argued that he took away value in doing so. The people who would have bought it at $190 had to waste their time going to the retail store to find out it was all sold out, then had to go to StockX to pay the resale price. Not only did the people who wanted to buy them lose their afternoon but now they have to pay an exorbitant amount for a shoe that they would actually want to wear instead of flip.
There are many reasons why these rents exist including a restricted supply (Nike and its subsidiary, Jordan brand, limits the number of shoes on certain releases) to asymmetric information.
The argument in favor of rents is that “it's the market rate and people are freely buying and selling.” But I see it as also the argument against. After all, with a supply so artificially low, anyone who corners the market is manipulating it and setting the price to whatever they want. So it is a market rate, yes. But a manipulated market rate.
It’s about as ethical as selling someone something that you know has no value simply because people are willing to buy.
Which is exactly what people have done for the past 10 years in Silicon Valley. So whenever you hear “rents”, think “ripping people off.” After all, if the sneakers end up being fake or fall apart after a few wears, the reseller is not on the hook. It is the buyer. Similarly, there is no guarentee that the asset one buys in a market full of rent capture is not fraudulent or time bombed. In fact, it's more likely to occur because of a “buyer beware” attitude and the incentive to unload the asset as quickly as possible.
As a interesting side note and implication of economic rents, Nike has sued StockX for profiting off of its brand. In the claim, Nike actually bought supposedly legitimate Nike sneakers from StockX and found the sent pairs to be fake. I guess when there is economic rents and “free money” to exploit, ethics get compromised.
Also fuck resellers. There I said it.
Economic Rents as Apps
Let me first be clear and say that when I say business, I mean both the software engineers themselves and the tech businesses these engineers work for.
Selling stupid apps is not new. In the lead up to the 2000’s dotcom bust, there were a great many unprofitable and stupid websites that went public with no revenue. In fact, a peculiar phenomenon occurred where once a business was profitable and could actually project its revenue, it hurt valuations because people could actually calculate what the business would bring in. Usually, these would be far less than the absurdly rosy picture that they set out for the business. So people would move on to the next unprofitable business.
Admittedly I was just a child during this time. But I do recall my own mother getting laid off from Yahoo as a consequence of this. My father cashed out from the company he worked for fortunately around this time. So much of my life and childhood was shaped by the fallout of this craze.
From a fundamental perspective, this phenomena wasn’t really any different from the stupid mobile app craze of the early 2010’s. A lot of people who wrote an app would get a buyout simply because every company wanted to acquire an existing userbase and be on the cutting edge of the mobile frontier of the software industry.
Were these apps that developers spent 3 months developing worth half a million dollars? Probably not. Were companies willing to pay to acquire a mobile presence? Yes.
The difference here is that engineers themselves who created the apps were collecting the rents from companies. What is the economic rent here? The rent here is the income generated from the business minus the cost of acquisition and labor to do so.
Suppose an app sells for $1M. If an app will generate $500k over its remaining lifetime and it took the developer $200k of overall effort (let’s price in all the failed apps for fairness), then the rent is $300k. Not an uncommon sale at the time. GAAP might categorize this as goodwill but let's be real: it's plain hype and stupidity.
Basically, companies were overpaying for these apps and the engineers who gleefully sold it to them at exorbitant prices called it profit and success.
You might argue that the mobile presence is worth something but I would argue that because of how short lived these mobile apps were, the value of the mobile presence was next to nothing. People invented value from their imagination. How much is it worth to have your company’s logo shown on an app with a couple thousand non-paying users for 3 months before it gets shutdown? Not much. Yet people regularly brag about 7 figure buyouts on their app. That’s hardly a fair price for such a useless product.
Call the sale whatever you want. But anyone who can justify ripping other people off that much and call themselves a success should compete at the Olympic mental gymnastics event.
But I believe this was the moment that our generation rediscovered how much money you could really make with software engineering. The money wasn’t found in creating great new products. 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.
Should the terrible company or app go under, which they usually do within months, it’s the venture capitalists’ fault for buying. Again, passing off the downsides to the buyer.
The cycle of Silicon Valley of selling overhyped crap and in the tons of crap produced, occasionally, a great idea was born.
I observed this in my own career. One example of this was when people wanted to create “the next social network” after the Facebook IPO of 2012 and try to sell out to venture capital firms. I spent a good majority of my early career banging my head on a table, asking myself why fully grown adults were hiring us, thinking that “Instagram but for food” was a great idea when Instagram already existed. At a time when Instagram was mostly flooded with food pics.
It was clear that the intention was to build it, grow it marginally, and then sell it out for far more than what the business could ever be worth. Rent collecting from venture capitalists. It’s one thing to build it and dedicate your life and purpose to building something you believe in. That’s true dedication. It’s another to just make and sell something for profit’s sake, even when you know it has no real lasting value.
Most people call the latter “entrepreneurship.” I called it ripping people off. Take your pick.
Unicorns are called unicorns for a reason: they don’t (or shouldn’t) exist. Instead, they’re venture-backed companies with valuations of over $1bn.
Ordinarily it would have taken companies 20 years to get to a $1bn valuation. Google did it in 8. Facebook did it in 6. Uber did it in 3.
But it turns out when the market is utterly euphoric, it's easy to point to a dog turd and call it a gold bar. Which is exactly what a lot of these unicorn companies have done. Most of these unicorn companies don’t actually create value: they just extract rents from transactions without increasing the efficiency.
The greatest example of this? Robinhood. They offer “commission-free” trading by hiding the fee in the price you pay for a stock. They don’t offer anything valuable in trading and investing other than an app that resembles an easy-to-use gambling interface. And they masquerade behind the veneer of a technology company.
I would go so far as to argue that most unicorn companies that try to “change the world” by “creating a marketplace” are actually rent extractors. There are only very few companies in the world that provide meaningful value to where there isn’t otherwise. Amazon and Alibaba are great examples of this where both enhance the experience of creating a marketplace for buyers and sellers by providing their own shipping and logistic lines, an easy to spin up seller page, and a seamless experience backed by a robust infrastructure that people couldn’t ordinarily create on their own or as cheaply.
The reason why I say this is because if you look at the past 12-18 months, most of the C-suite and leadership at these companies have dumped their stock. Heck, most of the CEOs of these unicorns have dumped a significant portion of their stocks a few months after IPO.
Robinhood CEO casually dumps all 50 million shares he holds a few months after IPO.
Doordash CEO dumps 10 million shares and more
Snap CEO's holdings go from 80M shares to 35M shares over 4 years.
Should I keep going?
If your mission is to change the world and you believe in it so much, why sell so much equity so soon? The stock and the value you mean to bring to the world should grow greater over time. So why give up on it now and cash out? There are many reasons to sell but for these people to liquidate almost entirely is an enormous red flag that NOBODY should ignore.
Even Elon Musk, whose company was trading at an overpriced $1T market cap when it hadn’t even made a profit, never dumped his position and lived off of loans. To him, maintaining control of a company he worked so hard on is worth more. You can see that he still holds an extremely high amount of Tesla shares despite his shares vesting with a minimal amount being disposed of to pay for taxes.
Remember what I said before? Stay away from grifters and with no skin in the game.
And that’s exactly what I want to say here. Most of these unicorn technology companies are started and run by grifters who tout themselves as world-changing before dumping their shares on unsuspecting buyers.
Or, more succinctly, most companies are in the business of creating technology in order to take away economic value from the world, move it into their own pocket, and cash out by dumping the worthless enterprise onto people who believe in their mission statement and taking their money.
Code on Rented Time
With most tech businesses and engineers simply playing for rents rather than value, you can easily begin to see how this will affect the codebase. After all, code is written by people and if the majority of these people have the wrong influences and incentives, they will use the code as a way to rob the business.
The simplest example is the unmaintained spaghetti code. The code nobody understands. The code that nobody cares about and that is haphazardly added to because there is no payoff for maintaining or untangling the mess.
Consider this snippet of the reasons why someone would introduce non-standard code (anti-patterns) into a codebase.
Ok, that snippet was actually a satire piece. There are legitimate reasons to introduce anti-patterns. But you believed all 4 of these for a second right? That should speak to the incentives of the engineers themselves and how perverse they are.
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 the long view, it doesn’t matter how much impact you have if the value of the impact is offset by the cost of by maintenance and bugfixes.
This mentality works well in startups where the product itself is not fully solidified and fast iteration is needed. It doesn’t make sense to maintain code that may not live to see tomorrow.
It’s another thing to do this at established companies, which is my biggest gripe.
Sure, ruthless prioritization might be an efficient way to punt maintenance but how many times have people prioritized meaningless abstractions over maintaining their code? Maintenance is such an afterthought that nobody actually plans for it when undertaking a project.
Other examples include time bombs (where people refactor a function and inevitably break all the existing dependent functions), lack of documentation, and not knowing how a codebase even functions. Most of this is simply solved by taking care to implement proper infrastructure for the code. Or, at the very least, mitigated by taking care of the code one writes.
Many engineering decades and therefore billions of business dollars have been lost simply by going down rabbit holes and code that not only was unintelligible but also did very little for the amount of code that was written. The person working on it didn’t know what it did and didn’t care to learn, kicking the can down the road and passing the risks off to the next guy who came through the door.
Again, when you’re on rented time, it’s not in your best interest to help others.
Let other people pay for your misdeeds. Because you aren't rewarded for fixing your mistakes. You have no skin in the game and no price to pay if shit hits the fan. The code breaks? Who cares, you’ll fix it and move on with your life. And if work gets too hard, you’ll quit and find a new job.
The good news is that most architecture and engineering decisions that are undertaken actually factor this in mind. The cost of maintenance of a piece of code and how its structured is something that is fundamentally accepted with the expectation that the person maintaining it tomorrow will be different. In this way, most architecture is streamlined to force people to write in a homogenous way that is relatively simple. It might take a little while to pick up but it's well defined and well understood by the top designers. Uber’s RIB architecture is a great example of this.
This cynical attitude of architects towards the developer consumers doesn’t completely eliminate the problem of churn and bad code in a system but it helps to mitigate the harm and dispose of the code that isn’t performing.
It can go too far, deservingly or not. I’ve even overheard someone say to treat engineers “as monkeys rolling their faces on keyboards.” I withhold my opinion on that statement.
Engineering Careers on Rented Time
Consider this statistic.
At age 26, 59% of engineering and computer science grads work in occupations related to their field of study.
By age 50, only 41% work in the same domain, meaning a full ~30% drop out of the field by mid-career
You mean to tell me 2 out of 5 people who start programming professionally will stop? And over half will drop by 50? How can that be? What percentage of them just end up being managers? And what can we learn from this?
We have a handful of possibilities. But let’s look at a similar career with similar odds: baseball.
Looking at this probability of survival graph, we can see that at around 4-5 years, the probability of survival is about 60% which is comparable to our age 26 engineer new grad. The years line up too since most people graduate college when they are 21-22.
This is odd. Baseball is a grueling sport where the participant should become worse with age as their physical body breaks down and younger, more athletic and fit participants enter into the sport. Yet an intellectual activity like software engineering should show a much smaller decline as participants should get better with time!
Everyone has their reason for why this is. Perhaps the career was not what they thought it was. Maybe they decided to switch fields and pursue other interests. Maybe tech, with all its diversity and inclusion initiatives, is intolerant and needs to be more diverse. Some people believe it is the language and technologies that have changed.
I have no problem with all that and I think those are all valid reasons. But I cannot simply imagine 40% of people changing their minds over a bunch of irrelevant nonsense.
I actually think the answer is far simpler: people just can’t cut it. People don’t improve their problem solving abilities and engineering approach and are replaced by younger people who will do the same job, faster, work more hours, and for less pay. Sure, people may not be as motivated to become better or smarter engineers because they don’t find their work meaningful but at the end of the day, it's the same thing: no self-reinvestment means no continuation of your career.
In any case, you have to consider what that means for the quality of their work. In the beginning, they may be motivated to do everything to improve but they’re still novices. Most people don’t begin to contribute meaningfully to a codebase until year 2-3, at which point they’re really beginning to question whether they really want to keep doing this. And by year 4, they’re on their way out. How much meaningful contribution would you expect from someone with these incentives? How much understanding would you expect this person to really have? And was it really worth paying 6 figures?
Whatever the case may be, just know that the person sitting to your left will most likely quit the field within 4 years of graduating. Sure, they may have a lot of surface level information. But information without understanding is no different than being a book.
But believe what you want to believe about the quality of these people.
The Bigger Picture
We’ve finally come to the modern day. The chain of know-nothings who got to where they are today by selling and doing things that they know has no value has spawned a generation of older millennials and gen X’ers who are just doing the same thing. To sell their “expertise“ at FAANG. At a company they are no longer interested in or capable of working at despite their relatively young age.
The kicker? If their advice should be bad or wrong and cause harm, it's your fault for listening.
If you’ve been following the story, you should understand why their experience and words may be suspect. Firstly, most engineers simply write code in an architecture that is already well defined for them so they only have one way forward. Second, their career and path is already very well defined for them so there isn’t much thinking involved. Managers will lay out projects so that engineers will have a straight line to promotions. Third, the financial incentive to simply cash out on the mystique of working at FAANG is enormous when the reality is that working in these cookie cutter roles is far easier than most people think.
And finally, the most important, is that the quality of the code they write and their thought process in evaluating code and engineering at large and thus their experience and expertise is, most likely, worthless.
That’s why you have people spouting random information that don’t seem to add up to a cohesive picture and are spoken by people who have no authority on the matter.
“Career advice for your 20’s” -by a 25 year old engineer “Tech interviews are broken” -by a junior engineer with only 1 year of experience
“How to deal with a bad manager” -by a engineer who has never been a manager
It’s no wonder why these influencers grift. These engineers don’t last very long and suddenly pivot away under the guise of entrepreneurship or wanting to do something else with their lives. There’s nothing inherently wrong with that. But ask yourself: what value do they truly produce? Are they solving a problem or creating a bigger one? Are they producing value or transfering value and taking a cut? And what incentive to stay on the ethical and valuable side of things?
This is the true final rent in engineering: obfuscating the information, creating content for the sake of creating content without a marginal improvement in understanding, how to advance in your career, or most importantly, how to provide value as an engineer.
This can take many forms, not just on Youtube. It can be the guy at your company who knows nothing about the codebase and architecture and is talking about the business impact and tradeoffs of design decisions. It can be the guy who supposedly has the most knowledge by virtue of tenure but abuses it by blaming his ignorance and mistakes on newer engineers (I’ve been there).
I don’t like this as an engineer because it means that the level of engineering actually decreases. It means that we have to waste our time with more interviews because of higher churn and higher burnout rates. It means we have to work on codebases that decay at an accelerated pace. It means we are at risk of more outages. And it means people take money from the business and provide little net value to the business.
In other words, with no skin in the game and nothing to punish people for their sleazy behavior and ignorance, there is no incentive to change this cycle of “know nothing” engineers in, “know nothing” engineers out selling their “expertise” to the world.
It’s no different from building a shoddy house on sand and advertising it as a multi-million dollar mansion. Once the buyer finds out he’s been duped, it’s too late.
This problem has gotten worse with time. If the problem stopped at engineering and code, I could live with that. But I was incredibly angry when these tech influencers took this attitude too far and began to post investment thoughts. Having rode the decade-long tech bullrun, they thought they were geniuses and worthy to dish out advice on what people should do with their careers and money.
With the market having crashed about 20% YTD, I'm waiting to see how many of these geniuses will open their portfolios and show the audience their gains and losses.
Ordinarily, I would not find a problem discussing the fundamentals of businesses. But I find it incredibly distasteful when people try to hide behind the veneer of “trying to experiment with new things” and “engaging the audience”.
As long as people are not held responsible for their words, opinions, or content that they produce, there is no reason to believe these people aren’t just lying for attention.
Why is this bad? Consider a simple statement I saw on LinkedIn from a tech influencer (paraphrasing for anonymity). “I think Netflix is a buy now that it’s dropped 35% in price. Netflix is a great tech company. Time to buy.”
Seemingly innocuous. But the discussion isn’t focused on the technology Netflix nor why Netflix is good as a business. It’s focused on buying and investing in Netflix.
Following these people WILL GET YOU HURT. The information you see and listen to affects your perception of the world. If you listened to people telling you to buy Netflix after the January 2022 subscriber drop, you would have lost 50% of your investment today.
Let’s see how well these posts age. And most importantly, let’s see how quickly these people backpedal and say that it was just to “raise awareness” or “grow their audience”. Or even delete their past posts.
Admittedly, I will say I do similar things. I do disclose what positions I'm in and the reasons why. But I never tell people to buy or sell a stock at a certain time. And I do not say what stocks I own for audience engagement.
Rather, I do it to show people I put my money where my mouth is and establish my own credibility. When I say Apple is a fantastic company to work for, I also say I own a significant stock position and highlight my past employment and my experiences there. When I say Google is a great company, I say what their business model is and how I would value it and highlight the fact that my entire career was built on writing Android code. An OS owned by Google. But I stop short at telling people when to buy and when to sell because there are many factors that go into buying and selling a stock that I am not qualified to talk about. And I don’t say make random posts outside my circle of competence for engagement. Because someone is going to take the unvetted and careless idea as fact.
And the less I know about something and the more I share that half-baked idea, the more likely someone is going to get hurt because of it. I cannot have someone take the loss for my words or misdeeds.
Compare that to tech influencers who talk about stocks and businesses daily in 200 character LinkedIn posts. Someone is going to take that half-baked thought designed just for attention seriously and lose their life savings over it.
Much like my interview coaching, I am fully willing and ready to eat my own words if and when I am wrong. I have stood by this mantra because I firmly believe that being responsible for both your successes and failures, especially failures, is not just a way to get better results but also a moral obligation. I stream my sessions because I stake my public reputation on my beliefs. I show everyone that my ideas work and that I can reproduce them time and time again.
I firmly believe there are no secrets to the coding interview. I show the techniques I use to get someone from 0 to multiple offers. I show how I use them and how my clients progress week after week.
If my clients fail, there is an audience ready to hold me to account. So far, I haven't had any significant failures and I believe I won't. In fact, I've been pushing myself and my beliefs by taking on more and more extreme situations such as helping a student get an offer from Google with less than 5 weeks of preparation when I usually require 2-3 months.
Compare that to people who sell courses only to show their placement rates. Any idiot can get a 94% placement rate. They just need to send each of their clients to 50 interviews and land only 1 of them.
Any idiot can say they helped 1,000 people get jobs. Just market and sell your course that has only a 1% success rate to 100,000 people and waste 99,000 people’s time and money.
That is why I’m utterly disgusted when people parade their successes while passing on their failures onto others, especially when it hurts their victims. Selling useless or repackaged courses for an unreasonably high price is an incredible abuse of your audience’s trust. The people who believe in what you say and what you do. Stealing from your audience by overpromising and under delivering is a terrible way to live.
Alas, there will never be a judgment day for these people because they don’t see it as a moral consequence. They just see it as the price of business, the market price as a fair metric, and that the buyer should beware.
Since no punishment or justice will come, the only thing left to do is for us to steel ourselves against bad ideas. Carefully vet the people and the ideas that we are exposed to.
When you listen to people, whether for advice or for your next job interview, ask yourself what their motivations are. What their incentives are. What are they hiding from you. And, most importantly, are they trying to pass off the costs of their failure to you or to anyone else.
Anyone who fails this moral test should not only be ignored, but much like a registered sex offender, be required to come with that label for the rest of their life.
All I can say is to protect yourself out there in the realm of rent seekers who seek to pass the costs off to you. And make sure whoever you listen to has skin in the game.