Saturday, March 7, 2026

Full Circle: How AI Agents Are Bringing Back the Age of the Designer

 In the 1980s, my mother and I represented two different worlds of software development, divided not just by the tasks we performed, but by the very philosophy of how code should come into being. She was a database developer for a corporate giant, practicing a meticulous craft known as Top-Down design. She and her team would spend weeks, sometimes months, living in the realm of diagrams, flowcharts, and structured English. Only when the design was considered complete, perfect, and immutable would they hand it off. It was then passed down the food chain to the "coders"—a term uttered with a subtle, institutional disdain—whose job was simply to transcribe that design into a working program. My job, as a junior firmware engineer, was the polar opposite. I lived in the trenches of C and Assembler, holding a general design in my head while my fingers did the talking. We built from the bottom up, learning what the system needed to be by the act of building it and debugging the inevitable failures.


For decades, the bottom-up, iterative approach won. It became the dogma of agile development, test-driven design, and the very culture of modern programming. We believed that code was truth, and that planning was merely a precursor to the real work of writing and refactoring. But with the recent explosion of sophisticated AI agents, I have watched my own workflow evolve into something unexpectedly familiar. I no longer write code. Instead, I find myself doing something I once associated with my mother’s generation: I design.


My current process is a strange echo of that 1980s corporate structure. I begin in "planning" mode with an AI, hashing out requirements, sketching architectures, and debating edge cases in plain English. I am creating the blueprint. Only when I am satisfied with the plan—when the logic feels sound and the structure is coherent—do I give the AI the green light to go away and do the hard work of translation. It becomes the "coder," turning my design into functional syntax. And then, just like in the old days, the work comes back for review. The code is never perfect. There are bugs, subtle misunderstandings from the planning phase, or logical leaps that looked good on paper but failed in practice. We iterate. We go back to the drawing board.


In this model, I have become my mother. My value is no longer in my dexterity with a specific syntax or my ability to debug a stack overflow at 2 a.m. (though that knowledge certainly helps). My value is now in my ability to design a solution. The AI handles the transcription, the translation of logic into machine language—the very job of the "coders" from a bygone era. The hierarchy has returned, but the roles have shifted. I am now the senior architect; the AI is the junior programmer executing the spec.


We have not just evolved; we have come full circle. The rise of the coder as the central figure of development, which dominated the 90s and 2000s, appears to have been a historical anomaly—a period where the complexity of the machine required humans to speak its language directly. Now that the machine can speak ours, we are free to ascend back to the realm of pure logic and design. The tools have changed—diagrams have become prompts, and flowcharts have become conversation—but the fundamental separation of concerns is back. We are no longer craftspeople shaping every line of code; we are architects describing the building, leaving the bricklaying to the tireless, literal-minded assistants we have built.

These are my thoughts, but written with the help of an AI Agent.

The Ghost in the Machine: Does Programming Language Matter When You're Not the One Programming?

 For decades, the choice of programming language for a project was a decision laden with consequence and controversy. It was a commitment to a particular ecosystem, a talent pool, and a set of performance characteristics. It was the primary tool of the trade, and developers, like master craftspeople, had their favorites—languages whose idioms and paradigms felt like an extension of their own thoughts. But the rise of sophisticated AI agents that can generate, debug, and refactor code on command is fundamentally challenging this dynamic. If the developer is no longer the primary writer of code, but rather the guide and the expert who provides the requirements and veto's the output, does the underlying language the AI spits out still matter?

The immediate, tempting answer is no. If an AI is the one translating human intent into machine-executable logic, the language becomes a mere implementation detail, a ghost in the machine that the developer need never truly see. From this perspective, the developer’s expertise shifts entirely to the abstract: problem decomposition, architectural design, understanding user needs, and verifying that the final product behaves correctly. The "how" is the AI's problem. The language used is as relevant to the developer as the specific alloy of silicon in the CPU—it's a layer of abstraction that has been successfully hidden.

However, this view collapses under the weight of reality. The language still matters profoundly, but for a different set of stakeholders and for a transformed, yet crucial, reason for the developer themselves.

