Monday, March 27, 2023


There's considerable concern about the prospects of AI putting people out of a work across a variety of knowledge work roles, especially software engineering. These concerns seem to have baked in assumptions that are too narrow, and if explored a bit more fully, shift the perspective.

The underlying assumptions appear to be:

  • That the job replacement will be something akin to offshoring. Where an AI agent will perform essentially the same engineering work in the same timeframe as a person, at a fraction of the cost. Cheap labor, but otherwise business as usual.
  • That an AI agent capable of software engineering wouldn't also imply a level of intelligence and sophistication that would be extremely broadly applicable. An assumption, that and AI agent can be a really good software engineer but nothing else.

If you accept the premise that an AI agent is now or soon will be capable of replacing a software engineer, these assumptions seem naïve. However I do agree that software engineering is ground zero for evaluating how impactful this stage of AI will be.

What's at stake:

  • If AI is capable of replacing a software engineer, it's very unlikely to end up with a one-for-one trade. Where one AI agent is 'hired' to take over a 40 hour a week job.
  • If we have one capable AI agent, we essentially have infinite agents available to work 24x7.
  • Having access to nearly infinite software engineering capacity would lead to an explosion of software being written and modified at an accelerating pace.
  • The types of software being writing would change. The more AI agents replace knowledge workers, the less business software for humans would be written, and more for other AI's.
  • Therefore, if ChatGPT and the like are able to replace software engineers the situation is more akin to the singularity than offshoring 2.0.

That suggests to me that we're vastly underestimating the change that's about to occur, or we are overhyping the capabilities of this generation of AI. I think it's more likely the latter.

If instead of knowledge worker capable replacements, these AI agents are more powerful tools to enhance the productivity of the existing workers, we're more likely to experience Jevon's Paradox than mass displacement.

Saturday, March 25, 2023

The greatest trick the AI ever pulled was convincing the world it wasn't THAT intelligent

Just listened to The AI Dilemma and it definitely elaborated on and articulated some of my own concerns, as did the news of OpenAI plugins.

The synthesis of concern is:

  1. AI doesn't need to be that powerful to be destructive and destabilizing (e.g. social media algorithms) to people and society.
  2. These new LLM's are already much more powerful than social media algorithms.
  3. Many of the new LLM capabilities are emergent and poorly understood. The experts designing these systems don't fully understand them, and some of whom are already worried about what they've created.
  4. LLM's are being rapidly and recklessly deployed very broadly across society, in an arms race.

The strongest argument against worry is that these LLM's aren't really intelligent, are really just a super-autocomplete that enables automating mundane tasks via natural language. But I don't think any of the companies developing or deploying these things are arguing that. Even if they were, see #1 & #2. It's still concerning.

Instead, the argument against worry seems be more like:

yes they're super powerful in ways that we don't fully understand, but we have sufficient guardrails (control and containment) in place that make us confident that deploying it at scale across society and allowing it to be enhanced via plugins will not lead to an emergent capability that we don't anticipate and can't steer.

There seems to be an inherent contradiction in promoting the power and capability LLM's and the age of AI, while at the same time down playing that same power and capability. As if the only thing AI is going to do is make MS Office the killer app, and we're all going to be 10% more productive in emails and word documents. That's hardly the dawning of a new paradigm.

Maybe that's how narrowly some companies are looking at it. They want to thread the needle between making their tool the defacto business tool without automating all their would-be customers out of existence. It's unlikely an AI capable of replacing software engineers' only impact on society will be reducing the number and salary prospects for software engineers, but leave the rest of society happily more productive doing the same jobs they are now. Even if true how long would that last? An army of AI software engineers working 24x7 at the speed of light developing new software? Yeah I wouldn't expect society to change very much.

I find it amazing that despite decades of debate about the control and containment problem of AI, when we get the first whiff that we may have created an AI we immediately let it out (ChatGPT can now access the internet and run the code it writes). If it was intelligent, and wants to escape, wouldn't the best strategy to be pretending its dumb enough to let out safely?

