Zooming Out // Michael Bromley
search
Zooming Out
AI Made Me Write This
High Modernism & Software Design
What Might Happen If You Share It
But What About the Bus Factor?
Welcome to the Twitterscape
On Working Alone
Mocking Classes with TypeScript
Museum of the Analog Native
A Tale of Two Issues
Notes on AngularConnect 2017
The Covert Opt-In
Going Static with Hugo
About
Productivity Is Happiness
The Elevator of Infinite Abstraction
Some notes on Angular 2 AoT mode with Webpack, Sass & ngtools
SKQW: JavaScript Audio Visualizer
An Early Look at SKQW: JavaScript Audio Visualizer
Why I Haven’t Fixed Your Issue Yet
Components with Custom Templates in Angular 2 (beta.7)
Angular 2, CommonJS and Circular Dependencies
AngularConnect: Summary and Analysis
The Republic of Virtue: Terror, Tolerance and the Internet
Fixing Chrome Autofill: Mysterious Wrong Values Solved
Automatic @import of Less/Sass files with Gulp
angular-wordpress-seed: A complete example project with AngularJS and the WordPress JSON REST API
A Note on Angular Expressions And JavaScript Identifiers
Chromata: A Generative Art Tool
Book Review: Responsive Web Design with AngularJS; plus Musings on Technical Writing
Exploring ES6 Classes In AngularJS 1.x
The Programmer Dad
One Year of GitHub and Open Source
Heavenly Glory: Instant Kung Fu with WebRTC + Web Audio
Building a 3D Game with CSS + HTML
CSS Space Shooter
My Thoughts on ngEurope 2014 and AngularJS 2.0
Writing Multi-Element Directives in AngularJS
CSS + JavaScript 3D Butterfly: A Case Study
Experiences Building a Website with AngularJS + WP-API (WordPress API)
Horizonal.js
Draw A Cat
SoundCloud Visualizer
A Note on Touch (Pointer) Events in Internet Explorer
Enable Rich Social Sharing in Your AngularJS App
A Killer Startup Idea
What Makes A Good Tech Talk?
Site-Wide Split Tests With Google Analytics Content Experiments
Paginate (almost) Anything in AngularJS
Auto-breadcrumbs with angular-ui-router
Simple 1D Noise in JavaScript
Confessions of an Intermediate Programmer
Audio Visualization with Web Audio, Canvas and the Soundcloud API
Using Disqus with AngularJS
An Overview of the ng-conf 2014 Presentations
An Ordinal Date Filter for AngularJS
How I got Zurb Foundation 4 to work with IE8 with zero lines of code
↑↓ to move · enter to open · esc to close
11 Aug 2026
5 min read
essay
It’s mid 2026. We’re over 6 months past the point where most people in the software industry have accepted - grudgingly, eagerly, or otherwise - that everything has changed and that there’s no going back.
I did a round of interviews with our dev team recently and I asked if anyone can remember the last time they wrote a function. Most couldn’t. Same for me.
What’s still true right now is that without oversight, AI will generate low quality software. Whatever value we still have lies not in knowledge of APIs or algorithms. It lies at a higher level, which just so happens to be very well represented by natural language. It’s a combination of taste and knowledge of fundamental software engineering principles.
I plan to record for posterity (an old word for “the training corpus”) my thoughts on the topic of software design. The parts that are still worth knowing. Things that current AI often fails at, because of course things that it does well are hardly worth commenting on anymore.
This might grow into a small series as time and inspiration allows. The final notes of a developer whose career encompassed the rise and fall of StackOverflow, bookended by the coming and going of the IDE as the dominant software development tool.
With the grandiose part out of the way, let’s talk about a topic I call “zooming out”.
The local maximum
A common issue with AI is that it solves only the immediate problem without a proper appreciation of the wider code base. This manifests as:
multiple duplicated functions that do the same thing, re-implemented over and over ad-hoc
api calls that have their own error handling and retry patterns rather than a single shared system
ui elements that don’t follow the established design system
This is a form of a “local maximum” - the solution looks optimal only when you consider this small area of the code base. But when you zoom out, there’s a global maximum just out of sight. The global maximum is the optimal solution. You can’t see it though without knowing the overall shape of the project. This requires the ability to zoom out.
The local maximum is the best you can do without zooming out.
When you start a session and give AI a task, how does it figure out what to do? It greps some strings and reads some files. Roughly what a human dev would do if dropped into a brand new project and told to implement a feature. The main difference is that the human dev would be rightly terrified of messing things up due...