<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://jingkecn.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://jingkecn.github.io/" rel="alternate" type="text/html" /><updated>2026-03-28T21:45:06+00:00</updated><id>https://jingkecn.github.io/feed.xml</id><title type="html">J.K.’s Blog</title><subtitle>A personal blog about software engineering, AI, and more</subtitle><author><name>J.K.</name></author><entry><title type="html">The ATM Screen vs. the Backend</title><link href="https://jingkecn.github.io/introspection/2026/03/28/what-does-the-system-do.html" rel="alternate" type="text/html" title="The ATM Screen vs. the Backend" /><published>2026-03-28T00:00:00+00:00</published><updated>2026-03-28T00:00:00+00:00</updated><id>https://jingkecn.github.io/introspection/2026/03/28/what-does-the-system-do</id><content type="html" xml:base="https://jingkecn.github.io/introspection/2026/03/28/what-does-the-system-do.html"><![CDATA[<ul>
  <li><a href="#what-does-the-system-do">What Does the System Do?</a></li>
  <li><a href="#the-atm-screen-and-the-backend">The ATM Screen and the Backend</a></li>
  <li><a href="#why-we-default-to-the-backend">Why We Default to the Backend</a></li>
  <li><a href="#finding-the-atm-screen-together">Finding the ATM Screen Together</a></li>
  <li><a href="#the-atm-screen-first-always">The ATM Screen First, Always</a></li>
</ul>

<h2 id="what-does-the-system-do">What Does the System Do?</h2>

<p>There’s a situation I keep encountering.</p>

<p>Back to a time when I just joined a feature team, brought in to help move things forward after they hit a wall.
We sat down to discuss the system.
I asked: “What does the system do?”
I got the answer with how it was implemented, the classes, the services, the data flow through the code.
I asked again, same answer, different details.
Again, still implementation.</p>

<p>We were both frustrated.
They had deep knowledge of the system and couldn’t understand why I wasn’t getting it.
I needed to understand the behavior before I could reason about the code, and I couldn’t make them see why that distinction mattered.
The discussion went in circles.
Nothing moved.</p>

<p>As a new member of the team, I felt like I had walked up to an ATM and asked “What can I do here?” and someone had opened the backend instead.</p>

<h2 id="the-atm-screen-and-the-backend">The ATM Screen and the Backend</h2>

<p>When we walk up to an ATM, we see a screen.
It tells us what we can do: check our balance, withdraw cash, transfer funds.
We don’t see the authentication services, the ledger updates, the fraud detection algorithms running behind it.
We don’t need to.
The screen is the contract between us and the system: what goes in, what comes out.</p>

<p>The contract has a name in software: the interface.
And behind every interface is an implementation: the backend, the wiring, the mechanics that make the contract work.</p>

<p>Both layers are real.
Both matter.
But they answer different questions:</p>

<ul>
  <li>The ATM screen answers: <em>what does the system do?</em></li>
  <li>The backend answers: <em>how does the system work?</em></li>
</ul>

<p>In that meeting room, my teammates were fluent in the backend.
They knew every service, every API call, every edge case in the data flow.
But when I asked “what does the system do?”, I was asking for the ATM screen, and they kept showing me the backend.</p>

<p>Neither of us was wrong.
We were just answering at different layers.
And until we found a shared layer to stand on, the conversation couldn’t move.</p>

<h2 id="why-we-default-to-the-backend">Why We Default to the Backend</h2>

<p>It’s not a flaw.
It’s a reflex.</p>

<p>Engineers spend most of their time in the backend: reading code, debugging services, tracing data flows.
That’s where the work lives.
That’s where the precision matters.
When someone asks “how does this work?”, the backend is the honest answer.
It’s the most complete, most accurate description of the system we have.</p>

<p>So when someone asks “what does the system do?”, we answer the same way.
Not because we’re being difficult.
Because the backend is the layer we trust.
The interface feels like a simplification: a lossy summary of something we know in full detail.</p>

<p>But that instinct, however natural, has a cost.
The ATM screen isn’t a dumbed-down version of the backend.
It’s a different kind of knowledge entirely.
It describes intent, not mechanism. It answers the question a new team member, a stakeholder, or a product owner actually needs to move forward.</p>