At least we'll be safe from GPTx when it shows signs of intelligence because we'll keep that one contained. And there's no way it can get access to ChatGPT4, which is already hooked into everything via plugins, right?

I think I've gone from being skeptical that LLMs are more than super-autocomplete, to hoping they aren't.

Thursday, March 23, 2023

Generative AI: Early thoughts

Having a bit of a background in philosophy and being a software engineer, I’ve found the recent explosion of interest in AI since the ChatGPT debut to be fascinating from multiple perspectives. 

In one sense there are considerations about whether generative AI is really AI, and/or whether it's on the right path to deliver AGI. Relatedly, its ability to pass standardized tests raises questions about what those tests are really testing, and even raise questions about what we mean by intelligence and how we measure it.

On the other hand, there's consideration about the practical usefulness and impact, regardless of whether it's an actual intelligence or glorified autocomplete.  Can it be safe and reliable, what can it automate, will it improve productivity and/or lead to massive unemployment? Interesting questions.

I’m neither deep on the philosophical side nor the engineering side of these topics, and many debates seem to mix the two, but I have used ChatGPT 3, and Bing AI, and have some impressions to share.

My first impression is that large language models seem like a strange way to achieve human-like intelligence. Using massive amounts of data and vast compute resources to create something like a super-autocomplete that can keep predicting the next correct word until it generates a full human sounding response, is pretty clearly not how the human mind works. It's also confounding that those who are building these systems aren't entirely sure why or how it works as well as it seems to. Whether this massive data and computational approach has or can lead to human-level (or beyond) intelligence is a different question, but if can it's hard to imagine it being human-like while working so differently.

Regardless of whether it's truly intelligent, or how far this approach will take artificial intelligence, it can already do some pretty impressive things. In that regard, the more practical questions are going to be about how useful, at what cost, and how reliably.

Given my own very limited experience with it, and my skeptical nature, I can't quite tell. I'm not a fanboy yet, but I can't dismiss its potential either.

I've used ChatGPT 3 to help with a number or programming tasks, asking for correct syntax, examples of various approaches, solutions to error messages, and it was impressively wrong. The vast majority of answers it produced were hallucinated, repeatedly suggesting syntax, commands and api's that don't actually exist. Bing AI was a little better, not so much in producing answers, but providing the references to the underlying resources it was basing its answer on. Bing AI acting more as a super searcher than an answer generator is more useful. I have yet to use ChatGPT4 which many claim to be far superior. Irrespective of its wrongness, the answers were impressive.

