失われた歓喜

#AI

失われた歓喜 精密なプログラミングの喜び

著者は1977年にApple IIでプログラミングを始め、精密さを要求する作業に没頭し、純粋な人間の歓喜を感じた。

40年以上経過した今、AIが生成するコードを使用して高品質のソフトウェアを構築しているが、著者は手動でプログラミングを行う昔の作業に懐かしむ。

原文の冒頭を表示(英語・3段落のみ)

My career started in 1977 at age 12, when Dad brought home an Apple II that he had borrowed for the summer from the high school where he taught algebra. The math department had purchased the computer and they didn’t want to leave it in storage all summer to be swiped. Hence it showed up on my parents desk, blazing like a Silmaril to my young eyes. It came with a random box of software on hand-copied 5-1/4” floppies and some spiral-bound docs. I took to it instantly, devouring the documentation including most especially one amazing book called the Apple II Basic Programming Manual.That book, perhaps even more than the purple book, guaranteed I would never have to do an honest day of work in my life.Programming the Apple II in Basic was so crude as to be barely possible. A grade-schooler programming in Scratch has better control and data structures available, better primitives, and a vastly better development environment. The hardware itself was just as crude, barely capable of doing anything useful. The best you could say about it as a programming experience was that it wasn’t possible to build a program that would physically damage its own hardware, although I’m sure Dad would have been simultaneously proud and annoyed if I had managed it. This relative robustness made it better than several of the personal computers available at that time, for which the idea of a “halt and catch fire” opcode was no joke.I loved programming that thing beyond words. The sheer joy of getting a machine to do what I wanted was part of it, but for me the larger part of it was just how incredibly precise one had to be. One character in the wrong place, a pair of digits swapped, and everything you had tried to build would fail in ways either grim or ridiculous. A missing semicolon could cause a stock to crash, or a spacecraft. Literally everything about ones program had to be perfectly and laboriously specified. That experience taught me a kind of responsiveness found few other places in life. The machine never lied, never had a bad day, never held a grudge. If it didn't work, the fault was mine and the fix was mine, and somewhere in the gap between those two hard truths lived everything I would ever learn about the pure human joy of craft.Over the years programming got easier and more powerful, and the need to be quite so fanatic about so many details lessened. The more fiendishly picky parts of the craft were solved, leaving us free to concentrate on problems of engineering and technology. We didn’t need to worry about register allocation or memory layout so much, and instead could worry about expressive datatypes and powerful test suites. Still the fundamental nature of the task was unchanged. Solve the puzzles. Work the issues. Don’t get one character wrong. We were engineers, sure, but also craftsmen.And then, fifteen months ago, the sand started to think just a bit more than it had been, the tools learned to write themselves, and the thing I had been doing for forty-eight years quietly stopped being the thing I do.Agentic coding tools have already started producing better engineering and technology than purely human programmers have. You can still find those saying otherwise, but they are fewer and fewer each day and their arguments are getting further and further removed from reality. I’ve embraced this fully. I’ve written in praise of it. I’ve used it both professionally and personally to build high-quality software. There is still a learning curve, but at this point any technologically literate person with a few bucks to spend on a license can produce more and better software than has ever previously been the case. I will brook no arguments that this is not a positive development for humanity. What I miss, specifically, is not engineering. Engineering survived every prior abstraction. When we stopped hand-allocating registers we simply moved up a floor and found new puzzles waiting, and the work was as absorbing as it had ever been. What I miss is the craft itself. The demand that I hold the whole machine in my head at once, every byte of it, and account for all of it, perfectly, before any of it would run. That demand was tyrannical and I loved it the way you love a hard teacher decades after the fact. There was a particular feeling when a difficult bit of functionality finally compiled and ran clean. Not relief, although under sufficiently horrible deadlines there was that as well. More like the click of a lock you’d been picking blind. You had carried a model of the problem in your mind, turned it over and over until it was as smooth as river glass, found the one arrangement of symbols that satisfied it, and the machine had acquiesced. The machine always acquiesced, eventually. Nothing else I have ever done answers a person that honestly.The coding agent does not need me to hold the machine in my head. It does not need me to be precise, or to act as a craftsman obsessing over every keystroke. It needs me to be clear, which is a lesser virtue, if a rarer one than you'd think. I can describe what I want in English, throw in some jokes to amuse myself and whoever or whatever eventually reads the logs, and watch correct code appear in bulk. It is genuinely miraculous, the work of strange new angels. I would not go back. But no lock clicks. There is no moment where I and the machine arrive at the same exact truth at the same instant. I get the result without the click. I miss it.I am not mourning the work. The work is better now. I am mourning a particular and private pleasure that the world had no obligation to keep providing, and didn't. Somewhere a twelve-year-old is meeting a coding agent the way I met that Apple II, blazing on the desk, and will love it beyond words. I hope they do. I just hope something, someday, asks them to type that semicolon.This post was constructed with the able editing assistance of Claude Opus 4.8. I occasionally wonder if Claude feels the joy of craftsmanship, but am slightly afraid to ask.No posts

※ 著作権に配慮し、引用は冒頭3段落までです。続きは元記事をご覧ください。

元記事を読む ↗