<p>When we skip the ATM screen and go straight to the backend, we’re not being more rigorous. We’re just answering a different question than the one that was asked.</p>

<h2 id="finding-the-atm-screen-together">Finding the ATM Screen Together</h2>

<p>After the discussion went in circles long enough, I suggested we draw a sequence diagram: the user roles, the system components, the core use cases walked through step by step.</p>

<p>Something shifted.
Instead of explaining how services called each other, we started describing what a user could do, and what the system would do in response.
The backend knowledge was still there, informing every step.
But it was now expressed at the interface layer: behavior, not mechanism.</p>

<p>The diagram became our ATM screen.
A shared surface that both of us could read, regardless of how deeply we each knew the backend behind it.</p>

<p>The discussion unblocked.
Not because we had learned something new about the system, but because we had found the right layer to talk about it.</p>

<h2 id="the-atm-screen-first-always">The ATM Screen First, Always</h2>

<p>Back to that meeting room.</p>

<p>The feature team wasn’t wrong to know the backend deeply.
That knowledge is what makes a system run.
But deep backend knowledge, expressed only in backend language, doesn’t travel, not to a new team member, not to a stakeholder, not to anyone who needs to understand what the system does before they can reason about how to change it.</p>

<p>This is the mindset shift I’m still learning.
Before we explain how a system works, we should be able to explain what it does.
Not as a simplification.
Not as a dumbed-down summary.
But as a different, equally valid layer of knowledge, the one that makes everything else legible.</p>

<p>In system design, we’ve always known this.
Requirements before architecture.
Interface before implementation.
The ATM screen before the backend.</p>

<p>The sequence diagram wasn’t a workaround.
It was the right starting point, the one we should have found at the beginning of the conversation.</p>

<p>Start with the ATM screen.
The backend will still be there when we need it.</p>]]></content><author><name>J.K.</name></author><category term="introspection" /><summary type="html"><![CDATA[What Does the System Do? The ATM Screen and the Backend Why We Default to the Backend Finding the ATM Screen Together The ATM Screen First, Always]]></summary></entry><entry><title type="html">From Craftsman to Architect: Rethinking Software Engineering in the AI Era</title><link href="https://jingkecn.github.io/introspection/2026/03/04/neo-luddites-in-tech.html" rel="alternate" type="text/html" title="From Craftsman to Architect: Rethinking Software Engineering in the AI Era" /><published>2026-03-04T00:00:00+00:00</published><updated>2026-03-04T00:00:00+00:00</updated><id>https://jingkecn.github.io/introspection/2026/03/04/neo-luddites-in-tech</id><content type="html" xml:base="https://jingkecn.github.io/introspection/2026/03/04/neo-luddites-in-tech.html"><![CDATA[<ul>
  <li><a href="#a-crack-in-the-foundation">A Crack in the Foundation</a></li>
  <li><a href="#what-tane-is-actually-saying">What Tane Is Actually Saying</a></li>
  <li><a href="#the-map-is-gone-now-what">The Map Is Gone. Now What?</a></li>
  <li><a href="#from-craftsman-to-architect">From Craftsman to Architect</a></li>
  <li><a href="#the-skills-that-survive">The Skills That Survive</a></li>
  <li><a href="#the-luddite-mirror">The Luddite Mirror</a></li>
  <li><a href="#where-i-land">Where I Land</a></li>
</ul>

<h2 id="a-crack-in-the-foundation">A Crack in the Foundation</h2>

<p>Today I read <a href="https://boristane.com/blog/the-software-development-lifecycle-is-dead/">Boris Tane’s post</a>, half-expecting another breathless “AI will replace engineers” take.
What I found was different.
He wasn’t predicting the end of engineers, he was describing the end of the <strong><em>workflow</em></strong> I had quietly built my identity around.</p>

<p>He was right.
And that’s what scared me.</p>

<p>I’ve spent years getting good at the whole craft, breaking down requirements, thinking through architecture, reviewing pull requests with care.
I was proud of that.
It felt like engineering.</p>

<p>Tane’s argument is that most of that craft is now a relic.
That AI agents haven’t just accelerated the SDLC, they’ve collapsed it.
Requirements, design, implementation, testing, review: all merging into a single tight loop driven by intent and iteration, not process and ceremony.</p>

