27,688 karma · joined September 4, 2008
Now: HotelTonight / Airbnb
Web generalist with a product focus and wearer of many hats.
https://mubi.com/users/2
https://github.com/gtd
http://websaviour.com/
https://twitter.com/dasil003
[ my public key: https://keybase.io/gtd; my proof: https://keybase.io/gtd/sigs/LLH-bIciQfUgvlVI7-Xe0LaEIEZxOSA0zHYbjhCYiXU ]
Big businesses don’t inherently require the complexity of architecture they have. There is always a path-dependent evolution and vestigial complexity proportional to how large and fast they grew.
The real purpose of large scale architecture is to scale teams much moreso than business logic. But why does headcount grow? Is it because domains require it? Sure that’s what ambitious middle managers will say, but the real reason is you have money to invest in growth (whether from revenue or from a VC). For any complex architecture there is usually a dramatically simpler one that could still move the essential bits around, it just might not support the same number of engineers delineated into different teams with narrower responsibilities.
The general headcount growth and architecture trajectory is therefore governed by business success. When we’re growing we hire and we create complex architecture to chase growth in as many directions as possible. Eventually when growth slows we have a system that is so complex it requires a lot of people just to understand and maintain—even if the headcount is longer justified those with power in the human structure will bend over backwards to justify themselves. This is where the playbook changes and a private equity (or Elon) mentality is applied to just ruthlessly cut and force the rest of the people how to keep the lights on.
I consider advances in AI and productivity orthogonal to all this. It will affect how people do their jobs, what is possible, and the economics of that activity, but the fundamental dynamics of scale and architectural complexity will remain. They’ll still hire more people to grow and look for ways to apply them.
The generally accepted roles are Product decides what we need to build, Design decides how it should work from user perspective, Engineering decides how to build it at a reasonable upfront and maintenance cost. This involves a fair amount of influence, because Engineering is better equipped to describe the cost tradeoffs than any other function. Of course this comes with the responsibility of understanding the big picture and where the business wants to go. IMHO you should not be speaking to project management about code quality, you should maintain ground level quality as you go, for bigger refactoring/cleanup this needs to be presented to Product leadership (not project managers) in terms of shoring up essential product complexity so it's easier for customers to use, less support, and simpler foundation for the next wave of features. Never talk about code with non-technical stakeholders.
I think the real problem is that zero friction global communication and social media has dramatically decreased the incentive to be thoughtful about anything. The winning strategy for anyone in the public eye is just to use narratives that resonate with people's existing worldview, because there is so much information out there and our civilization has become so complex that it's overwhelming to think about anything from first principles. Combine that with the dilution of local power as more and more things have gone online and global, a lot of the incentives for people to be truthful and have integrity are gone or at least dramatically diminished compared to the entirety of human history prior to the internet.
I think it’s fair to say those failure modes tend to disproportionately accumulate university graduates and self taught developers respectively. As long as we don’t use it as some kind of litmus test then I don’t think it hurts to call that out.
By contrast I see a lot of folks with 10-15 years experience whose “normal” is an unprecedented bull market where stock is continuously up and to the right with very little correlation to their actual work. Yeah they made more money than I did, but I don’t believe their psychology is in a better place.
Either way, you can’t control for these things in life, just have to play the hand you’re dealt.
I think AI is useful for sifting through high volumes of data to get the gist, but I don't really count it as it's own modality. It is by definition a watered down version of the training data that produced it, it lacks the human spark that makes content worthy of attention and analysis.
While it’s true that lots of companies are getting some value out of LLMs, a much larger number are using them as an excuse for layoffs they would have wanted to do anyway—LLMs are just a golden opportunity to tie in an unmitigated success narrative.
To the article's point—I don't think it's useful to accept the tech CEO framing and engage on their terms at all. They are mostly talking to the markets anyway. We are the ones who understand how technology works, so we're best positioned to evaluate LLMs more objectively, and we should decide our own framing.
My framing is that LLMs are just another tool in a long line of software tooling improvements. Sure, it feels sort of miraculous and perhaps threatening that LLMs can write working code so easily. But when you think of all the repetitive CRUD and business logic that has been written over the decades to address myriad permutations and subtly varying contexts of the many human organizations that are willing to pay for software to be written, it's not surprising that we could figure out how to make a giant stochastic generator that can do an adequate job generating new permutations based on the right context and prompts.
As a technologist I want to understand what LLMs can do and how they can serve my personal goals. If I don't want to use them I won't, but I also owe it to myself to understand how their capabilities evolve so I can make an informed decision. I am not going to start a crusade against them out of nostalgia or wishful thinking as I can think of nothing so futile as positioning myself in direct opposition to a massive hype tsunami.
The flow is: 1. :G blame to blame the current file in a locked split 2. navigate to a line, then hit o to open the commit in another split 3. search for a change of interest, then navigate to either the --- or +++ line and hit o to open the before or after version of the file in another split 4. repeat steps 1-3 as needed to drill to whatever history you need 5. ctrl-w o to kill all the splits and leave you with just the buffer of interest
whereas I'm pretty happy with git CLI for the majority of git interaction, and a graphical client like gitk for visualizing branch history, I haven't found any other history inspection technique or tool that comes close to this.
If you look around you’ll find more people doing it than you think, they just tend to be less famous than business moguls since peculiar interests are more of a niche thing but everyone is interested in material success.
The place to really consider more direct feedback is with people that you have worked closely with. Personal relationships matter infinitely more than HR or any "official" record. If you have good relationships with your boss and/or peers, talk to them and give your thoughts, it could give you some closure and maybe even potentially improve things. Just don't let it turn into a unconstructive venting session. Ultimately working in organizations is hard and every single person can generate a laundry list of complaints, the real value is in finding a path to improve with the levers under your control. If you have credible idea about how to nudge things in the right direction, people will tend to appreciate that; if you're just looking for commiseration about how broken everything is then keep your opinion to yourself.
The whole reason we even have time to think this way is because we are at the peak of an industrial civilization that has created a level of abundance that allows a lot of people a lot of time to think. But the whole situation that we live in is not stable at all, "progress" could continue, or we could hit a peak and regress. As much as we can see a lot of long-term trajectories (eg. peak oil, global warming), we really have no idea what will be the triggers and inflection points that change the social fabric in ways that are unforeseeable and quickly invalidate whatever prior assumptions all that deep thinking was resting upon. I mean 50 years ago we thought overpopulation was the biggest risk, and that thinking has completely flipped even without a major trajectory change for industrial civilization in that time.
Sure investors and CEOs want to reduce software engineering costs, but at the end of the day software is built to serve human needs, and only humans can reason and make a judgement call about whether software systems are working well or not, and because software is so precise and deterministic, there will always need to be someone who thinks like a programmer to tell the AI what to do with sufficient precision to be useful. Sure I can imagine AGI could at some point invalidate that thinking, but I believe we are very far from that point if its even possible, and even if we do reach that point we'll need massive social change or the pitchforks will be coming out from many directions.
The fact that reputation has been subjected to unprecedented arms race in the face of the internet and social media doesn't fundamentally change the game, it just makes it more exhausting and overwhelming to pay attention to.