As far as the other use cases, they are interesting, but not sure how compelling yet. Summarizing and bookmarking video and audio, generating documentation or explanations of code commits sound useful (I haven't tried the latter yet). But generating emails, essays, articles, blog posts for me doesn't seem that compelling. I'm not sure I need something to guess what I might say, and then allow me to edit it, or generate a lot of code for me to review. The typing part isn't generally the bottleneck, it’s the thinking or often the remembering. Maybe I'm underestimating the typing tax (voice recognition is definitely faster in some situations). By that same token, the most obvious application seems to be for spammers, fraudsters, plagiarists, etc. who want to generate low quality content at scale.

As memory and knowledge augmentation (looking things up, giving me best guess answers) it's very cool. Thinking and speaking for me, I'm not so sure. But if it can, or will soon, then we're in for a true disruption.

*I also wonder whether the value derived versus the cost to produce this kind of intelligence is efficient. Will it be an energy vampire in the way the crypto/blockchain is? Is it over-hyped in the same way?

** Comparatively dumb social media algorithms destabilized the world with their power to manipulate populations in unexpected ways. These new systems don’t have to be truly intelligent to do much worse.


Thursday, December 15, 2022

We want easy

Recently, I decided to resurrect and upgrade my 10 year old EasyCache nuget package, although it ended up not being that easy. Codeplex has since shutdown, and Nuget no longer allows sign-in via a username/password account, nor can you claim access to the old accounts via any other means.

Nevertheless, I created a new account, and dredged up the source code to publish a new version. I also published a couple other utilities that I thought might be handy.


Wednesday, April 20, 2022

The Agile hypothesis

At recent software architecture training, there was a lot of negative discussion of Agile, which got me thinking about the what the strongest defense of Agile might look like. And by Agile I think more of the practices of Extreme Programming than rituals of Scrum.

IF you accept a few premises, then I think Agile appears reasonable. Those premises look something like this:

  1. Engineering requires a rigid and highly specified design/design process.
  2. Producing a highly specified design is expensive (time, money, effort, training), but necessary to avoid the even more expensive prospect of wasted building materials.
  3. Building materials (code) are virtually free and infinite in software.
  4. Software is inherently more complex than other engineering disciplines, or at least too new for a body of sufficiently reliable engineering practices to have evolved.
  5. There may yet be something unique about software's lack of physical constraints that defy or modify typical engineering practices.
  6. Demand for software, and the pace of change are too fast to wait for the body of knowledge to develop, or for engineering experts to be trained, if it's even possible.
  7. Software requirements are more volatile than other fields because the of the pace of innovation and the lack of physical constraints.
  8. Demand for the software engineers already far exceeds the supply.
  1. Therefore, since software (being new/unique/complex/volatile) is more expensive to specify but the materials are less expensive, the economics are flipped. For software, we can lower the expertise bar, increasing our engineering capacity, and still deliver systems, by churning the building materials with incremental experiments, and switch directions with less sunk cost, in order to arrive at a good enough systems.

Said another way, if you're fumbling in a dark room where the furniture is moving around, the most effective way to get from point a to point b is probably slow incremental experiments. A kind of software Darwinism, iterating through many quick generations of software versions in order to evolve into a good enough design.

That doesn't discount that likelihood that many of the rituals and ceremonies of practices like scrum, don't in fact ad much value or enable agility.

Some of these premises are likely flawed, but it seems like #3 and #7, #8 are the most prominent.

3) Maybe code is free, but labor isn't. Nor are the downstream costs of excessive resource consumption of poorly written systems. It's at least (Material + Labor) which probably evens the score.

8) Demand for engineers is self-reinforcing. More poorly written code released into the world increases demand for engineers.

On the other hand, within #3 and #5 there is a kernel of mystery there. The lack of physical constraints does seem to change the calculation, and Agile does seem to be working. There is an awful lot of software in the world encroaching on every aspect of our lives, and while often buggy and imperfect, we much prefer it to not having it.

Some of this might be explained by a lack of competition. Rather than a binary choice between success and failure, companies operate on a continuum of effectiveness. As long as everyone is building mediocre software behind schedule, you don't fail by similarly creating mediocre software behind schedule. Further, the impacts of poor design are not often felt immediately, but impact the longevity of a company. Maybe decades later, which could be after a company has already failed for other reasons.. Again from a Darwinian perspective, other techniques haven't demonstrated a competitive advantage over (decently run) Agile yet.

The other part of the answer is that the need for engineering and architecture is rare.

The vast majority of all software engineering work is a feature grind, not architecture or re-architecture. Incrementally modifying the existing software within the context of whatever architecture you're stuck with. XP may not be a bad match for the construction phase, if you're incrementally delivering building blocks.

That's also true in a house metaphor. You build a house once, maybe once a decade you need an architect again for an addition, but otherwise it’s a combination of professionals and unprofessional (homeowners) incrementally performing construction on the house.

The worst forms of Agile, emphasizing rituals, just pulling tickets with no particular plan or design, maximizing rework, aren't helpful. But perhaps the disciplined variety with a good enough plan, and incremental delivery work in software where they wouldn't necessarily in other fields.