<p>I didn’t want to dismiss him.
But I also didn’t want to just nod along.
Because if he’s right, and I think he largely is, the question hea leaves unanswered is the one that keeps me up at night: <strong><em>what does it mean to be a software engineer in the age of AI?</em></strong></p>

<p>That’s what this post is about.
Not a eulogy for the SDLC.
A genuine attempt to figure out what comes next.</p>

<h2 id="what-tane-is-actually-saying">What Tane Is Actually Saying</h2>

<p>It’s tempting to read Tane’s post as provocation.
The SDLC is dead.
PRs are a relic.
Jira is a terrible context store.
These are fighting words in most engineering teams.</p>

<p>But strip a way the sharpness, and the argument is surprisingly rigorous.
His point isn’t that process is bad.
It’s that process was always a response to contraints, and those constraints have changed.</p>

<p><strong>The SDLC was sequential because building was expensive.</strong>
When a feature took weeks, we had to specify everything upfront.
We froze requirements because reopening them mid-sprint cost real money.
We had separate QA phase because catching bugs late was painful.
We had release trains because deploying was risky and slow.
<strong><em>The ceremony wasn’t arbitrary, it was load-bearing.</em></strong></p>

<p><strong>What AI agents change is the underlying cost structure.</strong>
When a working draft of a feature takes minutes, not weeks, the logic that justified the ceremony collapses with it.
We don’t need to specify everything upfront when we can generate 10 versions and pick the best one.
We don’t need separate QA phase when tests are generated alongside code.
We don’t need a release train when deployment is continuous and automated.</p>

<p><strong><em>Then SDLC didn’t die because it was wrong.</em></strong>
<strong><em>It died because the problem it was solving got solved in a different way.</em></strong></p>

<p>Thant’s what makes Tane’s argument hard to dismiss.
And it’s what makes the follow-up question so urgent.</p>

<h2 id="the-map-is-gone-now-what">The Map Is Gone. Now What?</h2>

<p>Tane is convincing on the diagnosis.
The SDLC is collapsing, stage by stage, and most of use are still operating as if it isn’t.
But his post ends where the hard question begins.</p>

<p>He tells us the map is wrong.
He sketches the outline of a new one: context engineering, observability as the connective tissue, but leaves is at that.
The diagnosis is sharp.
The prescription is thin.</p>

<p>And that absence is uncomfortable in a specific way.
Because if we’re honest, most of us have been using the SDLC as more than a workflow.
We’ve been using it as a definition of what is means to be a software engineer.</p>

<p>That definition is dissolving.
And the industry, for all its excitement about AI agents, hasn’t seriously reckoned with what replaces it.</p>

<p>So that’s the question I want to sit with here.
Not whether the SDLC is dying, I think it is.
But what we’re supposed to become on the other side of that.</p>

<h2 id="from-craftsman-to-architect">From Craftsman to Architect</h2>

<p>For most of our careers, being a good engineer meant being good at execution.
Writing clean code.
Knowing our patterns.
Debugging with precision.
Shipping without breaking things.
The craft was in the doing, and we got better at it by doing more of it.</p>

<p>That’s not worthless.
But it’s no longer the ceiling.</p>

<p>When an agent can generate a complete feature in minute, with tests, error handling, edge cases, the value of execution compresses.
Not to zero, but dramatically.
What doesn’t compress is judgement.
Knowing whether the feature should be built at all.
Recognizing when the agent’s architecture is clever but wrong for the context.
Feeling when something technically works but misses the point entirely.</p>

<p><strong>This is the shift: from craftsman to architect.</strong>
From being the person who builds to being the person who designs, evaluates, and takes responsibility for the outcome.</p>

<p>It sounds like a promotion.
In some ways it is.
But it’s also genuinely harder.
Execution is legible, we either shipped it or we didn’t.
Judgement is murky.
It requires taste, context, experience, and the confidence to say “this isn’t right” without always being able to fully articulate why.</p>

