3 ms·
This reduces the field of software engineering to simple code generation when it is much more than that. Things like system design thinking and architectural d
by meander_water 2y ago
This reduces the field of software engineering to simple code generation when it is much more than that.
Things like system design thinking and architectural design are not solely tasks performed by managers or specialised roles.
Software developers need to wear multiple hats to deliver a solution. Sure, building out new features or products from scratch often get the most glory an attention. But IMO, humans still have the edge when it comes to debugging, refactoring and optimisation. In my experience, we beat AI in these problems because we can hold the entire problem space/context in our brains,and reason about it. In contrast, AI is simply pattern matching, and sure it can do a great job, but only stochastically so.
- leoedin 2y agoThe foundation of maintainable software is architecture. I can't be alone in having often spent days puzzling over a seemingly highly complex problem before finally finding a set of abstractions that makes it simple and highly testable. LLMs are effectively optimisation algorithms. They can find the local minima, but asking them to radically change the structure of something to find a much simpler solution is not yet possible. I'm actually pretty excited about LLMs getting better at coding, because in most jobs I've been in the limiting factor has always been rate of development rather than rate of idea production. If LLMs can take a software architecture diagram and fill in all the boxes, that would mean we could test our assumptions much quicker.
- Centigonal 2y agoYes, this is how I feel as well. I'm not going to use an LLM to create my architecture for me (though I may use it for advice), because I think of that as the core creative thing that I bring into the project, and the thing I need to fully understand in order to steer it in the right direction. The AI is great at doing all the implementation grunt work ("how do I format that timestamp again?" "What's a faster vectorized way to do this weird polars transformation?" "Can you write tests to catch regressions for these 5 edge cases which I will then verify?").
- skydhash 2y agoAlmost everytime I read about someone finding LLMs useful for a programming task, the description of how the LLMs are used sounds like either the person is missing domain knowledge, don't use a capable editor, or are not familiar with reading docs. When I find myself missing domain knowledge, my first action is to seek it. Not to try random things that may have hidden edge cases that I can't foresee. The semantics of every line and every symbol should be clear to me. And I should be able to go in details about its significance and usage. Editing code shouldn't be a bottleneck. In The Pragmatic Programmer, one of the advice is to achieve editor fluency. And even Bram has written about this[0]. Code is very repetitive, and your editor should assist you in reducing the amount of boilerplate you write and navigating around the codebase. Why? Because that will help you prune the code and get it in better shape as code is a liability. Generating code is a step in the wrong direction. There can be bad docs, or the information you're seeking is not easily retrievable. But most is actually quite decent, and in the worst case, you have the source code (or should). But there are different kind of docs and when someone is complaining about them, it's usually because they need a tutorial or a guide to learn the concepts and usage. Most systems assume you have the prerequisites and will only have the reference. [0]: https://www.moolenaar.net/habits.html https://www.moolenaar.net/habits.html
- slt2021 2y agoa lot of value of software engineers is talking to users (end users, clients etc)