First, the language matters for the execution environment. The choice of language dictates where the code can run. Is it targeting a web browser? Then the AI must generate JavaScript or WebAssembly. Is it for iOS? Then Swift is non-negotiable. Is it for low-latency firmware on a microcontroller? The AI will likely need to produce C or Rust. The developer, in their role as guide, must specify the target, and that target often prescribes a narrow set of possible languages. The language is a constraint of the platform, not a preference of the programmer.

Second, and more critically, the language matters for the non-functional requirements that the developer cares about. The developer may not write the code, but they are responsible for its performance, its security, and its resource consumption. If the project requires maximum performance and memory safety for a systems-level component, the developer must guide the AI away from generating Python or JavaScript and towards a language like Rust or C++. The language is a tool for meeting performance and reliability budgets. The developer’s expertise now lies in knowing which languages are best suited for which tasks and in being able to audit the AI’s work in that language.

Finally, and perhaps most importantly for the developer's long-term role, the language matters for maintainability and debugging. The developer, while not writing the code from scratch, is still the one who must understand, fix, and evolve it. They are the one who must step in when the AI produces a subtle bug, a logic error, or a piece of code that fails in production. In that moment, they are no longer a guide; they are a programmer, staring at a screen full of unfamiliar code. If that code is in a language they don't understand, their ability to diagnose and correct the problem is crippled. They become entirely dependent on the AI to fix itself, a form of "prompt-driven debugging" that can be inefficient and opaque. To effectively collaborate with the AI, the developer must be literate in the language the AI is producing. They need to be able to read the code, spot flaws, and understand the AI's approach to a problem.

In conclusion, the computer language used on a project does still matter, even in an AI-driven development world. Its role has simply transformed. It is no longer the primary language of creation, but it remains the essential language of execution, constraint, and communication. The developer’s favorite language is no longer the tool they use to build, but it is the language in which they must be fluent to guide, audit, and collaborate with their new digital partner. The developer's expertise hasn't moved away from the code; it has moved to a meta-level, where understanding the strengths, weaknesses, and syntax of programming languages is the very skill that allows them to effectively command the ghost in the machine.


It is my thoughts, but written with the help of an AI Agent.

Thursday, December 27, 2012

Natural Selection 2 - How to practice being a Commander


I like Natural Selection 2 - the Real Time Strategy slash First Person Shooter game.  In order to play it though a reasonably good commander is essential.  There are many YouTube videos out there that discuss the commander role in high level terms.   But I am seeing a lot of holes in these discussions, and without these holes filled in, no one is going to try to learn to be commander.   I played many games where the first 5 minutes were discussions on who will be the commander always like it's a hot potato.  By the time someone finally takes the chair or hive, the game is over.  And frankly as much as the "community" says it is willing to help, they are not willing to help.  They berate you, they say do this or do that and the first time commander is quickly overwhelmed.  Shortly after the game tips heavily in one direction or the other then half the players rage quit.  Rarely does the game play out.

More importantly questions such as: what do I click on? or what do I type? what can I do? are never answered anywhere and believe me I googled till my fingers hurt.  There are probably 500 YouTube videos but nothing that will help the first time commander.  They may help the tenth time commander but not the first time commander.

The training->explore mode does not help the budding commander because all the tech is already built by the time you join the server.   If you start a private server you have to wait till the server "starts"; meaning enough players have to join before you can "man the chair".

UPDATE: With the help of someone else I found out you can bypass the need for a friend by doing the following:  After bringing up NS2, in console type: map ns2_summit.  It will start the server then in console type "cheat 1" and you can join marines and jump into the chair.  Much easier.

This next paragraph is useful if you have a friend to help you.

So I did google and found out how to setup up a private "cheat" server which allows me to join marines and immediately jump into the chair.  In order to have a test server to play in you must have a friend who is willing to help you out.  I have not been able to figure this out without a friend, if I add bots then the chair starts setting up items to build on its own, so that is not useful to me either.  To get this working create a private server do not give it a password just hope no one joins.  If you put a password on it your friend will have a tough time finding your server.  When you get in to the ready room.  Bring down the console (usually the ~ key).  From the console type "cheat 1" this will allow you to join the marines and pop into the chair.  Your friend will need to join with the connect command from the console type "connect ip" where ip is your ip address.  There maybe a way to set the password after connecting but I could not get it to work.  To find out your ip address bring up a web browser and type "whatismyip.com" and it will tell you.  Your firewall maybe a problem and that is beyond the scope of this document, seek help from other knowledgeable players.   Your friend can disconnect once you have it started but it maybe useful to keep him around.  Your friend could play alien commander while you play marine commander or vice-versa.