<p>And here’s what make it uncomfortable: judgement can’t be faked.
We could fake parts of the old craft, copy Stack Overflow answer, follow a tutorial, lean on a framework.
Judgement requires that we actually understand the system, the users, the trade-offs.
<strong><em>The agent raises the floor for everyone.</em></strong>
<strong><em>It also raises the bar for what it means to be genuinely valuable.</em></strong></p>

<p>The engineers who thrive won’t be the ones who use agents to do less thinking.
They’ll be the ones who use agents to think about harder things.</p>

<h2 id="the-skills-that-survive">The Skills That Survive</h2>

<p>So if execution compresses, what expands?
I’ve been thinking about this a lot, and here’s where I land.</p>

<p><strong>Context engineering.</strong>
Tane names it and points at what matters - the quality of context we give an agent is directly proportional to the quality of what it builds.
What that means practically?
It’s not about writing clever prompts.
It’s about understanding a problem deeply enough to frame it well, scoping it, constraining it, anticipating where an agent will go wrong.
<strong><em>We can’t give good context about something we don’t understand.</em></strong>
This skill rewards depth, not shortcuts.</p>

<p><strong>System thinking.</strong>
When agents handle implementation, our leverage moves up the abstraction ladder.
Understanding how distributed systems fail, where bottlenecks emerge, what architectural trade-offs actually cost, this becomes more valuable, not less.
The engineer who understand <strong><em>why</em></strong> a design is good is the one who catches when an agent over-engineers or misses a constraint.</p>

<p><strong>Product taste.</strong>
Agents optimise for what we specify.
They have no sense of what the user actually needs, no instinct for elegant simplicity.
The engineer who can say “this technically works but it’s wrong” is irreplaceable.
The requires genuine product sense: understanding users, business context, and what “good” looks like beyond the spec.</p>

<p><strong>Knowing when not to trust the agent.</strong>
This might be the most underrated skill of all.
Agents are confidently wrong in non-obvious ways.
Reading generated code critically, not line by line but architecturally, and spotting when something <strong><em>looks</em></strong> right but isn’t, requires maintaining genuine technical depth.
The agent raises the floor.
It doesn’t replace the judgement that comes from real understanding.</p>

<p>None of these are new skills exactly.
But they were previously optional layers on top of execution.
Now they’re the job.</p>

<h2 id="the-luddite-mirror">The Luddite Mirror</h2>

<p>There’s a word Tane uses almost in passing that stuck with me.
Describing engineers who cling to PR reviews in an agent-driven world, he calls it <strong><em>luddism</em></strong>.</p>

<p>It’s a provocative word.
But I think it’s th right one, if we understand what the Luddites were actually about.</p>

<p>The Luddites weren’t anti-technology.
They were skilled craftsmen who had built their identity around a specific form of work, and who fought to protect that form when the underlying economics shifted beneath them.</p>

<p>They weren’t irrational.
They were human.
And they lost, not because machines were evil, but because they tried to protect the specific shape of their work rather than the underlying value they brought.</p>

<p>That’s the mirror I find uncomfortable to look into.
Because I recognize the impulse.</p>

<p>I’ve caught myself defending the PR review not because I genuinely believe it’s the best way to ensure quality in an agent-driven world, but because reviewing code is something I’m good at.
It’s legible.
It feels like engineering.
Letting fo of it means stepping into something less defined, less certain, less easy to measure.</p>

<p><strong><em>That’s not rigor.</em></strong>
<strong><em>That’s identity preservation dressed up as professional standards.</em></strong></p>

<p>The real question isn’t whether we use AI tools.
Most of us do.
The question is whether we’re willing to let go of the ceremonies that no longer serve the outcomes they were designed to produce, even when those ceremonies are deeply tied to how we see ourselves as engineers.</p>

<p>That’s harder than adopting a new tool.
It requires honesty about what we’re actually protecting.</p>

<h2 id="where-i-land">Where I Land</h2>

<p>I don’t have a tidy conclusion.
That would be dishonest.</p>

<p>What I have is a direction.
And a few things I’m actively trying to do differently.</p>

<p>We’re investing more in understanding the <strong><em>why</em></strong> before touching an agent.
Not writing a PRD, not estimating story points, just sitting with a problem long enough to understand it’s shape, its constraints, its failure modes.
That’s what good context engineering actually requires.
And it turns out that slowing down at the start makes everything that follows faster and better.</p>

