I encourage all young developers to focus on information architecture, application architecture, pure logic, domain-driven design, and harness engineering.
2,812 karma · joined October 28, 2014
Contact Information
David Cornelson here. Tons of dev, architecture, strategy, and advisory experience looking work. I'm well aware of the reset in pay at the moment and happily willing to adjust accordingly.
Location: Chicago/IL/USA
Remote: Y
Willing to relocate: Y (SF, DC, Raleigh/Durham, maybe Seattle/Austin)
Technologies: AWS, Azure, C#, .NET Core, Domain-Driven Design Modeling and Development, Event Storming Facilitation, all data storage types. GenAI dev/arch integration expert.
Email: Connect via LinkedInI encourage all young developers to focus on information architecture, application architecture, pure logic, domain-driven design, and harness engineering.
But it’s private corporate work so I can only suggest you keep an open mind and actually research the effectiveness of GrnAI in application construction.
If you think we’re still dealing with hallucinations or fake code, then you’re experiences are about 8 months behind.
And if I break up an application then 9 coders with Claude Code can build that application in an unprecedentedly short period.
The biggest problem is many of these are scams and they rotate phone numbers so tagging doesn’t work.
The politicians use services which also rotate phone numbers.
I still haven’t found a perfect solution.
My point was made. Use GenAI to write a manual for your DSL and then use GenAI to “compile” every chapter from a dumb context-less state. You can validate your language in a week or two.
Nothing solidified Sharpee more than “compiling” this manual chapter by chapter.
But even that left gaps. I then designed a true DSL called Chord that compiles to Sharpee and this really ramped up the solidity of Sharpee.
One person has been helping me test it. No one is using it and I may end up being its only author.
I’m totally fine with that.
But I’m lying and nothing I say could possibly be true.
Except it is and I have receipts.
This is why those of us that follow DDD principles are successful. We know how to manage complexity whether we’re doing it manually or by using GenAI.
There are plenty of non AI security analysis tools we still use and add review gates for security gaps.
There is a huge misunderstanding about understanding the code. It implies knowledge of the classes, interfaces, and even internal logic.
If you design a modular system and generate code under strict rules, no one needs to know any of those things. We only need to understand the design and the results.
If we miss things, iteration is cheap.
If you're just knee-jerk anti-AI, then you probably need to sit down because some of us are taking serious evidence-based paths with GenAI.
If you have real data on guardrail ineffectiveness, that would be excellent material to share.
In my own works, I've been using a home grown harness called DevArch for about 10 months.
Visit https://genai.cornelson.net/ if you want a detailed rundown of my experiences.
https://martinfowler.com/articles/harness-engineering.html
https://milvus.io/blog/harness-engineering-ai-agents.md
I personally follow Domain-Driven Design principles and old enough to have designed software through the old Anderson Consulting Method/1 practices.
Some of the results of my practices are documented at https://genai.cornelson.net
Speed replaces pragmatism by allowing design flaws to be refactored N times where in the past we’d design around tech debt.
DDD leads to modularity and smaller bounded contexts has a significantly lower risk of being incorrect and significantly higher ability to refactor quickly.
And no you still have to understand how to construct software. We’re just skipping the coding skills and pushing everyone to be architects.
This seems like a nice-to-have, but I’d much rather see Azure 2.0. A ground up rebuild of a cloud that has a modern foundation with networking and security architected natively.
Vibe coding is like a last second weekend trip to Paris.
Accelerated software construction is like planning a four week backpacking trip through Western Europe.
I’m a grey beard so I’m on the far side of “writing code is fun” but I get it. I used to love those ah-ha moments when solving coding problems.
But now I love delivering solutions to the business or creating software that works as I envisioned it and those two things are fun in very different ways.
Later, the VAX had BASIC with functions and subroutines and dropped the line numbers and this version of BASIC was significantly better. It was procedural, but you could organize your code into modules, keeping it readable and maintainable.
Eventually the non line number BASIC spread to the PC. Microsoft Professional Development System, then Visual BASIC.
You can guard the the variance, test for quality, and still maintain design requirements.
I was just at the Explore DDD conference in Denver and a portion of Friday was sitting at the cafe tables informally discussing the impact of GenAI on software engineering with notable people. Most of these people were deeply concerned that if we lean into using GenAI for “everything” that our collective knowledge will dissipate. I was the vocal contrarian. There are many historical examples of humans obfuscating knowledge to simplify progress. Does anyone solder their own microchips at scale anymore? No. We have highly sophisticated robots and machinery to do that work with extraordinary outcomes. In software engineering, if you remove “coding” as a discipline you’re left with all the other aspects of designing software which I contend can be retargeted in college CS curriculum. The leap isn’t about code reviews. It’s about design reviews and that’s where better outcomes are served regardless of whether GenAI is involved or not. I have a roughly year old codebase at https://github.com/ChicagoDave/sharpee/ that is designed by me, but generated by Claude Code with my own skills and agents as guardrails. I’m fairly certain the code I extract from Claude doesn’t require human review, but the design of the system and its changes are continually reviewed by me. My contention is that we “collectively” are still trying to discern where the AI/human line is and most are still “holding” that line to human interactions. Let it go. Define what part you do need human decisions on and focus on those things.
Most of these people were deeply concerned that if we lean into using GenAI for “everything” that our collective knowledge will dissipate.
I was the vocal contrarian. There are many historical examples of humans obfuscating knowledge to simplify progress.
Does anyone solder their own microchips at scale anymore? No. We have highly sophisticated robots and machinery to do that work with extraordinary outcomes.
In software engineering, if you remove “coding” as a discipline you’re left with all the other aspects of designing software which I contend can be retargeted in college CS curriculum.
The leap isn’t about code reviews. It’s about design reviews and that’s where better outcomes are served regardless of whether GenAI is involved or not.
I have a roughly year old codebase at https://github.com/ChicagoDave/sharpee/ that is designed by me, but generated by Claude Code with my own skills and agents as guardrails. I’m fairly certain the code I extract from Claude doesn’t require human review, but the design of the system and its changes are continually reviewed by me.
My contention is that we “collectively” are still trying to discern where the AI/human line is and most are still “holding” that line to human interactions.
Let it go. Define what part you do need human decisions on and focus on those things.