3 ms·
Programming, Evolved: Lessons and Observations
- agentultra 9mo agoTraditional engineering involves more than talking to people, teams, and trade offs. Where I live the engineering society here does license software engineers now and enforces the term, "Software Engineer," as a protected term. You can't just call yourself a software engineer. You have to have educational credentials, pass exams, and be licensed. You have to keep up with your educational requirements. You have to be insured. It boils down to the same thing, people and teams, but the difference is liability. Personally I think we're better off pair programming with actual people than GenAI chat bots. We get to teach each other and learn together which improves our skills. We actually need to socialize and be around people to remain healthy. You miss out on all of these benefits with chat bots. And there's growing evidence that you don't learn as much when using them [0]. Consider when using them is appropriate and maybe don't rely on them for everything. [0] https://arxiv.org/abs/2506.08872 https://arxiv.org/abs/2506.08872
- udog2 9mo agoI'm curious, which country or region does this licensing? I'd like to learn more.
- GabriDaFirenze 9mo agoI know Italy is one of them, you can't sign off any project if you haven't passed "the bar" or however it's called to have the proper credentials to be called an engineer.
- grovesNL 9mo agoCanada https://engineerscanada.ca/become-an-engineer/use-of-professional-title-and-designations https://engineerscanada.ca/become-an-engineer/use-of-profess...
- paodealho 9mo ago> ... "Software Engineer," as a protected term. You can't just call yourself a software engineer. In my irrelevant opinion, this is good. To me at least, the word engineer represents someone with a big, heavy responsibility on their hands. I never liked being called an engineer and only have it on my resume because that's the keyword recruiters search on linkedin nowadays. One reason is that I don't have formal education. The other is that, in almost 15 years of experience, I witnessed very few occasions of software receiving proper care to the extent that I could call it "engineering".
- FatherOfCurses 9mo agoThank fucking god. I have been advocating for this for years, I'm glad some engineering societies are actually doing it.
- ramon156 9mo ago> There is so much fun, beauty and pleasure in writing code by hand. You can still handcraft code. Just don’t expect this to be your job. This is your passion. Can people keep a good mental model of the repo without writing code? I always feel like I lose my thoughts if I let an LLM do it for me. I totally get that LLMs can do stuff faster and (Given the right context) sometimes keep better track of this than humans can. Even musicians had to go digital, but that doesn't mean people stopped playing raw instruments. Will company culture shift towards one senior that has the context + 7 LLMs that work for him? is that where we're heading towards?
- WillAdams 9mo agoI've found that the best aid to keeping a mental model of the structure of a project is to document it well using Literate Programming: http://literateprogramming.com/ http://literateprogramming.com/ which then affords a PDF w/ a ToC, indices, and sidebars and other navigational aids all hyperlinked so as to make moving through the code and its documentation quick and fluid. Then, when I arrive at the section of code which needs to be updated, the documentation and reasoning about its current state is right there. Not sure if this scales up to multiple developers though....
- son_of_gloin 9mo agoLiterate Programming would also probably help coding assistants understand the code better and generate better output. Or is that the point you are trying to make?
- WillAdams 9mo agoNo, but that's an interesting adjunct. Maybe if that takes hold, LP will finally take off?
- TylerLives 9mo agoYou're still in charge, don't let LLMs do whatever they want.
- 9mo ago
- m0llusk 9mo agoStill not convinced. Advocates claim this helps, but imply that programmers should now be constantly evaluating a dozen or more assistants in various ways and honing prompting strategies. Does that not take time and effort? Wouldn't it make more sense to let the technology develop more? And then there is this claim that it makes things easier and faster, but what is actually being coded? Has anything remarkable ever come out of vibe coding? Seems like nothing but a lot of unremarkable applications that push no boundaries. Really coming up with new ideas often means coming up with variations and then honing the results. When iterating like that the speed of coding is already a minor input because what really matters is the judgement calls of knowing what kinds of things to try and when to abandon approaches that are not working out. And what about all the negative implications that we are still trying to figure out. Just because no vibe code has yet triggered intellectual property lawsuits doesn't mean that won't happen because there is already a lot of that kind of thing going on in the LLM space. And what about the damage that data centers are doing to the environment, to the grid, to markets for processors and memory? When I code things by hand the amount of liability and wreckage I generate is minimal.
- brabel 9mo ago> Seems like nothing but a lot of unremarkable applications that push no boundaries. That’s 99% of software.
- deleted 9mo ago[deleted]
- matusp 9mo agoOne thing that I do not see mentioned enough is how fast editing code is now. I want to create a new function to replace a functionality that appears in multiple places? I can just write the name of the function and the IDE understands what I want to do. It will then promptly copy the existing code into this new function and suggest to replace the occurrences in the code with it. Tab, tab, tab, editing is complete in a few clicks.
- cadamsdotcom 9mo ago> When coding assistants write most of the software, the fidelity of the mental model I hold degrades quickly. Instead of fighting this new normal I have been trying to create methods to use the model as a tool to query and develop the mental model on-demand. That’s the “after the fact” approach. Instead of this I had Claude Code write a script which, when run, traverses the AST of the entire codebase and gives an error if any architectural constraints are violated. For example, backend route handlers cannot import or use the database client. The error message says “you must go through the service and repository layers”. This script is then included in the agent’s coding loop by being added as a custom check in pre-commit (or husky, if you’re using node et al) The coding agent now treats architecture violations as a compiler error. It reads the error, has a think, and fixes it.. and I sip coffee and work on something else. Never be looking at code and talking back to your agent. Your agent should only be handing you code that’d pass code review. That bar is something I’ve build up to incrementally and will keep adding to forever.