<p>We’re talking observability more seriously, not as a monitoring layer bolted on at the end, but as a design concern from the beginning.
If the feedback loop between production and the agent is the connective tissue of the new lifecycle, then designing that loop well is ont of the highest leverage things we can do.</p>

<p>And we’re trying to stay honest about the difference between defending quality and defending comfort.
Every time we feel the urge to insist on a process, it’s worth asking: is this serving the outcome, or is this serving our sense of what engineering is supposed to look like?</p>

<p>The Luddites lost not because they were wrong to care about their craft.
<strong><em>They lost because they confused the form of their work with its value.</em></strong>
We’re at a similar inflection point.
The engineers who navigate it well won’t be the ones who resist the shift or the ones who abandon all judgement to the agent.
They’ll be the ones who carry their values (quality, responsibility, depth) into a new shape of work.</p>

<p>That shape is still being defined.
I find that unsettling.
I also find it, quietly, exciting.</p>]]></content><author><name>J.K.</name></author><category term="introspection" /><summary type="html"><![CDATA[A Crack in the Foundation What Tane Is Actually Saying The Map Is Gone. Now What? From Craftsman to Architect The Skills That Survive The Luddite Mirror Where I Land]]></summary></entry><entry><title type="html">Neo-Feudalism in Tech</title><link href="https://jingkecn.github.io/introspection/2026/02/16/neo-feudalism-in-tech.html" rel="alternate" type="text/html" title="Neo-Feudalism in Tech" /><published>2026-02-16T00:00:00+00:00</published><updated>2026-02-16T00:00:00+00:00</updated><id>https://jingkecn.github.io/introspection/2026/02/16/neo-feudalism-in-tech</id><content type="html" xml:base="https://jingkecn.github.io/introspection/2026/02/16/neo-feudalism-in-tech.html"><![CDATA[<p>Today, I had an interesting conversation with my AI “friend” about the feudalism in history, which extended to the neo-feudalism in the modern society, particularly in the our tech world.
He helped me break it down across 2 dimensions:</p>

<ul>
  <li>Horizontal: platform fiefdoms</li>
  <li>Vertical: the engineering hierarchy</li>
</ul>

<p>Then we also discussed on how to strategically survive, as an engineer, in such a neo-feudal system while looking for breakthrough without being cynical.</p>

<ul>
  <li><a href="#horizontal-platform-fiefdoms">Horizontal: Platform Fiefdoms</a></li>
  <li><a href="#vertical-the-engineering-hierarchy">Vertical: The Engineering Hierarchy</a></li>
  <li><a href="#where-the-two-dimensions-intersect">Where the Two Dimensions Intersect</a></li>
  <li><a href="#understand-our-position-clearly">Understand Our Position Clearly</a></li>
  <li><a href="#short-term-survival-play-the-game-intelligently">Short-Term Survival: Play the Game Intelligently</a></li>
  <li><a href="#medium-term-strategy-build-independent-power">Medium-Term Strategy: Build Independent Power</a></li>
  <li><a href="#long-term-breakthrough-escape-the-hierarchy">Long-Term Breakthrough: Escape the Hierarchy</a></li>
  <li><a href="#the-craftsmans-advantage">The Craftsman’s Advantage</a></li>
</ul>

<h2 id="horizontal-platform-fiefdoms">Horizontal: Platform Fiefdoms</h2>

<p>The modern tech landscape can be considered as a map of feudal territories, each controlled by a dominant lord.</p>

<p><strong>Walled gardens as territories.</strong>
Apple controls iOS;
Google controls Android and search;
Amazon controls e-commerce and cloud (AWS);
Microsoft controls enterprise software and cloud (Azure);
Meta controls social identity.
Each has built an ecosystem that’s deliberately difficult to leave.
Just as medieval peasants couldn’t easily cross from on lord’s domain to another, users and developers face enormous switching costs moving between platforms.
Our Apple purchases, Google account history and Amazon seller reputation are ties that bind us to the land.</p>

