2 ms·
I think a reasonable and sensible goal is for us to not mix the accidental and the essential. If we let AI handle what's accidental (as in not central to the so
by kayo_20211030 8mo ago
I think a reasonable and sensible goal is for us to not mix the accidental and the essential. If we let AI handle what's accidental (as in not central to the solution of the essential problem) developers can focus on the essential only. The current threat is that both types become intertwingled in a code-base, sometimes irreparably.
Fortran made that distinction clear. The compiler handled the accidental complexity of converting instructions to code, but never really obscured the boundary.
Take VB as an example from wayback. For the purposes of presenting a simple data-entry dialog, it removed the accidental complexity of dealing with Windows' message loop and resource files etc., which was painful. The essential complexity was in what the system did with the data. I suppose that the AI steering that needs to happen is to direct the essential down the essential path, and the accidental down the accidental path, and let a dev handle the former and the agent handle the latter (after all, it's accidental).
But, that'll take judgement - deciding in which camp each artifact exists and how it's managed. It might be a whole field of study, but it won't be new.
- conartist6 8mo agoConverting instructions to code is essential complexity. If you give up on doing the work necessary to understand what is and is not critically important, you are no longer competent or responsible. At that point the roles have switched and you are the mindless drone, toiling to serve AI. https://strangestloop.io/essays/things-that-arent-doing-the-thing https://strangestloop.io/essays/things-that-arent-doing-the-...
- kayo_20211030 8mo ago> Converting instructions to code is essential complexity I don't agree with that. If I want to add two numbers I'd like to write `a = b + c`. I do not want to write the machine code that effects the same result on whatever computer architecture I'm targeting. Precisely _how_ one adds two numbers is accidental complexity. Whether they need to be added, and what numbers should be added, is essential complexity. Fortran removed that accidental complexity and left the essential stuff in place. There were no fuzzy lines.
- conartist6 8mo agoWithout a method for how to do the work you won't be able to do the work. Is that not the definition of essential? But the way you've stated it, as long as you're pointing your microscope at one thing, that thing is "essential" and every other thing in the world is "inessential".
- kayo_20211030 8mo agoYes, I think where we ought to point the microscope is important - that's the judgement. Let devs focus the microscope on the essential stuff, the business-existential stuff, and let the tools remove the burden of having to deal with anything that's not fundamental to the solution of the problem. The tools, now, are just not structured to make this problem easy. There's a lot of mixing of what's essential and accidental that becomes unmanageable quickly - spaghetti novo. It will be an interesting journey. It'll take humans and machines (directed by humans) to line up on an agreement on where the microscope should aim.