Tell HN: A realization I've had about working with AIs and building software

18 points by keepamovin a day ago

Okay, here's my debrief.

What I've realized is this: AI is an amplifier of what you are. It's not a substitute - it just reflects and scales whatever you bring to the table.

When I was younger, I'd often just run at the wall and try to scale it fast. I'd throw a lot of code at the problem. Not out of carelessness - I was iterating quickly, looking for a working prototype that gave me feedback I could work with. Structure and architecture didn't matter to me as much - what I wanted was to hit the goal, the concept, the tangible result.

And that actually worked. I built a lot of stuff that way.

But I assumed AI would kind of "handle" the rest - that it would take care of the complexity, or clean things up. And what I've come to see is that AI just reflects your approach. If I'm in "throw code at the wall" mode, AI will just help me do that faster. Which can help. But it won't make the problem go away. It just accelerates whatever rhythm or method you're already in.

If you're designing systems, it can help you do that better. And if you're caught in a whirlpool of iteration, it can pull you in faster - unless you consciously step out and take a broader view.

That's the maturity I've been leaning into - stepping back, taking the time to think more expansively, seeing where the architecture needs to evolve to support the real model of what I'm trying to build. Because ultimately, building good software isn't just hitting the feature, it's about achieving a kind of mastery over the data and logic flow in the application.

There's something subtle there - like crossing the threshold between "everything technically works as a PoC" to "this is a robust, extensible system." The complexity isn't in the features themselves, it's in handling the state space, the transitions, the edges. It's in aligning the implementation with the model. When those are out of sync, you're constantly rubbing against invisible friction - and you know it, even if you can't immediately name it.

Today I had a moment that helped crystallize this. I was focused on this one feature - switching tabs and preserving focus state - and at first glance, it didn't seem like a big deal. But I just knew it was important. And in hindsight, it was a kind of genius intuition. Because solving that feature meant proving out a broader mastery of the data flow and internal consistency of the application. It forced the architecture to evolve in the right direction.

So this was the second kind of complexity - not about hitting a proof-of-concept, but about finessing the system into something real and usable, something that can hold together even as it grows. And being able to focus that amorphous challenge into a concrete goal - that's part of the craft. That's something I've learned, slowly, over time.

I think about people like Knuth - the legend of him sitting down and writing TeX or sendmail, and it just ... worked. Or people like Bellard who consistently produce numerous high-quality systems. I think what's cool about software is that it's a craft you can keep getting better at as you age. The ability to build clean, extensible systems isn't just raw talent - it's a process, and it deepens over time. Mastery.

So yeah, I've come a long way from the days of just hitting features as fast as possible. I want to take a less stressful approach, that's more thoughtful.

AI won't do that part for me. But it'll help me go faster once I've made the right decisions. It'll help me push further, once I've picked a good direction. It's a power tool. And like all power tools, it just makes you more of what you already are.

So that's my reflection. I'm curious about others' too - how has your approach to building systems changed over time? How do you think about AI now that the dust has settled a bit? What has your journey with software looked like?

skydhash 21 hours ago

My approach since I was in High School and started programming has always stayed the same.

It's actually very rare to have to innovate, starting from scratch. So whatever problems I need to solve, my first step is always looking for information. And more often than not, the solution is right there.

I don't spend much time at the keyboard. Most of my time is spent perusing books, articles, blog posts, and source code. Or talking to a domain expert. That's what will gave me the system design/architecture for what I want to build. Once that's done, it's pretty much a straight line, or better a spiral iteratively building and testing, going deep only when things matters.

This approach clashes with AI (at least from my POV), because they can't give you a coherent overview of a domain. It's always piecewise elements that are probably wrong in the problem's context, or just plain wrong.

I much prefer to go from general/introductory materials to very specific/advanced ones that matters with sources I trust.

As for the code, it's starting small, get it to work well, and then start on the next iteration. And thanks to the kindness of people, there's so many opensource code from which to learn from.

  • keepamovin 10 hours ago

    I'm also curious what kind of projects you work on.

    • skydhash 9 hours ago

      Mostly deep diving in startup projects as well as helping entrepreneurs getting their MVP out. I'm a freelancer, so often there's a very short period between learning the tools/framework/codebase and helping out with issues and features.

pkondle 12 hours ago

AI can't give complete answers for incomplete questions. Your questions are a reflection of your knowledge, skill, wisdom & gut. Some of those things are honed in the trenches.

mohi-kalantari a day ago

I always try to break out of local optimas I'm in and asking AI to give me other options/insights or even disagree with me. At the end we are steering the wheel and "amplifier" made sense to me.