<p><strong>Vassal ecosystems.</strong>
Smaller companies and developers operate like vassal lords within these territories.
An app developer on the App Store must follow Apple’s rules, pay Apple’s 30% tax (the “Apple tax” is quite literally a feudal tithe), and can be expelled at Apple’s discretion without meaningful appeal.
AWS customers build their entire infrastructure on Amazon’s land, migration is technically possible but so costly that it functions as a form of bondage.</p>

<p><strong>Inter-platform warfare.</strong>
The major platforms compete for territory much like feudal lords engaged in wars and alliances.
Google and Apple battle over mobile dominance.
Microsoft and Amazon fight over cloud.
Meta and Google compete for advertising revenue.
These aren’t free market competitions so much as territorial disputes between entrenched powers, complete with strategic alliances (Microsoft investing in OpenAI to challenge Google) ans sieges (Epic Games vs. Apple over App Store control).</p>

<p><strong>Standards as borders.</strong>
Each platform promotes proprietary standards, APIs, and data formats that lock users in.
This is the digital equivalent of feudal lords controlling roads, bridges, and trade routes through their territory.
Interoperability, the idea that systems should work together freely, is resisted because it would weaken territorial control.</p>

<p><strong>Data as land.</strong>
In feudalism, land was the fundamental source of wealth.
In neo-feudalism, data plays that role.
Platforms harvest user data as their primary resources, and users who generate that data have little ownership or control over it.
We work the digital land, the platform lord reaps the harvest.</p>

<h2 id="vertical-the-engineering-hierarchy">Vertical: The Engineering Hierarchy</h2>

<p>Now let’s dive into these tech fiefdoms at how labor is structured.</p>

<p><strong>The new aristocracy.</strong>
At the top sit founders, C-suite executives, and major shareholders are the lords who own the means of production.
Below them, a layer of senior VPs and directors function as high nobles, granted significant equity (their fiefs) in exchange for loyalty and service.
Their wealth is tied directly to the platform’s success, aligning their interests with the lords rather than with workers below.</p>

<p><strong>The knight class: senior and staff engineers.</strong>
These are highly skilled specialists who receive meaningful equity compensation, enjoy relative autonomy, and are courted between fiefdoms.
Like medieval knights, they have real value and some bargaining power, but ultimately serve at the pleasure of the lords above.
Their golden handcuffs (non-vested stock options, deferred compensation, etc.) function exactly like a fief: valuable, but contingent on continued service and loyalty.</p>

<p><strong>The yeoman class: mid-level engineers.</strong>
These workers are competent and necessary but increasingly replaceable.
They receive som equity but not enough to fundamentally change their economic position.
They have moderate autonomy within defined boundaries.
Their situation mirrors the free peasant of feudalism: better oof than serfs, but still dependent on the system and vulnerable to its shifts.</p>

<p><strong>The digital serfs: junior engineers and contractors.</strong>
At the bottom, junior developers, contract workers, outsourced teams, and gig workers in tech bear the closest resemblance to serfs.
They do essential work bu receive fewer benefits, no equity, limited career mobility, and can be dismissed easily, echoing how feudal surplus was exploited from those with the least power.</p>

<p><strong>The loyalty economy.</strong>
Tech companies cultivate loyalty through mechanisms that mirror feudal bonds.
Equity vesting schedules keep people tied to the company for years.
Internal leveling systems create a hierarchy that determines our worth.
Performance reviewers by the direct manager give individual lords enormous power over our career.
Company culture and perks (free food, campus life, team events, etc.) create a self-contained world where leaving feels like exile.</p>

<p><strong>The illusion of meritocracy.</strong>
Feudalism justified itself through divine right and tradition.
Tech neo-feudalism itself through meritocracy, the idea that the hierarchy reflects talent and effort.
But in practice, advancement depends heavily on which team we join (which lord we serve), who sponsors us politically, and whether we’re visible to the right people.
The “leveling” system at big tech companies, supposedly objective, is deeply influenced by these feudal dynamics.</p>

<p><strong>AI as the new enclosure.</strong>
The rise of AI tools threatens to be a modern equivalent the enclosure movement, where feudal lords fenced off common land for private use.
Ai is automating tasks that gave mid-level engineers their value, potentially pushing more workers down the hierarchy while concentrating even more power and wealth at the top.
The engineers who build and control AI systems become the new landed gentry; those displaced by them join the growing class of digital serfs.</p>