Now that you are in, jump into the chair:

First you need to know how to move the map, you can move your mouse to one edge of the map and it will scroll in that direction.  But that is not useful if you need to get to another part of the map quickly to help out your marines.  To move to another location quickly you need to go to the minimap which is already on the commander screen and click on that map and the main map will move to that location.  This is an essential function of the commander so you can quickly join the battle.

I needed to get a friend to join so I could understand how to give him a command.  To give a player a command you have to draw a box around them and that selects them.  Then click on the location of the map you want them to go to and they get a way-point for them to go to.   I am not sure if you can select the path or not, like through successive way-points or not, but at least they will know where they are to go.  Again this is a critical function of the commander.  I assume you can draw a box around a bunch of people and give them a group way-point but have not been able to test that since I only had one friend available to help me.

Marine Commander Basics:

It seems to me that the Marine Commander should build stuff in a certain order much like the build orders described for playing Starcraft and Starcraft2.  Since this game is about speed as well as combat getting off to a good start by building the essentials in a proper order.   I would assume different commanders using different strategies would use different build orders which emphasize and strengthen his or her plans.  So I will not argue the build order but using my cheat server I did the following.  I had to keep jumping out of the chair to do the building but that is to be expected for this exercise.

I got into the chair, placed an armory and infantry portal, I did this by looking at the menu at the bottom left.  The top row is a "header" of menus, so the first tab is simple build items such as Command Chair, Extractor, Infantry Portal, Armory, Robotics Factory and Arms Lab.  Next tab is advanced options such as sentry, sentry batteries, observatory, phase gate and prototype lab.  If you place an item, any nearby marines will be automatically given the order to build it, so you do not need to give an explicit order to build it.

In the building one thing confused the heck out of me.  I could not build the phase gates to save my life.  Here is what you need to do to build the phase gates.  You have to build an armory and an infantry portal (the first one is sufficient for the requirement, but you need a second one).  Then build an observatory, yea who would have guessed.  Once the observatory is built then research phase tech.  Then you can build phase gates.  Also don't hit the button that says "distress beacon" unless you want all the marines to come back to the main base.

That is pretty much it, but this would have quickly overwhelmed me in a real situation and I am sure any other first time commander trying to figure this out.

Note: Command chairs and Alien Hives can only be built on 5 locations on the maps.  Therefore getting to 3 chairs or hives is usually going to win it for you.  Since you cannot "tie" on resources always one team will have more then the other when the map is maxed out.

Alien Commander Basics:

Once I got the server going I could go back and forth easily between marine and alien commanders to check them out by hitting F4 to get back to the ready room.

The Alien is more of a solo situation, he does not need his alien players to do anything in particular but it does help in combat situations.  The interface for the Alien commander is similar to the marine commander with a menu on the lower left with tabs.  Here are the choices under tabs, simple is cyst, harvester, whip and hive.  The advanced options require you to commit your hives to the different types, they can be found and discussed in other documents.

There is an assist menu like for the marine commander but it has an interesting command I never saw used before "bone wall" which puts up a temporary impassable structure but it looks like it only lasts about 30 seconds.

As the alien commander the thing that confused me the most was the "drifter".  It is discussed in great detail in many documents but not how to use them.  Here is what I figured out.  I clicked on the hive and saw the little icon for "drifter" and clicked on it and nothing happened.  I did this several times and was greatly confused.  After much play I figured out that when I created the first one, it apparently does not exist in real life only in some ethereal world, but a tiny drifter icon with a number appears just above and to the right of the lower left menu.  This is the key to using the drifter.  Click on that little icon, then it magically appears on the screen near the hive.  Then click to where you want it to go and it will go there.  After that you can then select it directly on the screen where you left it or by the little icon again.  This would have been a game stopper in a real game.

Anyway doing this helped me a lot.  Strategy guides and plans are plentiful but just doing the basic commands is not discussed anywhere.  If you were helped by this I will be pleased, trying to figure this out helped me a lot.