I'm wondering how an "aggressive" button would look like in an AI, asking it to be less confirmative. Although I guess it will piss some people off since most of the times I just want a direct answer and get on with my code/life.

boricj 16 hours ago

I've used Copilot for the past six months or so, mostly at work. I've talked to multiple colleagues and I seem to have much better luck using it than others, as in are you sure we're talking about the same tool? kind of discussion. I'm not sure why I manage to get so much more mileage out of Copilot than them.

I mostly throw entire reams of C++ compiler error messages while working on heavily templated, very intricate code full of compile-time and recursion magic. It usually converges quickly to the solution unless I happen to ask something impossible. I also use it for code completion that can often scale out to dozens of lines predicted correctly or close enough. Yet my colleagues seem to have trouble getting the AI to find its way out of a wet paperbag in simpler situations.

AI hasn't changed how I work, I tend to quickly design a rough idea in my head and then iterate on code until I've refined it to what I want. It has however increased my productivity significantly in two ways:

- I can reach beyond my current level on any topic up to a certain point (for example, my hatred of C++ metaprogramming knows no bounds but with AI I can pull off vastly more complex tricks than I can do on my own).

- It handles some of the tedious menial work for me, which gives me more brainpower bandwidth to focus on design and more speed for iterating on code.

> AI is an amplifier of what you are. It's not a substitute - it just reflects and scales whatever you bring to the table.

I'm a chaotic whirlpool with an affinity for heresy. Most of my professional work incorporates some unorthodox element that proves to be unreasonably effective for the problem at hand. Most of my personal work actively hurts the brain of my colleagues whenever I sit down and explain whatever crazy thing I'm currently hacking on.

I can bring a lot of pure unadulterated chaos to the table, which seems to be exactly what's needed when order has failed and everyone else is left scrambling for Plan B. I don't know what AI is amplifying in there or why I seem to have much better luck using it than my colleagues, but maybe it takes an heretic to talk to a soulless machine in an effective manner.

  • keepamovin 10 hours ago

    This is a great write up! Hahaha :) I'm curious what sort of products you work on at your company and personally if you want to share.

    • boricj 27 minutes ago

      I'm currently an embedded software developer, but I'm basically the guy you call when you're all out of options regardless of the problem. I've done plenty of debugging paratrooper-style for other teams, but some of my most infamous acts done in a professional capacity are:

      - Company network is melting down due to the CI load? Hack together in a hurry a Git proxy cache written in a hundred lines of Bash. It's still in production years after I've left that sysadmin position.

      - Company is trying to meld together two dissimilar pieces of software with wildly incompatible message buses and it's going so poorly it's threatening the entire project? Take a few days to improvise a message bus translator with a highly unconventional architecture. I then spend two hours in a design review meeting with the lead architects, who then decide to go along with it because they've failed to prove it couldn't possibly work and had no other option. This singlehandedly brought the project back under control, but it was pure black magic located right in the most load-bearing component possible and they took years to replace my Play-Doh with something saner.

      - Company wants to redo the entire CICD? Write a Jenkins plugin that exposes a Debian source repository as an organization folder. With a suitable Jenkinsfile, it essentially turns Jenkins into a bona fide Debian build server, complete with proper dependency tracking. Management decided to go with a more traditional solution (OBS), at the cost of maintaining two different orchestrators and sets of workers.

      As for my personal work, most of it is just various open-source contributions and faffing about on random stuff that never sees the light of day, but some of the things that actually ended up in the wild are:

      - A Ghidra extension that can export relocatable object files out of a program selection. The simplest way I can explain it is Mad Max, but with program bits instead of car parts.

      - Porting the epsilon firmware for the NumWorks calculator to the HP Prime calculator (another calculator manufacturer) and sending a pull request to the epsilon repository.

      I should probably make an effort to actually finish more personal projects, release them and write up about them, but being chaos incarnate is somewhat antithetical to that.

snappyleads 5 hours ago

I've been coding since I was 12 years old and now I am in my late 30s.. What use to take me 6 months to deliver now takes me days with AI .. I don't think it's a reflection of me - I think it's the brilliance of AI.

bobdigit a day ago

> AI is an amplifier of what you are

All good point. I'd say "AI is an amplifier of what you want", with all the consequences that entails. Because of its amplifying power, if you can be intentional about it, you can steer or explore avenues that you yourself would otherwise not attempt to.

The ease of which you can jump out of your "local you" basin is still very under appreciated (which reminds me of this post https://open.substack.com/pub/signull/p/answers-are-now-insa...)