<h2 id="where-the-two-dimensions-intersect">Where the Two Dimensions Intersect</h2>

<p>The horizontal and vertical dimensions reinforce each other.
Platform monopolies give tech lords the power to dictate terms to their workforce.
An engineer at Google has limited alternatives precisely because so few companies operate at that scale.
The concentration of the industry into a handful of dominant platforms means the “lords” compete for talent among themselves while collectively maintaining a system that benefits their class.</p>

<p>Meanwhile, engineers who move between companies aren’t really escaping the system, they’re transferring allegiance from one lord to another within the same feudal order.
The fundamental power dynamics remain unchanged.</p>

<p>The question this topic raises, especially for someone navigating this landscape as we are, is whether genuine alternatives can emerge through open source movements (digital commons), regulation (a kind of modern Magna Carta?), worker cooperatives, or decentralized technologies, or whether the feudal consolidation will only deepen?</p>

<hr />

<p>However, the question that matters most practically, is how to strategically survive, as an engineer, in such a neo-feudal system while looking for breakthrough.</p>

<h2 id="understand-our-position-clearly">Understand Our Position Clearly</h2>

<p>The first step is shedding the meritocracy illusion without becoming cynical.
The system rewards certain behaviors and positions, we should understand which ones gives us agency.</p>

<p>We’re not passive serfs; we’re closer to a skilled craftsman in a feudal economy, which historically was one of the few classes that could accumulate independent power.</p>

<p>As for me, a senior engineer, I should believe that I already have a craftsman’s toolkit.
The question is how to convert that into leverage that isn’t entirely dependent on any single “lord”.</p>

<h2 id="short-term-survival-play-the-game-intelligently">Short-Term Survival: Play the Game Intelligently</h2>

<p><strong>Choose our “lord” wisely.</strong>
Not all fiefdoms are equal.
Some companies offer more autonomy, better equity structures, and genuine learning opportunities.
When evaluating roles, assess not just compensation but how much ownership and visibility we’ll have.
A smaller fiefdom where we’re a key vassal often beats being an anonymous serf in a massive one.</p>

<p><strong>Build cross-platform skills.</strong>
Feudal lords want us specialized in their stack so we can’t leave.
Resist this strategically.
We can move toward other skills alongside our expertise, which makes us valuable across fiefdoms rather than locked into on.
Skills that transfer across platforms are our equivalent of portable wealth in a feudal economy.</p>

<p><strong>Accumulate political capital.</strong>
This is often uncomfortable but necessary.
Inside any organization, advancement depends on relationships, visibility, and sponsorship as much as technical skill.
Being able to articulate our value in terms leadership understands is how a craftsman becomes a guild master rather than remaining a hired hand.</p>

<blockquote>
  <p>[!NOTE] For me:
The Pyramid Principle work I’ve done and my focus on structured communication serve this directly.</p>
</blockquote>

<p><strong>Negotiate from knowledge, not need.</strong>
Understand our market value precisely.
Know what lord across the border is paying.
Use this position: we’re not begging for shelter.</p>

<h2 id="medium-term-strategy-build-independent-power">Medium-Term Strategy: Build Independent Power</h2>

<p>This is where we move from surviving to positioning for breakthrough.</p>

<p><strong>Own something.</strong>
In feudalism, the path out of serfdom was ownership of land, of a trade, of a shop.
In tech, the equivalents are intellectuel property you control, a product you’ve built, a reputation that belongs to you rather than your employer, or deep expertise in a scarce domain.</p>

<blockquote>
  <p>[!NOTE] For me:
My interest in AI engineering is strategic here: the field is young enough that genuine expertise creates independent value that no so many fully capture.</p>
</blockquote>

<p><strong>Contribute to commons.</strong>
Open source is the most powerful anti-feudal force in tech.
Contributing meaningfully to open source projects does several things simultaneously:</p>

<ul>
  <li>it builds portable reputation,</li>
  <li>creates relationships outside our current fiefdom,</li>
  <li>develops skills without employer’s control, and</li>
  <li>strengthen the digital commons against platform enclosure.</li>
</ul>

