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 6 days ago [-]
I'm also curious what kind of projects you work on.
skydhash 6 days 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 6 days 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 6 days 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.
3dsnano 5 days ago [-]
> AI is an amplifier of what you are
reading this made me go back to a Douglas Englebart line that has been deep in my head: these tools are for "augmenting human intellect." i think it still holds water in my experience with LLMs. i searched it up and found his paper on the subject (what a surprise, i had no idea this existed).
Wow, dude this is definitely the kind of thing you should post to HN! It's a nice looking paper, too. I'm going to post it now - don't hate me! :)
bobdigit 6 days 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.
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 6 days 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 5 days 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.
keepamovin 5 days ago [-]
You write really well.
OgsyedIE 6 days ago [-]
I've seen a good exploration of this sentiment in an essay last month you might like.
Its power is as great as its putfalls and the outcome totally depends on how you choose to use it.
snappyleads 5 days 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.
liaheve 4 days ago [-]
[dead]
Rendered at 18:11:34 GMT+0000 (Coordinated Universal Time) with Vercel.
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.
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.
reading this made me go back to a Douglas Englebart line that has been deep in my head: these tools are for "augmenting human intellect." i think it still holds water in my experience with LLMs. i searched it up and found his paper on the subject (what a surprise, i had no idea this existed).
https://www.dougengelbart.org/pubs/papers/scanned/Doug_Engel...
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...)
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.
- 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.
https://www.lesswrong.com/posts/apCnFyXJamoSkHcE4/cautions-a...
Its power is as great as its putfalls and the outcome totally depends on how you choose to use it.