Building a Code-Along Tutorial with AI (Part 1)
It occurred to me during a walk one day to try using gen AI to generate a tutorial to walk me through building a tool I wanted, instead of prompting it until it generated a version of the desired tool. I’m not sure if prompting gen AI to generate tutorials is a meaningful corrective against the deskilling trend a growing body of literature is warning about. But as a former senior manager of software engineering in transition, I haven’t shipped production software since the pandemic and thought this might be a way to start knocking some rust off. I decided to prompt a tutorial to build a couple things:
1. A data pipeline for retrieving my Bluesky posts on a schedule and storing them in a database
2. A CLI for querying the database
It took a few iterations with Claude Sonnet 5 set to Medium effort, but the end results were a decent tutorial and working code.
Version 1
The prompt:
As a software engineering instructor, generate a hands-on tutorial for me to follow in order to build the following software components:
- A data pipeline which retrieves my Bluesky posts via the AT Protocol API on a schedule and stores them in a database (perhaps SQLite to start).
- A CLI for querying the database
The result: bluesky-pipeline-tutorial.md
When I got to the part of project setup that said to create a .env file and add it to .gitignore, that exposed the absence of any prior instructions to configure a local GitHub repo. So I prompted for a tutorial revision.
Version 2
The prompt:
Revise the tutorial to include the necessary steps to configure a local GitHub repo. The absence of those prior steps stands out when project setup instructions say this:
Create .env (and add it to .gitignore immediately)
The result: bluesky-pipeline-tutorial-v2.md
I followed the revised tutorial all the way through step 5, but manual execution of the pipeline failed. It occurred to me that error I’d gotten might be because I didn’t properly account for having switched from the default PDS for Bluesky to Blacksky some time ago. But I narrowed my follow-up prompt to the specific error instead of something broader.
Version 3
The prompt:
Result was the following: [2026-07-12T21:46:07.397Z] Pipeline failed: Invalid identifier or password
Please generate a revised tutorial that addresses the issues.
The result: bluesky-pipeline-tutorial-v3.md
The revised tutorial added a subsection to verify authentication before completing the rest of the pipeline, including a test script followed by multiple steps to check if the failure repeated. I walked through the steps, now certain my attempt to connect to the wrong PDS was the culprit.
Version 4
The prompt:
I've verified the issue is not any of the items in the new step 3a, but I forgot that I no longer use the default Bluesky PDS, having switched to Blacksky PDS some time ago. Generate a revised tutorial which accounts for this possibility, so I can update the code accordingly.
The result: bluesky-pipeline-tutorial-v4.md
This version of the tutorial added an environment variable to make the PDS a configurable value. It also provided a script to resolve the correct PDS given a handle and the BlueSky public AppView. Writing and executing the script yielded https://blacksky.app as the correct PDS. Once I updated the .env file, the test-auth.ts script that failed after I followed the steps of version 3 succeeded. Finally, the first manual pipeline run also succeeded, retriving and storing 3295 Bluesky posts in a SQLite database.
I haven’t built the CLI yet, since I’ve been using Datasette to explore my downloaded Bluesky posts. I will write another post about the experience of building the CLI.
Who Counts as an American, Revisited
By the narrowest possible margin, the Supreme Court ruling in Trump v. Barbara preserved birthright citizenship—for now. In a concurrence with the form of King Solomon’s judgment but without its wisdom, Brett Kavanaugh split the baby of birthright citizenship in half, rejecting the majority’s finding on the Constitution along with Samuel Alito, Clarence Thomas, and Neil Gorsuch, but agreeing with the majority that the executive order was unlawful on statutory grounds. The vagueness of his “relevantly similar” language for future legislative denials of citizenship makes it far too easy for a hostile Congress to create a multitiered system of belonging much like countries without birthright citizenship. A future America with multiple generations born and raised here but without any say in how they are governed would be the result.
One common thread between Supreme Court rulings impacting black people and other people of color is the way their technical reasoning yields results which are indifferent to their humanity. Last week, this court ruled in Landor v. Louisiana Department of Corrections and Public Safety that the plaintiff—a devout, black Rastafarian who was forcibly restrained and had his dreadlocks sheared from his head—could not sue prison officials for this egregious violation of his religious freedom. This same court which barely preserved birthright citizenship gutted judicial review of terminations of Temporary Protected Status (TPS) in Mullin v. Doe, a decision which places hundreds of thousands of Haitians legally present in this country at risk of deportation along with 6000 Syrians. This is the court that Chuck Schumer jumped on social media to cheer as some great example of a check on Trump’s power. With judicial review not required, nothing prevents the Trump administration from canceling TPS (or allowing it to expired) for El Salvador, Lebanon, Sudan, Venezuela, and Ukraine.
The Supreme Court's earlier ruling in Louisiana v. Callais to kill Section 2 of the Voting Rights Act in all but name, on top of Brnovich v. Democratic National Committee (2021) and Shelby County v. Holder (2013) don’t just shift the electoral playing field further in favor of the GOP, but further toward the pre-civil rights era of American apartheid where black citizens were obliged to obey laws from governments which refused them protection and equality under them. Along with Trump’s executive branch and the GOP-controlled legislature, the federal government is trying to turn me and people like me into de facto U.S. nationals—people who cannot exercise voting rights at the federal level and cannot hold federal office—despite the law saying we are U.S. citizens.
Beyond the Supreme Court, we’ve watched Trump’s executive branch subject people of color to mass detention without trial domestically—in facilities like Camp East Montana, and the recently-closed Alligator Alcatraz (shuttered for cost, not conscience)—and abroad in places like El Salvador’s CECOT. Human Rights Watch has found that the mortality rate in ICE custody has more than doubled since January 2025. The Supreme Court enabled third country deportations with shadow docket rulings on two separate occasions in the past year. A refugee program which accepted roughly 100,000 people from all over the world in the final year of Biden’s administration has virtually collapsed. May 2026 marked the sixth consecutive month where the only refugees the United States accepted were white South Africans, admitted on the basis of a false and racist conspiracy theory about white genocide there. These are the stakes of Fall 2026 election and every election after: will the GOP be allowed to continue creating the white ethnostate they want, or will we stop them?
This Post story incorrectly characterizes this ruling as a departure from SCOTUS rulings “expanding religious freedoms”. Every ruling so described only expanded the ability of Christians to impose their interpretation of their beliefs in public spaces.
AI Is the Latest Pretext for Role Destruction in Tech
If you’ve worked in the tech industry for a while, you’ve seen numerous stand-alone roles disappear. The role of database administrator is one example. Quality assurance staff, whether you called them engineers or testers are another example. A previous employer of mine, having adopted agile delivery lead as a hybrid of scrum master and project manager years earlier, eliminated every employee with agile in their job title during the depths of the pandemic—1700 jobs in total. The disappearance of those roles did not mean their work disappeared. It meant the work shifted to those who remained. Developers and engineers inherited DBA and QA work. Product owners and senior engineering managers inherited the work of agile delivery leads.
In each case, the quality of the work and the level of productivity declined, while we who inherited the new work absorbed and adjusted to the broader scope. What tech companies previously did by blurring the line between development leads and development managers is now being applied to more senior engineering managers, brought by AI (at least according to James Stanier). At least in my experience, the blurring of roles and responsibilities at the next level already happened during the pandemic—prior to the launch of ChatGPT.
In the section of his piece with the heading “The evolving engineering manager role” Stanier lists the following things AI automates that “defined many engineering manager roles”: status updates, progress tracking, meeting summaries, and scheduling. This looks a lot like work I inherited after every agilist in my organization was laid off—in addition to my existing responsibilities. However, that list falls well short of defining all the work I did as a senior engineering manager for 12-18 engineers spanning 2-3 teams over the past few years. My responsibilities included quarterbacking production incident response, defining and driving application modernization, and providing technical feedback on significant architectural changes across multiple systems within our group. After the flattening that same organization executed in 2025, my scope of people management above and beyond my technical responsibilities grew from 7 engineers to 12 engineers. Combining people leadership with genuine technical depth was already the job description for engineering leaders at my level, along with fulfilling the responsibilities of people in roles which were previously eliminated. Stanier's framing treats coordination as organic engineering overhead. But in larger organizations, it was a stand-alone role—held by non-engineers—which senior engineering managers absorbed when those roles were eliminated.
Stanier again: “The coordination was never valuable in itself; it was a cost imposed by the limits of what one person could do alone. AI is removing that limit, and the data is starting to show it.” I’ve written previously about the impacts of organizational flattening that I’ve observed personally and read, but it’s worth drilling down on what Stanier oversimplifies by calling it “coordination”. That’s not the only thing happening when engineers collaborate to solve problems. They are sharing institutional knowledge. They are building tacit knowledge—the kind that exists primarily in relationships built through repeated collaborations over time. Engineers have much longer and more durable “context windows” than AI, and the software resulting from repeated collaborations over time is more likely to be better-designed and more robust than its AI-generated equivalent.
Stanier references The AI Productivity Paradox Report approvingly, but it contains findings which undermine his argument. He acknowledges its finding that high AI adoption results in 9% more bugs per engineer and PRs which are 154% larger on average. Amazon pivoting to requiring senior engineer sign-off on AI-assisted changes has likely caused review bottlenecks as AI generates large PRs faster than humans can review them. A Barcelona-based engineering leader for a large online wedding planning company I’ve spoken with regarding Stanier’s article has observed this phenomenon with a recent project his team led.
Even those boosting AI adoption acknowledge that it drives both significant code bloat, and the same report "observed no significant correlation between AI adoption and improvements at the company level”. By suggesting that senior engineering managers cede coordination and reporting responsibilities to AI and leverage it to generate code, Stanier is advocating compounding AI-associated risk and putting responsibility on the senior engineering manager to effectively mitigate both. As strategic decision-makers, senior engineering managers should be mitigating risk—not compounding it.
AI Can't Be Accountable, So We Must Be
This Tom's Hardware piece, and the timeline of Jer Crane (CEO of PocketOS) correctly place accountability for the recent destruction of his company's production data with Cursor, Claude, and Railway, but do not include Jer Crane himself. The phrase a computer can never be held accountable is even truer today than it was when first written in an internal IBM training manual back in 1979 because of how much more capable computer systems are today. Crane's timeline is valuable whether you're an engineer building systems that leverage AI, an executive selecting dependencies, or an engineering manager between them. This piece will explore those details to model a post-mortem with full accountability.
Crane lays out the stakes of his software working as-designed clearly:
"We build software that rental businesses — primarily car rental operators — use to run their entire operations: reservations, payments, customer management, vehicle tracking, the works. Some of our customers are five-year subscribers who literally cannot operate their businesses without us."
A single API call destroyed business-critical data for every PocketOS customer in 9 seconds. Railway's architecture storing volume-level backups in the same volume meant all the backups of that data were also deleted. They experienced what every business that uses AWS us-east-1 experiences when that region has an outage--but worse, because current backups no longer existed.
Crane includes the agent's "confession" in his post-mortem. Reading it in full reiterates numerous ways in which people granting an AI system both a broad scope of action and control over its own guardrails violates the principle of separation of duties with catastrophic results. Talking about Cursor's safeguards failing or the difference between Cursor's marketing and the reality of the tool in action doesn't change the fact that "a computer can never be held accountable". Buying access to Claude's most expensive model and configuring it "with explicit safety rules in our project configuration" integrated with Cursor does not transfer his share of accountability to Cursor, Anthropic, or Railway. Where specifically did the post-mortem fall short?
Railway's documentation on data & storage backups has a Caveats section which describes backups as "a newer feature that is still under development". Given this, a post-mortem that talked about migrating to managed database outside of Railway to enable multi-region database failover as a way to mitigate the risk of that feature would highlight the platform shortcoming and demonstrate a CEO taking proactive steps to make his service offering more resilient.
Per Crane's timeline, the agent encountered a credential mismatch while working on a routine task in a staging environment. The post-mortem doesn't explain what this routine task was, or why a credential mismatch led to volume deletion rather than a failed operation and a logged error. The lack of additional detail on this is an accountability gap for the PocketOS team, and ultimately the CEO. The same tool being used to make staging environment changes, generate code on its own, help engineers develop code, review it, and deploy it constitutes a separation of duties (SoD)failure. Before GenAI, my prior company used a GitHub bot to require different engineers to review and approve PRs for merge than those who implemented the change. If a team failed to install that bot on their repos, any SoD violations detected by the CI/CD pipelines would block production deployment until the violation was resolved or an accountable executive agreed to take responsibility for any production issues resulting from that deployment. Multi-layer SoD enforcement mechanisms are still needed even with GenAI.
From Railway's API documentation, the token created "to add and remove custom domains via the Railway CLI" was an Account token--the only type with "all resources and workspaces" scope. A post-mortem which pointed out the different available scopes and replacing that token with a Workspace or Project token scoped to staging would create a balanced picture of the CEO being accountable and reinforce his good points regarding the absence of feedback and human-in-the-loop opportunities in the token creation flow. Railway's token types are not as granular as those offered by classic personal access tokens or fine-grained tokens in GitHub, but they do provide the limited scope which limits the blast radius of misuse (accidental or intentional). The API tokens aren't time-limited, so a long-term step the CEO might recommend in the post-mortem is a Railway feature providing an expiration option as a security measure customers can choose to use. Crane's post-mortem does a lot of things right--but the missing piece is himself. Cursor, Anthropic, and Railway need to be accountable--but so does he.
Regardless of the field of endeavor, we need to take accountability for the outcomes of actions taken by generative AI systems. Here's what that looks like in practice:
- Build guardrails that people control, instead of delegating that responsibility to AI.
- Apply the principle of separation of duties anywhere AI agents act independently.
- Use environment-scoped access so that credentials which work in non-production environments don't work in production environments (and vice versa).
- Govern AI agents' scope of action by the principle of least privilege--just as we should for people.
- Require generative AI to ask permission for every change, even in your personal use--this shifts accountability back to people.
Companies Trying to Replace Middle Managers with GenAI Will Pay a Price
Organizational (re)design choices by tech companies are changing the role of software engineering leader in ways that make the job harder--and generative AI won't fill the gaps. Flatter organizations deprioritize developing people, which ultimately harms project delivery and undermines strategy as well. This piece by Meg Adams on the necessity of a shopkeeper mentality for software engineering leaders not only provides an effective leadership model but a description of the things we can do in the role which generative AI can't.
We need to do what we actually say our job is instead of spending our time in ways an executive without proximity to the work might think generative AI can replace. "Scanning” our work domain, adapting to the reality of today’s hybrid and distributed workplaces is how we can build, refine, and maintain the context necessary to deliver projects, drive strategy, and develop people. People can delegate—but maintain ownership and accountability. AI can't. We are uniquely capable of scanning--but also of micromanaging.
Flatter organizations can't know what they need to about how their people are doing, or where the friction is, or what they haven’t been seeing because they’ve eliminated the managers who could tell them and they lack the systems or signals that could tell them. Friction in key communication channels within the organization and blockers to work progress may eventually show up in other ways, but perhaps not before missed deadlines or costly mitigations occur. Why? Because the remaining middle managers in a flattened organizational structure have too wide a span of control to proactively identify and address issues that pose obstacles to work progress. In addition to the visibility issues, flatter organizations eliminate growth paths for employees. What does professional growth look like in an organization where you’re either an individual contributor or the CEO with little or nothing in between except generative AI? Where will the next senior leaders come from?
Believing generative AI will provide credible answers to these key questions seems exceedingly optimistic. What we’ve seen so far of how the efforts by companies trying to replace entry-level workers with AI does not inspire confidence. Senior engineers in these companies are burning out from overwork and leaving to find employers that enable them to better balance their personal and professional lives. Senior engineering leaders who face the prospect of directly managing dozens of people may make similar decisions rather than suffer burnout. Companies betting that generative AI can fill the gap are risking their long-term viability.
The Hidden Cost of "Just Build It with AI"
Someone recently posed this question in a Slack channel at work: “why pay for vended software that we can build ourselves now that we have the tools?” They asked this question in the context of Claude Code being made generally available for internal use. It's a fair question on the surface. These tools can be expensive, sometimes frustrating, and the capabilities of modern LLMs are genuinely impressive. But the growing power of Gen AI doesn't fundamentally change the buy-versus-build decision — here’s why.
Vibe coding is not a production strategy.
Yes, you can prototype a Salesforce-like CRM or a Slack-like messaging tool in a weekend with the right AI assistant. But if your business is going to depend on it, you're not just building a demo. You're committing to building, deploying, and maintaining something production-grade — with all the architectural decisions, security concerns, and UI considerations that entails. GenAI may accelerate parts of that process—but it doesn't eliminate any of them.
Now do the math on the opportunity cost.
Building your own internal replacement for a third-party SaaS product isn't a one-engineer side project. It's multiple engineers, sustained over time, making real decisions about infrastructure, reliability, and scale. That means:
- Salaries and benefits for the team dedicated to this effort
- Switching costs to migrate off whatever you're currently using
- Ongoing maintenance — because software doesn't maintain itself
And critically: every hour those engineers spend building your proprietary version of Slack or ServiceNow is an hour they're not spending on the software that is actually core to your business. What advances are your competitors making at your expense because they’ve fully dedicated their people to improving their core business functionality and bought tools that are tangential but helpful?
That's the real question to ask.
Is replacing a third-party tool — one that entire companies exist to build and support — actually a better use of your engineering talent than investing in the capabilities that differentiate your product in the market?
For most companies, in most cases, the answer is no. Gen AI is a powerful accelerant. But it doesn't change the fundamental logic of what's worth building versus what's worth buying.
Who Counts as an American?
I listened to the oral argument on birthright citizenship & so many people on bluesky were just straight-up wrong.
E.g. people were saying that the mere Q of whether Native Americans are citizens due to birthright citizenship is racist… But Wang (arguing for the ACLU) says it is not birthright.
[image or embed]— Kate Sills (
[@katelynsills.com](http://katelynsills.com)
)
Even if the specific question isn’t racist, the project which led to yesterday’s oral arguments before the Supreme Court definitely is. My parents were not citizens when they had my sister and I in the 1970s. The 14th Amendment is why we have birthright citizenship. Dishonest arguments and political rhetoric are how “who is a citizen?” became subject to the whim of popular opinion rather than the 14th Amendment and 150 years of jurisprudence. Any and all arguments that the definition of birthright citizenship should be smaller than that definition are being advanced by people who want to return to either the pre-civil rights era caste system of this country’s history—or the pre-Civil War era one which drew the circle of citizenship around landowning white men and no one else. The rancid fruit of birtherism from the start of the Trump era fell from a tree with deep roots.
GORSUCH: Do you think Native Americans are birthright citizens under your test?
SAUER: Ah, I think … so. I have to think that through.
[image or embed]— Aaron Rupar (
[@atrupar.com](http://atrupar.com)
)
Gorsuch's question of whether or not Native Americans are birthright citizens was an obvious and predictable one. Sauer’s lack of preparedness to answer that question should be embarassing, if not a firing offense. But it lays plain the objective of Trump’s regime—to reinstate the caste system which existed in this country prior to the success of the civil rights movement. The question of whether or not invaded people want the citizenship of the invader—applicable to every Native American tribe as it is—also applies to the Hawaiian, the Virgin Islander, the Puerto Rican, the Samoan, and the people of Guam. I’m not a Spanish speaker, but the phrase “Hawaii no, no” during Ricky Martin’s segment of Bad Bunny’s halftime show seemed (to me) to refer to how Hawai’i became part of the United States and a possibly a wish for Puerto Rico not to be treated the same way (I learned later my guess was correct). Reading The Great Oklahoma Swindle and trying to fit it into the context of the broader history of the country, one conclusion I’ve drawn is that the treatment of Native Americans by the federal government was a key part of the template for how they would later treat people in the territories they conquered outside the United States.
What passes as history instruction to children in the United States has many gaps. Unlike the absence of teaching about the Great Migration (my experience of high school American history), we got a bit about the Spanish-American War involving “Remember the Maine" and a little bit about yellow journalism. What we didn’t get was the larger context of how much fighting the United States did with the kingdom of Spain, how many lands became U.S. territories as a result—and how citizenship became conditional or required legislation to become automatic. The rights and privileges the people in these territories have by virtue of their relationship to the United States vary significantly (just like that of Native American tribes). The Jones Act is one example of a law which interferes with the ability of Puerto Rico, Guam, Hawaii, and Alaska to directly import what they need—a significant and continuing problem for Puerto Rico’s full recovery from Hurricane Maria as visually-depicted in a different part of Bad Bunny’s halftime show. Another thing I learned from one of my Crucian (person from St. Croix, USVI) friends, is that you can be a U.S. national, but not a U.S. citizen. For some time after the U.S. bought what we now call the U.S. Virgin Islands from the Dutch, the people on the island were U.S. nationals. It took legislation to make them birthright citizens, just as it did for Native Americans. It may still be the case that people born in American Samoa are U.S. nationals, who can choose to become naturalized citizens once they become adults. The difference in rights and responsibilities between U.S. nationals and U.S. citizens still seems caste-like to me.
In any case, the heart of the matter is this: the executive branch is asserting the right to decide by decree who counts as an American and who does not. The objective of Trump’s regime is to do to non-white Americans within the bounds of the United States what has already been done to people in territories like Puerto Rico, Guam, American Samoa, and the Commonwealth of the Northern Mariana Islands—take away their political power and remove the duty of the state to treat them equally. The same Supreme Court who reportedly expressed skepticism of the government’s position during oral arguments has already acceded to Trump’s demands along these lines on numerous occasions. Not only did they grant cert to these specious arguments in the first place, they ruled 6-3 that lower courts couldn’t use injunctions to block nationwide enforcement of Trump’s birthright citizenship decree less than a year ago. What many of us now call “Kavanaugh stops” was the Supreme Court legalizing racial profiling by Immigration & Customs Enforcement, an obvious and egregious violation of both the 4th Amendment and the 14th Amendment to the Constitution.
So even if the Supreme Court rules against the executive branch as they should, they deserve no praise at all. Their prior rulings enabled an inciter of insurrection to appear on the ballot again in the first place. Their shadow docket rulings continue to enable Trump to sow chaos in the country and abroad. John Roberts (and William Rehnquist before him if we’re being fully honest) led the Supreme Court to legitimize numerous arguments which have resulted in non-white people being treated as "less than”. They’ve turned the court away from undoing the harms of the past to enabling old harms in the modern day—just as Chief Justice Roger Taney did in his day. The damage they have done still remains, even if birthright citizenship is spared for now. The long-term project of shrinking the circle of citizenship is very much still in progress. We should keep that in mind, even as we acknowledge the specific ways in which a question of citizenship might not be racist.
The Price of Replacing Entry-Level Workers with AI is Too High
A friend shared this Fast Company piece in our group Slack recently on the costs to companies of replacing entry-level workers with GenAI. Issac, the mid-level Big Tech engineer in Megan Carnegie’s piece, is like a lot of engineers working on my teams. He’s seen firsthand what GenAI accelerates in his own work, as well as the downsides of its incorrect outputs and the additional time necessary to fix them. At my level, I must balance the increased demands for software delivery, a larger people leadership workload, the risks of burnout for my most-experienced engineers, and the downstream consequences of that burnout.
Contrary to the assumption that GenAI could make up the difference for fewer junior engineers, much more work rolled up to senior engineers. Instead of growing junior developers to the point they can do more work autonomously, they’re herding AI agents and spending an extra 4.5 hours a week just fixing their mistakes—in addition to doing their own work. When you have a dozen or two dozen direct reports, it’s much more difficult to detect and prevent burnout.
When a burned-out senior engineer leaves, you don’t just lose their knowledge and experience. The tacit knowledge built through what they worked on with those in their teams and across teams is lost as well. GenAI appears to be compounding the negative effects we’ve seen of repeated mass layoffs by numerous companies—loss of institutional knowledge at scale. The vicious cycle of burned-out senior engineers being replaced by less-experienced engineers and smaller workforces overall is already leading to less-resilient systems with more frequent outages taking longer and longer to resolve.
As a people leader, replacing entry-level workers with GenAI also eliminates opportunities for me to delegate, mentor, and teach. The vicious cycle has the paradoxical effective of devaluing me as a person who has grown institutional knowledge over the years and consistently shared it with others to help them grow professionally. At least one study has shown that this mentoring work increases motivation and psychological well-being. I’ve worked with dozens of engineers over the past 8 1/2 years in peer learning, people leadership, and mentoring contexts and contributed to at least 10 people getting promoted at least one level in that time. More than any individual system I’ve led delivery of, helping engineers grow their careers to succeed at even greater levels feels great.
These costs of trying to replace entry-level workers with AI are only going to grow as experienced workers who can afford to retire choose to do so, creating a demographic cliff Carnegie’s piece measures at 4.6M more workers retiring than there will be equivalently-qualified younger workers to replace them. Companies that keep hollowing out their future talent pipelines are placing their continued viability at risk. Those that use GenAI to augment their existing workforces instead will have a more sustainable future.
A Lament for Stack Overflow
The author of this LinkedIn post thinks he’s describing something great in Stack Overflow’s licensing of its Q&A data to AI companies and making much more revenue that way than it did as an open Q&A site. But what he’s actually describing is just one more instance of the growing trend of AI to destroy the real value of whatever it consumes.
Stack Overflow’s “death by AI” is personal because I was one of its public beta testers before it launched. I wrote some of the original questions and answers that seeded the site before it went live. The mistake is in seeing Stack Overflow as “just” Q&A pairs, and edge cases, and war stories. It was a community of people—far from perfect—but one that helped me get better at the work of software engineering.
It was a community that spawned a pretty good tech conference, Stack Overflow Dev Days, that I attended and learned a lot from. Stack Overflow also launched a job board that ultimately helped me find a job in healthcare IT. Thanks to that job, I visited South by Southwest and reunited with friends and former colleagues I hadn’t seen in a decade.
Good for Stack Overflow for making millions of dollars off our donated time I guess. But what they’re selling can only decrease in value over time because they destroyed the diverse communities of people who originated, grew and sustained that value. Whatever knowledge these companies grow inside their walls is necessarily limited by who’s inside their walls. No company has a monopoly on the best people or the best solutions to problems.
Wikipedia banning the vast majority of AI-generated content is just the latest instance of the growing pushback we’re seeing to what GenAI does. Open source project maintainers are banning AI-generated PRs because the vast majority of them are crap that doesn’t add value. This doesn’t mean that GenAI isn’t capable of impressive and genuinely useful things. But its utility still depends heavily on the skill of who is using it. And anyone who thinks this—or any other tool—can replace community and not destroy something truly necessary and valuable is sadly mistaken.
Software Development Roles: Lead versus Manager, Revisited
I first wrote about the lead vs manager distinction in software development in 2016. A decade later the line is blurrier than ever--and GenAI is part of why.
The original distinction was simple: if you spend half or more of your time writing code, you're a lead, regardless of what's on your business card. If significantly less, you're a manager. Organizations that keep those roles separate consistently ship better software and grow better engineers.
That's still true today. But GenAI has given companies a new reason to collapse these roles--and a new set of risks when they do.
Here's what's changed for each role:
For the Tech Lead:
GenAI raises the productivity floor for individual contributors dramatically. A skilled lead with strong AI tooling can produce what used to require a small team. Companies have noticed--and some are using this to justify asking leads to absorb management responsibilities. Don't be fooled by the productivity argument. Reviewing AI-generated code at scale, governing how your team uses these tools, and maintaining architectural integrity are already expanding the lead's cognitive load. Adding people leadership on top of that isn't a productivity gain. It's a recipe for the same burnout the hybrid role produced before GenAI existed.
For the Engineering Manager:
GenAI doesn't eliminate the core of the management role--it shifts it. The administrative overhead (status updates, reporting, some forms of performance documentation) should get easier. What doesn't go away: removing blockers, developing people, judgment calls about team direction, and now--understanding AI-assisted output well enough to hold your team accountable for it. AI-assisted--not generated--because people need to remain accountable for any and all software that ships. No blaming the AI for outcomes. Managers who stay deliberately close to how their teams are using AI will have a real edge over those who don't.
The job-search advice from a decade ago still holds: scrutinize the description, ask how the role is scoped, and look at the manager's span of control. What you find will tell you whether the company has thought clearly about these roles — or is using a familiar title to describe an unfamiliar burden.
Navigating the Great Delayering, Revisited
It’s been less than a year since I wrote this piece about engineering leadership inside a delayered organization. Here’s what I’ve learned since then.
When your rollup goes from 7 to 14 to 21 (or more) direct reports in short order, something has to give. What gives first is actually developing the people who report to you.
Delayering isn’t just a management inconvenience. It breaks the leadership pipeline.
In a healthy organization, people leadership starts small—a handful of reports, room to make mistakes—and learn from them, space to coach and be coached. Delayering eliminates that entirely. In my last organization, people leadership now starts with responsibility for two engineering teams. There is no shallow end of the pool anymore.
The way my last organization implemented delayering, team leads were turned into individual contributors with little warning beyond rumors on Blind. Imagine the whiplash of being promoted to lead a team in January only to be converted to a lead IC just a few months later. Nearly a year after implementation, there are still no clear growth paths or guidance to the next level for dozens of people in my line of business alone who went from being team leads with responsibilities for helping their direct reports shape their careers to individual contributors.
The ripple effects of delayering are real:
* 1:1 time shrinks. Feedback gets less tactically useful because the manager is too far from the work.
* aspiring leaders never get to test whether leadership is for them before being thrown into the deep end.
* senior ICs have to absorb mentoring responsibilities that aren’t formally recognized or rewarded.
* existing leaders get stretched until they break—and the institutional knowledge walks out with them.
The companies that leaned first and hardest into delayering (Meta in 2023, Amazon from 2024 to the present) have not obviously improved their products. In Amazon’s case, the combination of delayering, layoffs, and ramped-up GenAI usage has led directly to more frequent and severe production incidents. The already-fleeting margin improvements of delayering may yet turn into losses as a result.
When I evaluate my next role, among my first questions will be whether the professional growth of direct reports is a genuine leadership priority—not a talking point.
How I Created My First LinkedIn Carousel Post with Claude and Canva
A friend recommended I post more original content on LinkedIn as I enter the job market this year. Here’s how I used Claude, Canva, and other tools to create my first LinkedIn carousel post. First, I prompted Claude to look at my blog archive and curate the best 20 posts with career advice. Next, I asked Claude to convert one of the recommended posts into a LinkedIn carousel. After manually editing the HTML to update the content for the present, I opened up Canva and added screenshots of the HTML slides to a LinkedIn carousel template. After downloading the carousel in PDF format, I attached it as a document to a post and shared it with my network.
I’ve been blogging off-and-on for over 20 years, not always about my career, but enough that I expected there would be enough posts I could use as a starting point to share original content on a consistent basis. Here’s an outline of my initial Claude prompt that could be adapted and applied to any LLM:
<blog archive URL>
Review the provided URL and generate a table with the top <number of posts> links best suited to repurposed as LinkedIn posts. Each row should have the following columns: link to the blog post, <number of> items of key career advice the post contains, recommendation on whether significant rewriting is needed to make it relevant to the present day.
While I didn’t provide a persona in my prompt, I did provide details on how the response should be structured. Here is some of Claude’s “thinking” as it built a response to my prompt:
Now let me fetch the key career and leadership posts to understand their content before building the table.
I now have enough content from the key posts to build a comprehensive table. Let me compile this into a document.
Now I have enough content to build the full table. Let me create a nicely formatted HTML file with the table.
Here's your LinkedIn repurposing table with all 20 posts ranked and analyzed. A few highlights worth calling out:
Ready to post with minimal editing (5 posts): "Navigating the Great Delayering," "Tell Me About Yourself — Engineering Leader Edition," "Software Development Roles: Lead vs. Manager," "Idolatry of Innovators," and "The Problem with Exit Interviews" are all essentially evergreen and could go up this week with only length trimming.
...
Format tip: Several of these (especially #2, #11, and #13) would convert naturally into LinkedIn carousels — the structured advice translates well to a slide-per-point format.
Claude’s response was a nicely-formatted HTML table. The column with blog post links included the date of the blog post. The “rewriting needed?” column provided unexpected depth regarding the degree of rewriting needed, recommendations of specific updates to be made, even advice on the best time of year to share a particular post. The format tip which came just before the HTML table is what sent me down a bit of a rabbit hole to try and create a LinkedIn carousel instead of a traditional post.
Building on the output of the first prompt, and advice I read elsewhere regarding LinkedIn carousels, my next prompt was this:
As a LinkedIn content specialist, turn the contents of post #2 into a LinkedIn carousel of 5-15 slides in length.
Unlike my initial prompt, I did provide a persona. The range of slides gave Claude enought flexibility to size the content to a sensible number rather than stretching or cramming it into too many or too few slides.
The HTML version of the carousel looks great—I’ll definitely make future carousels I publish available in that format as well as in LinkedIn. The main goal was posting on LinkedIn though, so I pressed forward. On my Mac mini, I used Cmd-Shift-4 to screenshot each HTML slide as a image. Then I dragged and dropped it into the template pages and resized the images to fit. After downloading as a PDF (a few times as my final walkthrough of the output revealed some things I wanted to tweak), I uploaded and published the post to my LinkedIn network. In the future, I’ll make the posts open beyond my LinkedIn network for broader reach.
This story of the use of “less lethal” munitions brought to mind a weird idea: the goon squad has become the dogs they used to use on black folks protesting for civil rights. Only the federal government has unleashed them on everyone.
2 cases of tuberculosis detected at El Paso ICE facility - The Texas Tribune
Concentration camps of earlier eras in both American history and world history killed their occupants with diseases, inadequate sanitation, and overcrowding.
Jackie Kennedy’s 1964 Letter Comes Back to Haunt Trump - The Daily Beast
Jackie Kennedy had a clearer and deeper understanding of the dangers of political patronage and corruption than anyone who works in and for the White House today. If our country survives this moment, merely taking Trump’s name off the Kennedy Center might not be enough.
From the Equal Justice Initiative 2026 calendar:
February 1, 1965 - Dr. Martin Luther King Jr. and more than 200 others are arrested and jailed after a voting rights march in Selma, Alabama
This is the centennial Black History Month www.instagram.com/reel/DUM0…
A sinister (and unfortunately appropriate in this moment) transposition of the National Anthem.