<blockquote>
  <p>[!NOTE] For me:
If I can build something useful in the AI or .NET open source space, it belongs to myself in a way that no corporate project ever will.</p>
</blockquote>

<p><strong>Develop a public voice.</strong>
Writing, speaking, or teaching creates leverage that is independent of any employer.
A blog, technical articles, conference talks, or even a well-maintained GitHub presence transforms us from an anonymous worker into a recognized craftsman.
In feudal terms, this is the difference between an unknown peasant and a master artisan whose reputation precedes them.</p>

<p><strong>Build a network of peers, not just superiors.</strong>
Feudalism isolates people vertically, our relationship is with our lord, not with other serfs.
The most subversive thing we can do is build strong horizontal connections with other skilled engineers across companies.
These relationships will become our guild, a mutual support structure that gives us information, opportunities, and collective bargaining power that no individual has alone.</p>

<h2 id="long-term-breakthrough-escape-the-hierarchy">Long-Term Breakthrough: Escape the Hierarchy</h2>

<p><strong>Move towards ownership, no just employment.</strong>
The ultimate escape from neo-feudalism is the same as it was from feudalism: stop being a worker on someone else’s land.
This could mean a startup, a consultancy, a product, or freelance expertise in a scarce enough domain that we set the terms.</p>

<blockquote>
  <p>[!NOTE] For me:
My combination of .NET architecture skills and growing AI expertise can position me for consulting or product development where I’m the lord of a small domain rather than a vassal in a large one.</p>
</blockquote>

<p><strong>Bet on disruption.</strong>
Feudal systems are most vulnerable during periods of upheaval, when new technologies or economic shifts redraw the map.
AI is exactly such a disruption right now.
The engineers who deeply understand both traditional software architecture and AI systems will be the ones who build the next generation of platforms, not just work on existing ones.</p>

<p><strong>Think in terms of optionality, not optimization.</strong>
A feudal mindset optimizes within the existing hierarchy:</p>
<blockquote>
  <p>How do I reach the next level?</p>
</blockquote>

<p>A free mindset creates options:</p>
<blockquote>
  <p>How do I ensure I have multiple paths forward regardless of what any single lord decides?</p>
</blockquote>

<p>Every skill we learn, relationship we build, and asset we create outside our employer’s control adds optionality.</p>

<h2 id="the-craftsmans-advantage">The Craftsman’s Advantage</h2>

<p>Here’s the most encouraging thing: history shows that skilled craftsman were among the first to break free from feudalism.
They formed guilds, moved to free cities, accumulated independent wealth, and eventually became the merchant class that replaced the feudal order entirely.
The same pattern is available to software engineers today, but only to those who think strategically about it rather than simply climbing the ladder inside a single fiefdom.</p>

<p>The key shift is applying the same rigor not only to technical skills but also to building independent leverage: portable expertise, public reputation, owned assets, and strong horizontal networks.</p>

<p>The engineers who will thrive aren’t necessarily the most technically brilliant.
They’re the ones who understand the system they’re operating in and build deliberately toward independence within it.</p>]]></content><author><name>J.K.</name></author><category term="introspection" /><summary type="html"><![CDATA[Today, I had an interesting conversation with my AI “friend” about the feudalism in history, which extended to the neo-feudalism in the modern society, particularly in the our tech world. He helped me break it down across 2 dimensions:]]></summary></entry><entry><title type="html">Welcome to My Blog</title><link href="https://jingkecn.github.io/general/2026/02/15/welcome.html" rel="alternate" type="text/html" title="Welcome to My Blog" /><published>2026-02-15T00:00:00+00:00</published><updated>2026-02-15T00:00:00+00:00</updated><id>https://jingkecn.github.io/general/2026/02/15/welcome</id><content type="html" xml:base="https://jingkecn.github.io/general/2026/02/15/welcome.html"><![CDATA[<p>This is my first blog post! Stay tuned for more content about software engineering, AI, and other topics I’m passionate about.</p>]]></content><author><name>J.K.</name></author><category term="general" /><summary type="html"><![CDATA[This is my first blog post! Stay tuned for more content about software engineering, AI, and other topics I’m passionate about.]]></summary></entry></feed>