[{"data":1,"prerenderedAt":753},["ShallowReactive",2],{"/articles/ai-in-tech":3,"content-query-ORP2Fytv6N":439},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"tags":11,"image":17,"readingTime":18,"body":19,"_type":433,"_id":434,"_source":435,"_file":436,"_stem":437,"_extension":438},"/articles/ai-in-tech","articles",false,"","AI in Tech: What Actually Changed, and What Didn't","A practical look at where AI genuinely earns its place in software and design work, where it still falls short, and the skills that matter more now than they did before.","08/09/2026",[12,13,14,15,16],"AI","Web Development","Developer Tools","Productivity","Design","https://hugh.magpiethebrand.com/articles/ai-in-tech.webp","7",{"type":20,"children":21,"toc":421},"root",[22,31,52,61,68,73,92,105,111,116,181,187,192,209,226,236,253,259,264,315,320,326,331,384,390,395,407,412,416],{"type":23,"tag":24,"props":25,"children":27},"element","h2",{"id":26},"introduction",[28],{"type":29,"value":30},"text","Introduction",{"type":23,"tag":32,"props":33,"children":34},"p",{},[35,37,43,45,50],{"type":29,"value":36},"Every few years the industry finds a new thing to be certain about. AI is the current one, and the certainty runs in both directions — it either replaces everyone or it’s an expensive autocomplete. Neither has been my experience. After using these tools daily across client builds, design work, and this site, what I’ve landed on is less dramatic and more useful: AI changed the ",{"type":23,"tag":38,"props":39,"children":40},"em",{},[41],{"type":29,"value":42},"shape",{"type":29,"value":44}," of the work far more than it changed the ",{"type":23,"tag":38,"props":46,"children":47},{},[48],{"type":29,"value":49},"amount",{"type":29,"value":51}," of it.",{"type":23,"tag":32,"props":53,"children":54},{},[55],{"type":23,"tag":56,"props":57,"children":60},"img",{"alt":58,"src":59},"preview","/articles/ai-in-tech.webp",[],{"type":23,"tag":62,"props":63,"children":65},"h3",{"id":64},"from-autocomplete-to-collaborator",[66],{"type":29,"value":67},"From Autocomplete to Collaborator",{"type":23,"tag":32,"props":69,"children":70},{},[71],{"type":29,"value":72},"The first wave of AI tooling was pattern completion. It finished your line, guessed the next argument, and saved you a trip to the docs. Genuinely useful, but narrow — it operated one line at a time and had no idea what you were building.",{"type":23,"tag":32,"props":74,"children":75},{},[76,78,83,85,90],{"type":29,"value":77},"What shifted is scope. Current tools hold a whole repository in context, follow a chain of reasoning across files, run commands, read the output, and correct course. The unit of work moved from ",{"type":23,"tag":38,"props":79,"children":80},{},[81],{"type":29,"value":82},"the line",{"type":29,"value":84}," to ",{"type":23,"tag":38,"props":86,"children":87},{},[88],{"type":29,"value":89},"the task",{"type":29,"value":91},". That’s the actual change, and it’s the reason so much advice written even two years ago no longer applies.",{"type":23,"tag":32,"props":93,"children":94},{},[95,97,103],{"type":29,"value":96},"It also moved the bottleneck. When generating code was slow, the constraint was typing. Now generating code is nearly free, and the constraint is ",{"type":23,"tag":98,"props":99,"children":100},"strong",{},[101],{"type":29,"value":102},"knowing what to ask for and being able to tell whether you got it",{"type":29,"value":104},". That’s a different skill, and it’s not evenly distributed.",{"type":23,"tag":62,"props":106,"children":108},{"id":107},"where-ai-actually-earns-its-place",[109],{"type":29,"value":110},"Where AI Actually Earns Its Place",{"type":23,"tag":32,"props":112,"children":113},{},[114],{"type":29,"value":115},"Not everything benefits equally. The tasks where I reach for it without hesitation share a trait: the shape of the answer is well understood, and verifying it is cheap.",{"type":23,"tag":117,"props":118,"children":119},"ul",{},[120,131,141,151,161,171],{"type":23,"tag":121,"props":122,"children":123},"li",{},[124,129],{"type":23,"tag":98,"props":125,"children":126},{},[127],{"type":29,"value":128},"Scaffolding and boilerplate.",{"type":29,"value":130}," Config files, API route handlers, form validation, type definitions, migration scripts. Work that’s tedious rather than hard, where the correct answer is conventional and a mistake surfaces immediately.",{"type":23,"tag":121,"props":132,"children":133},{},[134,139],{"type":23,"tag":98,"props":135,"children":136},{},[137],{"type":29,"value":138},"Translation between formats.",{"type":29,"value":140}," JSON to TypeScript types, a Figma spec to Tailwind classes, REST to GraphQL, one framework’s idioms to another’s. Mechanical transformation with a clear right answer.",{"type":23,"tag":121,"props":142,"children":143},{},[144,149],{"type":23,"tag":98,"props":145,"children":146},{},[147],{"type":29,"value":148},"The first draft of anything.",{"type":29,"value":150}," Copy, documentation, commit messages, a README, a content model. A mediocre first draft you can react to beats a blank page. Editing is faster than originating.",{"type":23,"tag":121,"props":152,"children":153},{},[154,159],{"type":23,"tag":98,"props":155,"children":156},{},[157],{"type":29,"value":158},"Unfamiliar territory.",{"type":29,"value":160}," Dropping into a codebase, a language, or an API you don’t know. Asking “how is authentication handled here?” and getting an oriented answer with file references saves an afternoon of grep.",{"type":23,"tag":121,"props":162,"children":163},{},[164,169],{"type":23,"tag":98,"props":165,"children":166},{},[167],{"type":29,"value":168},"Test coverage.",{"type":29,"value":170}," Enumerating edge cases is exactly the kind of exhaustive, unglamorous thinking that machines are better at than tired humans at 6pm.",{"type":23,"tag":121,"props":172,"children":173},{},[174,179],{"type":23,"tag":98,"props":175,"children":176},{},[177],{"type":29,"value":178},"Rubber-ducking.",{"type":29,"value":180}," Half the value is being forced to articulate the problem clearly. The other half is a second opinion that has read more code than you have.",{"type":23,"tag":62,"props":182,"children":184},{"id":183},"where-it-still-falls-short",[185],{"type":29,"value":186},"Where It Still Falls Short",{"type":23,"tag":32,"props":188,"children":189},{},[190],{"type":29,"value":191},"The failures are as consistent as the wins, and they cluster in predictable places.",{"type":23,"tag":32,"props":193,"children":194},{},[195,200,202,207],{"type":23,"tag":98,"props":196,"children":197},{},[198],{"type":29,"value":199},"Architecture and taste.",{"type":29,"value":201}," AI is good at the question “how do I do X?” and much weaker at “should I do X at all?” It will happily build the thing you asked for when the right answer was to delete a feature, simplify a data model, or push back on the requirement. It optimises for a plausible answer, not the ",{"type":23,"tag":38,"props":203,"children":204},{},[205],{"type":29,"value":206},"right",{"type":29,"value":208}," one — and those diverge most on exactly the decisions that matter most.",{"type":23,"tag":32,"props":210,"children":211},{},[212,217,219,224],{"type":23,"tag":98,"props":213,"children":214},{},[215],{"type":29,"value":216},"Confident wrongness.",{"type":29,"value":218}," The failure mode isn’t “I don’t know.” It’s a fluent, well-formatted, entirely incorrect answer delivered in the same tone as a correct one. There is no confidence signal in the output, which means ",{"type":23,"tag":98,"props":220,"children":221},{},[222],{"type":29,"value":223},"review is not optional",{"type":29,"value":225}," — the cost of trusting output you didn’t read is paid later, with interest, usually in production.",{"type":23,"tag":32,"props":227,"children":228},{},[229,234],{"type":23,"tag":98,"props":230,"children":231},{},[232],{"type":29,"value":233},"Context it was never given.",{"type":29,"value":235}," It doesn’t know that the client hated that layout, that the previous developer left a landmine in the payment flow, or that the deadline is Thursday and this needs to be boring and reliable. Most of the important context in real projects is undocumented.",{"type":23,"tag":32,"props":237,"children":238},{},[239,244,246,251],{"type":23,"tag":98,"props":240,"children":241},{},[242],{"type":29,"value":243},"Security and dependencies.",{"type":29,"value":245}," Generated code reaches for packages readily, and not always well-chosen ones. Unvalidated input, secrets in the wrong place, over-permissive CORS, an abandoned dependency with a known CVE — these pass review easily when you’re moving quickly and the code ",{"type":23,"tag":38,"props":247,"children":248},{},[249],{"type":29,"value":250},"looks",{"type":29,"value":252}," right.",{"type":23,"tag":62,"props":254,"children":256},{"id":255},"the-skills-that-matter-more-now",[257],{"type":29,"value":258},"The Skills That Matter More Now",{"type":23,"tag":32,"props":260,"children":261},{},[262],{"type":29,"value":263},"If generating code is cheap, the valuable work moves to the parts that aren’t.",{"type":23,"tag":265,"props":266,"children":267},"ol",{},[268,278,288,298],{"type":23,"tag":121,"props":269,"children":270},{},[271,276],{"type":23,"tag":98,"props":272,"children":273},{},[274],{"type":29,"value":275},"Problem framing.",{"type":29,"value":277}," The quality of what you get back is capped by the quality of what you asked. Precise constraints, stated assumptions, and a clear definition of done do more for the output than any prompt trick.",{"type":23,"tag":121,"props":279,"children":280},{},[281,286],{"type":23,"tag":98,"props":282,"children":283},{},[284],{"type":29,"value":285},"Reading code fast.",{"type":29,"value":287}," Reviewing has become a bigger share of the job than writing. If you can’t evaluate a hundred lines quickly and spot what’s off, volume becomes a liability rather than an advantage.",{"type":23,"tag":121,"props":289,"children":290},{},[291,296],{"type":23,"tag":98,"props":292,"children":293},{},[294],{"type":29,"value":295},"Systems thinking.",{"type":29,"value":297}," Knowing how the pieces fit — where state lives, what happens under load, which failure cascades — is the part that isn’t automated, because it depends on context no tool has.",{"type":23,"tag":121,"props":299,"children":300},{},[301,306,308,313],{"type":23,"tag":98,"props":302,"children":303},{},[304],{"type":29,"value":305},"Judgment about scope.",{"type":29,"value":307}," Deciding what ",{"type":23,"tag":38,"props":309,"children":310},{},[311],{"type":29,"value":312},"not",{"type":29,"value":314}," to build is still the highest-leverage decision in any project, and it’s the one AI is least equipped to make.",{"type":23,"tag":32,"props":316,"children":317},{},[318],{"type":29,"value":319},"The developers getting the most out of these tools aren’t the ones prompting most cleverly. They’re the ones who already knew what good looked like.",{"type":23,"tag":62,"props":321,"children":323},{"id":322},"a-workflow-that-holds-up",[324],{"type":29,"value":325},"A Workflow That Holds Up",{"type":23,"tag":32,"props":327,"children":328},{},[329],{"type":29,"value":330},"What works for me, consistently:",{"type":23,"tag":117,"props":332,"children":333},{},[334,344,354,364,374],{"type":23,"tag":121,"props":335,"children":336},{},[337,342],{"type":23,"tag":98,"props":338,"children":339},{},[340],{"type":29,"value":341},"Plan before generating.",{"type":29,"value":343}," Agree the approach first, in prose. Fixing a bad plan costs a sentence; fixing a bad implementation costs an afternoon.",{"type":23,"tag":121,"props":345,"children":346},{},[347,352],{"type":23,"tag":98,"props":348,"children":349},{},[350],{"type":29,"value":351},"Keep changes small enough to review.",{"type":29,"value":353}," If you can’t hold the diff in your head, you aren’t reviewing it — you’re approving it.",{"type":23,"tag":121,"props":355,"children":356},{},[357,362],{"type":23,"tag":98,"props":358,"children":359},{},[360],{"type":29,"value":361},"Give it the project’s rules.",{"type":29,"value":363}," A file describing conventions, commands, and architecture removes an entire category of wrong-but-plausible output. Most of the frustration people report comes from tools guessing at things nobody told them.",{"type":23,"tag":121,"props":365,"children":366},{},[367,372],{"type":23,"tag":98,"props":368,"children":369},{},[370],{"type":29,"value":371},"Verify by running, not by reading.",{"type":29,"value":373}," Build it, run the tests, load the page. Plausible code that doesn’t compile is caught in seconds; plausible code that compiles and is subtly wrong is caught only by execution.",{"type":23,"tag":121,"props":375,"children":376},{},[377,382],{"type":23,"tag":98,"props":378,"children":379},{},[380],{"type":29,"value":381},"Own the output.",{"type":29,"value":383}," Once you commit it, it’s yours. “The AI wrote it” has never been a defence in a code review and won’t be in an incident report.",{"type":23,"tag":62,"props":385,"children":387},{"id":386},"what-this-means-for-the-industry",[388],{"type":29,"value":389},"What This Means for the Industry",{"type":23,"tag":32,"props":391,"children":392},{},[393],{"type":29,"value":394},"The honest read is that the floor rose and the ceiling didn’t move much. Routine work got dramatically faster, which compresses the value of being merely competent at routine work. Meanwhile the hard parts — designing systems that survive contact with real users, understanding what a business actually needs, making good calls with incomplete information — are as scarce as they ever were, and arguably more valuable now that everything around them is cheap.",{"type":23,"tag":32,"props":396,"children":397},{},[398,400,405],{"type":29,"value":399},"For anyone starting out, the risk isn’t that AI takes the entry-level work. It’s using AI in a way that skips the struggle that builds judgment. You cannot review code well if you never learned to write it badly first. Use the tools, but stay curious about ",{"type":23,"tag":38,"props":401,"children":402},{},[403],{"type":29,"value":404},"why",{"type":29,"value":406}," the answer works.",{"type":23,"tag":32,"props":408,"children":409},{},[410],{"type":29,"value":411},"For everyone else, the practical advice is unglamorous: adopt what verifiably saves you time, ignore the parts that don’t, and keep your standards where they were. The tools got faster. The bar for shipping something good didn’t move.",{"type":23,"tag":413,"props":414,"children":415},"hr",{},[],{"type":23,"tag":32,"props":417,"children":418},{},[419],{"type":29,"value":420},"AI is genuinely useful, and the hype around it is genuinely exhausting. Both can be true. Treat it as a fast, well-read, occasionally overconfident collaborator that has never met your users — and it becomes one of the most useful things in the stack. Treat it as an oracle, and it will eventually cost you more than it saved.",{"title":7,"searchDepth":422,"depth":422,"links":423},2,[424],{"id":26,"depth":422,"text":30,"children":425},[426,428,429,430,431,432],{"id":64,"depth":427,"text":67},3,{"id":107,"depth":427,"text":110},{"id":183,"depth":427,"text":186},{"id":255,"depth":427,"text":258},{"id":322,"depth":427,"text":325},{"id":386,"depth":427,"text":389},"markdown","content:articles:ai-in-tech.md","content","articles/ai-in-tech.md","articles/ai-in-tech","md",{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"tags":440,"image":17,"readingTime":18,"body":441,"_type":433,"_id":434,"_source":435,"_file":436,"_stem":437,"_extension":438},[12,13,14,15,16],{"type":20,"children":442,"toc":743},[443,447,461,467,471,475,489,498,502,506,557,561,565,578,591,599,612,616,620,660,664,668,672,715,719,723,732,736,739],{"type":23,"tag":24,"props":444,"children":445},{"id":26},[446],{"type":29,"value":30},{"type":23,"tag":32,"props":448,"children":449},{},[450,451,455,456,460],{"type":29,"value":36},{"type":23,"tag":38,"props":452,"children":453},{},[454],{"type":29,"value":42},{"type":29,"value":44},{"type":23,"tag":38,"props":457,"children":458},{},[459],{"type":29,"value":49},{"type":29,"value":51},{"type":23,"tag":32,"props":462,"children":463},{},[464],{"type":23,"tag":56,"props":465,"children":466},{"alt":58,"src":59},[],{"type":23,"tag":62,"props":468,"children":469},{"id":64},[470],{"type":29,"value":67},{"type":23,"tag":32,"props":472,"children":473},{},[474],{"type":29,"value":72},{"type":23,"tag":32,"props":476,"children":477},{},[478,479,483,484,488],{"type":29,"value":77},{"type":23,"tag":38,"props":480,"children":481},{},[482],{"type":29,"value":82},{"type":29,"value":84},{"type":23,"tag":38,"props":485,"children":486},{},[487],{"type":29,"value":89},{"type":29,"value":91},{"type":23,"tag":32,"props":490,"children":491},{},[492,493,497],{"type":29,"value":96},{"type":23,"tag":98,"props":494,"children":495},{},[496],{"type":29,"value":102},{"type":29,"value":104},{"type":23,"tag":62,"props":499,"children":500},{"id":107},[501],{"type":29,"value":110},{"type":23,"tag":32,"props":503,"children":504},{},[505],{"type":29,"value":115},{"type":23,"tag":117,"props":507,"children":508},{},[509,517,525,533,541,549],{"type":23,"tag":121,"props":510,"children":511},{},[512,516],{"type":23,"tag":98,"props":513,"children":514},{},[515],{"type":29,"value":128},{"type":29,"value":130},{"type":23,"tag":121,"props":518,"children":519},{},[520,524],{"type":23,"tag":98,"props":521,"children":522},{},[523],{"type":29,"value":138},{"type":29,"value":140},{"type":23,"tag":121,"props":526,"children":527},{},[528,532],{"type":23,"tag":98,"props":529,"children":530},{},[531],{"type":29,"value":148},{"type":29,"value":150},{"type":23,"tag":121,"props":534,"children":535},{},[536,540],{"type":23,"tag":98,"props":537,"children":538},{},[539],{"type":29,"value":158},{"type":29,"value":160},{"type":23,"tag":121,"props":542,"children":543},{},[544,548],{"type":23,"tag":98,"props":545,"children":546},{},[547],{"type":29,"value":168},{"type":29,"value":170},{"type":23,"tag":121,"props":550,"children":551},{},[552,556],{"type":23,"tag":98,"props":553,"children":554},{},[555],{"type":29,"value":178},{"type":29,"value":180},{"type":23,"tag":62,"props":558,"children":559},{"id":183},[560],{"type":29,"value":186},{"type":23,"tag":32,"props":562,"children":563},{},[564],{"type":29,"value":191},{"type":23,"tag":32,"props":566,"children":567},{},[568,572,573,577],{"type":23,"tag":98,"props":569,"children":570},{},[571],{"type":29,"value":199},{"type":29,"value":201},{"type":23,"tag":38,"props":574,"children":575},{},[576],{"type":29,"value":206},{"type":29,"value":208},{"type":23,"tag":32,"props":579,"children":580},{},[581,585,586,590],{"type":23,"tag":98,"props":582,"children":583},{},[584],{"type":29,"value":216},{"type":29,"value":218},{"type":23,"tag":98,"props":587,"children":588},{},[589],{"type":29,"value":223},{"type":29,"value":225},{"type":23,"tag":32,"props":592,"children":593},{},[594,598],{"type":23,"tag":98,"props":595,"children":596},{},[597],{"type":29,"value":233},{"type":29,"value":235},{"type":23,"tag":32,"props":600,"children":601},{},[602,606,607,611],{"type":23,"tag":98,"props":603,"children":604},{},[605],{"type":29,"value":243},{"type":29,"value":245},{"type":23,"tag":38,"props":608,"children":609},{},[610],{"type":29,"value":250},{"type":29,"value":252},{"type":23,"tag":62,"props":613,"children":614},{"id":255},[615],{"type":29,"value":258},{"type":23,"tag":32,"props":617,"children":618},{},[619],{"type":29,"value":263},{"type":23,"tag":265,"props":621,"children":622},{},[623,631,639,647],{"type":23,"tag":121,"props":624,"children":625},{},[626,630],{"type":23,"tag":98,"props":627,"children":628},{},[629],{"type":29,"value":275},{"type":29,"value":277},{"type":23,"tag":121,"props":632,"children":633},{},[634,638],{"type":23,"tag":98,"props":635,"children":636},{},[637],{"type":29,"value":285},{"type":29,"value":287},{"type":23,"tag":121,"props":640,"children":641},{},[642,646],{"type":23,"tag":98,"props":643,"children":644},{},[645],{"type":29,"value":295},{"type":29,"value":297},{"type":23,"tag":121,"props":648,"children":649},{},[650,654,655,659],{"type":23,"tag":98,"props":651,"children":652},{},[653],{"type":29,"value":305},{"type":29,"value":307},{"type":23,"tag":38,"props":656,"children":657},{},[658],{"type":29,"value":312},{"type":29,"value":314},{"type":23,"tag":32,"props":661,"children":662},{},[663],{"type":29,"value":319},{"type":23,"tag":62,"props":665,"children":666},{"id":322},[667],{"type":29,"value":325},{"type":23,"tag":32,"props":669,"children":670},{},[671],{"type":29,"value":330},{"type":23,"tag":117,"props":673,"children":674},{},[675,683,691,699,707],{"type":23,"tag":121,"props":676,"children":677},{},[678,682],{"type":23,"tag":98,"props":679,"children":680},{},[681],{"type":29,"value":341},{"type":29,"value":343},{"type":23,"tag":121,"props":684,"children":685},{},[686,690],{"type":23,"tag":98,"props":687,"children":688},{},[689],{"type":29,"value":351},{"type":29,"value":353},{"type":23,"tag":121,"props":692,"children":693},{},[694,698],{"type":23,"tag":98,"props":695,"children":696},{},[697],{"type":29,"value":361},{"type":29,"value":363},{"type":23,"tag":121,"props":700,"children":701},{},[702,706],{"type":23,"tag":98,"props":703,"children":704},{},[705],{"type":29,"value":371},{"type":29,"value":373},{"type":23,"tag":121,"props":708,"children":709},{},[710,714],{"type":23,"tag":98,"props":711,"children":712},{},[713],{"type":29,"value":381},{"type":29,"value":383},{"type":23,"tag":62,"props":716,"children":717},{"id":386},[718],{"type":29,"value":389},{"type":23,"tag":32,"props":720,"children":721},{},[722],{"type":29,"value":394},{"type":23,"tag":32,"props":724,"children":725},{},[726,727,731],{"type":29,"value":399},{"type":23,"tag":38,"props":728,"children":729},{},[730],{"type":29,"value":404},{"type":29,"value":406},{"type":23,"tag":32,"props":733,"children":734},{},[735],{"type":29,"value":411},{"type":23,"tag":413,"props":737,"children":738},{},[],{"type":23,"tag":32,"props":740,"children":741},{},[742],{"type":29,"value":420},{"title":7,"searchDepth":422,"depth":422,"links":744},[745],{"id":26,"depth":422,"text":30,"children":746},[747,748,749,750,751,752],{"id":64,"depth":427,"text":67},{"id":107,"depth":427,"text":110},{"id":183,"depth":427,"text":186},{"id":255,"depth":427,"text":258},{"id":322,"depth":427,"text":325},{"id":386,"depth":427,"text":389},1788820462049]