I'm working at a startup's engineering & product team as an engineer. I think it's not fundamentally different from how most software engineers work.<p>We work on:<p>- The why: business/leadership, and to some extent, product determines key goals (KPIs, OKRs etc.) and markets we are addressing. Us engineers are only informed parties here.<p>- The what: product, and to some extent, engineering determines which features to build or improve to attain these goals in a user-friendly and sustainable way. We create projects and design sketches, assign time constraints to them.<p>- The how: engineering, and to some extent, product ships these features in a maintainable, scalable, performant and supportable way without disrupting existing user experience.<p>A very large part of this work involves creative processes and logical reasoning about business, UX, software engineering problems. (Of course, that's why I love it :))<p>Only a tiny amount of this work is "writing boilerplate code" or copying code from Stackoverflow - which ChatGPT is presumed to automate.<p>Of course, more senior engineers are faster at writing boilerplate, but their speed mostly comes from 1) knowing the existing codebase 2) using the right tools & abstractions.<p>Moreover, most of the <i>risk</i> involved in the process is not the time taken to write boilerplate i.e. working on something for too long - but rather working on the <i>wrong thing</i>, or doing an implementation that's too slow or hard to maintain (change, test, fix, extend, reason about).<p>All in all, when I think about software engineering from this perspective, I don't see AI automating it away anytime soon.<p>I could, though imagine AI being your TDD coder companion. You write some unit or acceptance tests for a service module and the AI generates the code for it. You'd still need to thoroughly review and test the code though. This would work well for basic CRUD/boilerplate modules, but not for anything involving business logic.<p>Nevertheless, this would still remain just a small part of a software engineer's work, in my opinion. What do you think?