Craft, Code, and the tokenization of our trade

Craft, Code, and the tokenization of our trade

"We don't have factories that stamp out software. Rather we have groups of people trying to massage software into place." - Robert Martin

When I first discovered coding, sometime in middle school, I was hooked. The joy of problem-solving, the grind of a puzzle, the manifestation of an idea into something real, I loved it. From then on, I never stopped coding. I would code in class, on side projects, I would code sitting at picnic tables with friends while they talked and drank beer, I would fall asleep thinking about what I was working on and wake up ready to get to the keyboard right away. My now-wife calls it a coding blackout. I get sucked in, consumed by building.

In these 20+ years of coding, I have never seen this much change, this quickly. It's energizing and scary. It's why we see articles proselytizing the value of the developer, providing pragmatic perspectives, and mongering fear. Each take is valid, in some way, playing into the wide range of emotions that any developer or tech professional felt the first time they asked an AI to write them some code.

The Evolution of Abstraction

The history of software development follows a clear pattern of increasing abstraction. From assembly to C, from C to Python, from raw SQL to ORMs - each transition moved developers further from machine operations while expanding their problem-solving capabilities. Today's frameworks like Rails, Laravel, and Spring Boot represent another layer in this evolution, abstracting common patterns to focus developer attention on unique business challenges.

Coders are Token Factories

"The first step in modern mass production—and so ultimately in the creation of our depersonalized, quantity-minded world today" - Lewis Mumford

The harsh reality is that our jobs are generally rather repetitive. It's why these frameworks are so effective. The majority of software is boilerplate and these frameworks abstract some of that boilerplate. Most software is a series of steps for CRUD operations on a database. Thin wrappers over Postgres or MySQL. The role of the developer is to generate write the code that processes input and performs these operations.

If you squint your eyes, the interface of a user story given to a developer to create code is the same as an LLM creating code. A natural language description of requirements is given to someone (or something) that is competent at producing machine code that can meet those requirements. Those lines of code are tokens, produced by people character by character just like an answer prints on your screen when you ask a question of ChatGPT.

The Economics of Innovation

Coding is labor. It's labor I love, but it is still labor. For the past 20 years, there has been an imbalance between supply and demand, with massive demand for software developers and a limited supply. This has allowed developers to have pricing power, becoming some of the highest-paid entry-level jobs, no matter if it's in San Francisco or Chennai.

Combined with ZIRP, startups could raise venture capital, and enterprises could raise essentially infinite public capital, to chase after the high-margin dream of becoming a SaaS company. This chase gave even more power to developers, allowing not only for ballooning salaries but dramatic benefits like bonuses to take vacation, private chefs, and on-site masseuses.

The Remote Revolution and Global Equilibrium

The saving grace for the high-paid developers in America was collocation. It was and still is true that by collocating work, work gets done faster, and the quality is higher, but the American developers' refusal to return to an office removes that competitive advantage. As Western development teams fight to remain work-from-home, they remove differentiation against offshore and nearshore teams, forcing the hand of any thoughtful technical leader to look globally for talent rather than locally.

AI: The Next Layer of Abstraction

Layer in the capabilities of generative AI. Its ability to generate tokens code similar to those created by human developers foreshadows the next chapter or abstraction. Just as high-level languages freed developers from thinking about memory management, AI tools will liberate them from boilerplate code, enabling focus on higher-order problems: system architecture, business logic optimization, and novel computational approaches. At least that's the hope.

The Future of the Craft

Yes, applications get complex, and there are thousands of books, blog posts, podcasts, conference talks, lectures, and more that provide guidance on managing that complexity. All this advice is for human authors and readers of code. The design of a programming language is there to help humans create better machine code. Patterns such as SOLID, microservices, and TDD help human developers manage the infinite complexity of the applications we create better machine code. They are human solutions to human problems. As generative AI progresses, its capacity for abstraction, context, and reasoning will grow too, enabling developers to work at unprecedented levels of system design and architectural thinking, and enabling AI to skip the human step of writing code that people can understand.

Code is a craft not forgotten but maybe deprecated

This future is bright, scary, and energizing. It's like the first time I wrote code and deployed it. Wrestling with PHP and Apache to get an index.php to render on the open internet. AI brings that joy of creating to even more people, hopefully hooking them on building.

With all this said, I do wonder whether, in the future, I will lovingly write code with the languages of today like a woodworker clings to his hand tools. An homage to a craft evolving beyond its original form, not forgotten but transformed into something new and potentially more powerful. The future developer might operate more like a systems architect, focusing on the "why" and "what" of software systems while AI handles much of the "how" - creating not just applications, but entire new paradigms of computational thinking.

Richard Lee Abraham

Senior Software Engineer

2 个月

My biggest concern about AI is that it exacerbates a lot of problems already present in the industry. I've never seen a midsized to large company where cargo-cult programming (ie: devs doing something because its "the standard" or they saw it done somewhere else without thinking about why) wasn't at least a small issue. If AI code generation becomes a more widely adopted process, and I agree that it will, then you're going to see a lot more developers just "trust the AI" with out understanding why the generated code is correct or even if it's correct. On top of that it makes it harder for new devs to get into the industry. At most companies, a lot of the things AI can easily do are also the kinds of things you typically have junior devs do to learn the product and systems they'll be working on. If you automate these tasks it reduces the demand for junior devs which will create issues in the long run as the more senior people age out or move on. It was bad when I graduated in 2011 and it's only getting worse. I'm not even going to get into CS / CE students using AI in their work (because AI is great at the kinds of work students do) and not learning to read or understand code properly.

Mike Gehard

On a journey to integrate AI into agile software development. Just like agile practices changed our course from waterfall, I believe AI will shape our industry going forward.

3 个月

Well said sir. “hand crafting” code just can’t keep up with the demand. Will be a wild ride for the next few years.

要查看或添加评论,请登录

Austin V.的更多文章

社区洞察

其他会员也浏览了