1 comment

sorted by: hot top controversial new old
[–] 19 points 3 months ago* (last edited 3 months ago)

This to me seems to be a very odd interpretation of the phrase “coding was never the hard part”. First, that doesn’t mean that it’s not hard, just not the hardest. Second, and more importantly, they jump to deciding what to build being the hard part as if those are the only two things?

I have used a variation of this phrase (I usually say coding was never the bottleneck at work) but I’ve never even considered deciding what to build as to be what the bottleneck is.

First, I should say by coding I mean taking a concrete design for a change and writing a single pass at implementation. Modern models to this extremely quickly with up to good performance depending on exactly what you ask them to do.

The things that take up more time in software development just for engineers, leaving aside things that design and pms do.

  • Coming up with that concrete design for a change (humans may do this in many ways, one of which is writing the code without a plan and refining)
  • Architecting the system at all levels. This one is continuous and huge. A good architecture will easily adopt changes as they come, but you can never foresee all possibilities, and even if you could, there’s usually other people around you who can’t, which brings me to
  • Communicating the system design and coming to consensus about aspects of it. This is mostly applicable to teams and is the primary reason individuals can often outperform entire teams. It’s also one reason why throwing a second LLMs at a problem doesn’t solve it at twice the rate. You’ll never get linear scaling
  • Upkeep tasks: what needs to be replaced and fixed now, how do we best monitor and alarm to figure this out in the future.

There are “what to build” aspects in here and many engineers also spend time on the overall what to build questions, but the way the article was talking about it seemed very high level.

Coding isn’t easy, it’s hard. But it’s also not usually the bottleneck in software development.

  • source
  • 53 comments in c/technology@lemmy.world view that post
    [–] 89 points 3 months ago (8 children)

    I read "Code was never the hard part" as "Writing the Code down is easier than the stuff you do before it (like Architecture, Design Patterns, Requirements) and after it (Testing, Troubleshooting, Refactoring, etc)".

  • source
  • hideshow 8 child comments
  • [–] 24 points 3 months ago (3 children)

    Writing code was never more than 20% of what I do as a programmer. All those other things are where I have always spent me time, and those are the hard part.

  • source
  • parent
  • hideshow 3 child comments
  • [–] 6 points 3 months ago (2 children)

    And to me the least fun. Programming is the fun part, everything else is stuff I have to deal with to do the fun part.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 7 points 3 months ago

    Yeah, I feel like the author of this blog post read the referenced piece in a quite adversarial manner. Even if a programmer does no talking to stakeholders at all, the planning and design part of the process is still huge, and largely invisible if all you're looking at is the end result. That invisible skill and labour is the difference between a mediocre personal project of mine, and the output of a seasoned professional.

  • source
  • parent
  • [–] 0 points 3 months ago (2 children)

    For me the part before it is the only easy one lol. For the rest, I don't even know how to program anything more than a basic Hello World in Python.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 9 points 3 months ago (1 child)

    How could you possibly do things like architectude and design patterns without being able to code...?

  • source
  • parent
  • hideshow 1 child comment
  • I'm not sure why, maybe is because I live perpetually overstressed and I'm dyscalculic, but I can't just understand anything about the part of actually writing code. Like, I can conceptually and theoretically know really much about programming, programming languages and how they work (and how they would work better), but when it comes to start learning the syntax and what every symbol, word and all that means and how do they combine... Oopsie.

    In few words, I do understand the theory, all the concepts and the programming semantics, but the code grammar is hard for me, and the syntax is nearly impossible as it involves too much maths.

    As architecture and design are more about natural language and logical reasoning, and I'm actually good in those two things (I have hyperlogia [if "hypercalculia" is the polar opposite of dyscalculia, then this is the same for dyslogia]), or at least can be totally done without any maths and totally with only these two things (because yeah, symbolic logic is also hard for me), I can do these things to a pretty good extent.

    Hope this allows you to better undertand. 😄

  • source
  • parent
  • [–] 67 points 3 months ago (3 children)

    This to me seems to be a very odd interpretation of the phrase “coding was never the hard part”. First, that doesn’t mean that it’s not hard, just not the hardest. Second, and more importantly, they jump to deciding what to build being the hard part as if those are the only two things?

    I have used a variation of this phrase (I usually say coding was never the bottleneck at work) but I’ve never even considered deciding what to build as to be what the bottleneck is.

    First, I should say by coding I mean taking a concrete design for a change and writing a single pass at implementation. Modern models to this extremely quickly with up to good performance depending on exactly what you ask them to do.

    The things that take up more time in software development just for engineers, leaving aside things that design and pms do.

    • Coming up with that concrete design for a change (humans may do this in many ways, one of which is writing the code without a plan and refining)
    • Architecting the system at all levels. This one is continuous and huge. A good architecture will easily adopt changes as they come, but you can never foresee all possibilities, and even if you could, there’s usually other people around you who can’t, which brings me to
    • Communicating the system design and coming to consensus about aspects of it. This is mostly applicable to teams and is the primary reason individuals can often outperform entire teams. It’s also one reason why throwing a second LLMs at a problem doesn’t solve it at twice the rate. You’ll never get linear scaling
    • Upkeep tasks: what needs to be replaced and fixed now, how do we best monitor and alarm to figure this out in the future.

    There are “what to build” aspects in here and many engineers also spend time on the overall what to build questions, but the way the article was talking about it seemed very high level.

    Coding isn’t easy, it’s hard. But it’s also not usually the bottleneck in software development.

  • source
  • hideshow 3 child comments
  • [–] 1 point 3 months ago

    I'm a mediocre hobby programmer, and for me, the hardest part is coming up with the concrete specifics of what to implement.

    I'm actually half decent now (for a hobbyist), but I remember that when I first moved from coding along with worked exercises in textbooks, to actually trying to solve real life problems, it got exponentially more difficult. The textbooks say "use this tool to achieve this goal", and even if you're bad at using that particular tool, you can put all your effort into doing it well. However when you're having to make the bigger decisions for yourself, you have to choose what tool to use, and I found that super hard — especially when having to choose between an approach that I felt confident with that wasn't quite the right tool for the job, and a new tool that was completely new to me (and if I am unfamiliar with a new approach, am I sure that it's the right tool?).

    At one point, when I was deep in a personal project, I had a period of a few weeks where I had no reliable access to internet, and so I did most of my coding using paper and pen. It forced me to think more deeply about the implementation I was using, rather than just diving straight into the code

  • source
  • parent
  • [–] -2 points 3 months ago

    You nailed it.

    It's literally þe IRL perverse incentives case where a company payed bonuses per LOC and found devs were just spewing unneccessary verbosity which made products slower and harder to maintain.

  • source
  • parent
  • [–] 22 points 3 months ago* (2 children)

    Typing the code isn't hard.

    Figuring out what code to type is.

    Coding is problem solving, and solving problems can be very hard depending on the problem you're trying to solve.

  • source
  • hideshow 2 child comments
  • [–] 5 points 3 months ago

    And indeed figuring out what problem you're actually supposed to solve. People assume they can just give an LLM the same spec they'd give a programmer, and that doesn't work, because the programmer will figure out all the hidden shit they omitted from the spec but which is actually absolutely critical to its function. They'll also anticipate future refinements of specs and how to leave room to accommodate those changes. Etc.

    I really feel like the author of this piece got this strawman in their head and didn't bother looking into how people saying these things are actually using them, because most of the people I hear saying them are themselves programmers, and they're not trying to say "my job is trivial." They're saying "the thing the LLM does fast is not my whole job. it leaves out all the important stuff."

  • source
  • parent
  • [–] 3 points 3 months ago

    Yeah, there was a running joke in our comp. sci. program that “we thought we’d make great comp. sci. majors because we had the typing skills (and desire).” The major says as much, you gotta understand the problem to work out a solution… and a solution may not be the solution — since we’re human so… get learning.

  • source
  • parent
  • [–] 19 points 3 months ago (2 children)

    I appreciate the intent behind that sentence, and the problem is that is written (or said) by people who don't understand coding.

    Syntax was never the hard part. Code syntax is a set of rules that you can teach a machine and it's "easy" enough for an LLM to grasp it. The problem here is that this phrase does a "code = syntax" but ignoring all the difficult things that actually are in the code. Architecture, design, tradeoffs, translation of vague requirements into concrete software components...

    All of those things are terribly hard, and the reason why many LLM-first coding projects get abandoned at 70% and then companies need to hire a Software Development consultancy to mop up their mess.

  • source
  • hideshow 2 child comments
  • [–] 6 points 3 months ago (1 child)

    Interestingly what I've said here ☝️ ️comes with an interesting implication. There used to be a type of software "engineer" that couldn't actually think through a problem and implement a good software solution. They were valuable because they could refactor, write code, but not think through a problem. These are the people who have the most to lose at the moment, and also the ones that find the least value on AI, because AI only does really well the single thing they could do.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 4 points 3 months ago* (last edited 3 months ago)

    That style of software developer used to be called "monkey coders".

    Employing "monkey coders" because they are cheaper is a great way to end up paying a lot more money over the long run because their work is unmaintainable, ureliable, not robust and stupidly hard to be upgraded to implement new requirements.

    Which, if you think about it, it's pretty much what you get with AI code.

    And yeah, totally agree that these are the people who are most threatenned directly by AI at the moment. Then again, they were the ones most threatenned by outsourcing already (to India especially, since when they grew massive as an outsourcing place for software development they started hiring tons of people there who had no skill whatsoever for it and would never have gone into software development and were pretty bad, so most coders based in India were eventually this kind of code writter).

    Hiring "monkey coders" was always the product of bad management: they looked good on paper - cheap, made lots of code, bums on seats, often the kind of person who worked long hours (which in low efficient management cultures makes a manager look good because of "making their people work hard") - whilst creating massive costs spread over time and hitting everything from production downtime costs to future system improvement costs. In some ways the mass replacement of developers with AI is born from the same management incompetence as outsourcing, which is probably why it is hitting the US so hard.

    Which brings us around to how, indirectly, even good software developers are right now threatened by AI - the kind of incompetent manager who thinks code lines is a productivity metric aren't replacing just "monkey coders" with AI, they're cutting down head-count with no selectivity or even replacing first the more professional coders because they're the most expensive.

    This might not be sustainable in the mid and long term because AI, like "code monkeys", just piles up massive less obvious over-time costs on software systems (I expect a lot of companies will go under from this shit) and some are already getting desperate for the kind of professionals that can fix their self-inflicted AI problem, but people who aren't prepared for up to two years of being out of well paying software development jobs (so, most people) are getting screwed instead of aligning themselves to really profit from the wave of post-AI "oh, shit or systems are unreliable shit" work for senior types that's just starting, plus if indeed as I expect companies will fail due to this, the Tech boom will be over and there will be fewer positions than there were 2 or 3 years ago.

  • source
  • parent
  • [–] 47 points 3 months ago* (last edited 3 months ago) (16 children)

    Whoever you are, don't outsource your understanding, judgement, empathy and taste to AI. Don't abdicate your responsibility. Don't be a meat proxy.

    By expanding the ability to program to people without the knowledge of how that code works in the first place, it's naive to expect that most uses of AI in programming will be informed uses by senior developers able to recognize errors and security flaws.

    Such a pro-AI position also ignores the enormous amount of theft that these tools are built on.

  • source
  • hideshow 16 child comments
  • [–] 8 points 3 months ago*

    the ability to program

    people without the knowledge of how that code works

    Ain't that the biggest oxymoron you've seen today.

    They are not given the ability to program, per se, in my opinion. They are doing something else.

    Maybe I'm misunderstanding your comment though. Not sure if you're referring to the code output when you said "that code", or some other code. Please let me know if I got it wrong.

  • source
  • parent
  • [–] -4 points 3 months ago (14 children)

    Such a pro-AI position also ignores the enormous amount of theft that these tools are built on.

    Or, less likely, it could be that person knows and just doesn't care. I certainly don't because I believe intellectual property is bullshit.

  • source
  • parent
  • hideshow 14 child comments
  • [–] 27 points 3 months ago* (6 children)

    It's one thing for individuals (particularly those without the means of paying) to pirate content that its original creators have already been compensated for and now exists to milk money for an IP holder for a century; it's another matter entirely when AI companies with multi-billion dollar valuations scour the internet for content to include in their models to then profit from without permission from or compensation to the millions of people whose work they depend on.

  • source
  • parent
  • hideshow 6 child comments
  • [–] 6 points 3 months ago

    The problem in there is corporations. AI is just the means of the dickery, not the cause.

    I would also go further and say the root cause is capitalism, and that someone being able to eat or be housed should not be based on whether or not their art has met the criteria for corporate purchase. But I digress.

  • source
  • parent
  • [–] 3 points 3 months ago (4 children)

    Yeah that's the thing: I don't believe it's wrong to profit from people's content without their permission, because I don't believe they own that content after they share it with humanity and I absolutely don't believe they should get to enforce that "ownership" via state violence. Everyone should get to use anything they want in derivative works, whether for profit or not. The fact that this could plausibly affect people's livelihoods (but IMO wouldn't; if there were significant profits in IP "theft" corporations would already be doing it) is a failure of capitalism and frankly not the reproducer's business.

  • source
  • parent
  • hideshow 4 child comments
  • [–] 4 points 3 months ago* (2 children)

    The entire AI industry is built on IP theft; even if you don't believe in IP ownership, companies like OpenAI and Anthropic rely on their ability to scrape the internet for content, with only largest of publishers having the resources to sue for anything in return.

    So long as copyright is being enforced at the individual level for consumers, large corporations shouldn't be allowed to get away with infringing on it for profit.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 3 points 3 months ago* (1 child)

    So long as copyright is being enforced at the individual level for consumers, large corporations shouldn't be allowed to get away with infringing on it for profit.

    Sure, but my conclusion from that isn't "IP law should be enforced on the big corporations too;" it's "IP law should be abolished and also down with capitalism." Why should I want an unjust law to be enforced even more vigorously?

  • source
  • parent
  • hideshow 1 child comment
  • [–] 4 points 3 months ago*

    One of the big reasons IP law exists as it was to encourage people to not hide innovations and keep them secret to themselves. If anything you (not you specifically as a person) spend time and resources to create can be trivially taken away from you if people know about it, you then either have to keep it secret or you simply have no incentive to make anything new. Now if your argument is that current IP law has been totally perverted and abused to extreme levels and should be completely redone, you'll get no argument from me. Just killing IP laws entirely would pretty much break our current society. Maybe out of that chaos would come something better, but make no mistake, shit would be fucked in the meantime.

  • source
  • parent
  • [+] 5 points 3 months ago (2 children)
  • [–] 1 point 3 months ago (1 child)

    I mean, a key element of the anti-AI movement is that AI "steals" art, but I fundamentally believe in that art (and ideas) can't be owned and therefore can't be stolen. Ditto for code or what have you.

  • source
  • parent
  • hideshow 1 child comment
  • They CAN be owned. Particularly art.

    And I say this even when I'm anti-copyright and pro-copyleft, but even then I don't want to lose my means of work and subsistence and my moral rights.

    Also, much of that gets even worse when AI gets trained with works that you didn't even published yet, but that a hidden background AI process scraped in the platform you used to backup, plan or talk about that works. I'm talking out of experience.

  • source
  • parent
  • [–] -1 points 3 months ago (4 children)

    AI training is data theft not IP theft

  • source
  • parent
  • hideshow 4 child comments
  • [–] 3 points 3 months ago (1 child)
  • [–] 2 points 3 months ago

    Yeah, it can be both, like, if you want to argue that in our current capitalist society people need to be compensated fairly for their work, I'll hear that argument, but I don't think it's the best or most accurate framing. I think it's just as obnoxious reddit made a deal with google to train on my (and everyone else's) comments throughout the website as I do the possibility it was trained on my artwork, and I'm not alone in that.

  • source
  • parent
  • [–] 2 points 3 months ago* (1 child)

    The data theft is another story, but there's clearly an IP theft angle to anti-AI arguments, as seen in the other person response.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 2 points 3 months ago*

    His other comment applies just as easily to to stolen medical images, like this woman's , as it does more creative works. It feels violating either way. Virtually no one is worried about Mickey Mouse appearing in data sets, but lots of people do feel wronged when their emails are trained on without permission or compensation, even though they're not really IPs.

  • source
  • parent
  • load more comments (-1 replies)
  • [–] 7 points 3 months ago (-1 children)

    Code is integral. Everything they add to it, and build around it, is to support the code. Code is the God in the machine.

  • source
  • hideshow -1 child comments
  • [+] -2 points 3 months ago*
    [removed by mod]
  • source
  • parent
  • load more comments (-2 replies)
    [–] 5 points 3 months ago

    How do we thrive?

    Accept that change happens. Be equal parts curious and critical about the new stuff.

    That is not the solution. One cannot thrive if one cannot be seen or has been discarded as a relic no matter how up to date that person is. They will never be granted the opportunity to thrive as they have before as an employee. Their only hope to thrive is if they (magically) gain all the skills and networks necessary to be an entrepreneur that can do it all themselves. Nearly a unicorn.

    Meantime while trying, they burn through what savings they have on the hope and dream of "being relevant again" and have about a 5% chance of success.

    Maybe the author is misunderstanding the gist of the original article. Regardless, he raises an obviously accurate assessment of those who hold the hiring power. When I was recently out of college learning my craft, it was a common sarcastic refrain of either, "What could be so hard about it, it's all 1's and 0's" or "What's taking so long - you're just typing on a keyboard".

    This has been a problem since long before I graduated from college (when classifieds called for 10 years experience on an IBM system that was released two years ago) (see, things don't change so much - names and places, sure, but not much else). People who are in leadership positions, who think they're better and smarter than most everybody else, frequently belittle those who do the grunt work, both physical and mental. It's gotta be a corollary to dunning-kruger theory (or maybe an example of it).

  • source
  • [–] 9 points 3 months ago (1 child)

    Remember that story about the chalk mark engineer with Ford? Chalk mark 1$, knowing where to mark 1000$ ? Same with code. "Code" is easy. Knowing what to write, why and where, that's the hard part. LLMs have somehow managed to automate the code part, without the abstraction, at least in an error proof way. I don't think "coding isn't that hard" is insulting, and I don't use C++ because I think it's hard. But it's not because writing something is hard, it's because writing precisely what is needed is hard.

    Anyway, this debate doesn't matter, negotiate better, be active politically to ban stuff or not, complaining on the internet won't do anyone any good. I know you're emotionally invested in this, just... breathe and do something else? Idk. Also I'm not your enemy on this, so no need to attack me.

  • source
  • hideshow 1 child comment
  • [–] 4 points 3 months ago (1 child)

    Cooking is easy. That's not an insult to a chef.

  • source
  • hideshow 1 child comment
  • [–] 15 points 3 months ago (9 children)

    "Code was never the hard part" is probably made up by someone who never had to program anything serious.

  • source
  • hideshow 9 child comments
  • [–] 32 points 3 months ago (2 children)

    "Writting the code was never the hard part"

    It's figuring out in detail what the program is suppose to do (i.e. Requirements), how it can and should do it given the technical constraints of the available deployment environment and performance & reliability requirements (i.e. Technical Analysis) and how it all gets structured from the highest level to the lowest level so that bugs are minimized, performance is suitable with the appropriate margin to absorb expect unexpected problems and costs for maintenance and future requirements implementation are low (i.e. from Technical Architecture and Systems Design down to Software Design) that are hard.

    And I say this as somebody who has done all of those professionally, plus the coding (oh, so, so much coding) for systems of all kinds and sizes in various countries and industries, including some mission critical high performance distributed systems (which if they failed would have cost millions of $$$ in lost business income).

    Fly by the seat of their pants coders who have never worked in a properly professional environment have no fucking clue just how much more there is to it than "coding" to go from no software at all to "reliable and robust software system that serves existing business needs".

    A lot of "coders" are like I was in the beginning of my career: they think they're the shit, know nothing but a very limited range of work environments which they think "that's how things are done" when those environments are actually, amateur hour, every hour of every day, every day of the month, every month of the year - they're basically at the peak point of the Dunning-Krugger curve for software development knowledge.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 0 points 3 months ago (1 child)

    For me, that is all integrated part of "programming". You missed the documenting the code part, but i consider this as an oversight.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 9 points 3 months ago* (last edited 3 months ago)

    It says a lot that you think a coding good practice like "documenting things in code" which is at the level of using descriptive variable and function names, should be in the same bucket as structural non-coding processes (which are often entire professionions or very senior professional branches) like Requirements Analysis or Technical Architecture, both highly-complex things (the latter being the very top in seniority of the technical career track) which are non-existent in a formal sense in improvisational (read: amateur as fuck) "programming" companies.

    You're making my point on the whole Dunning-Krugger thing.

  • source
  • parent
  • [–] 4 points 3 months ago* (last edited 2 months ago)

    Not only in code. Documentation for the end user (or at least halfway there, the final document is done by a separate department), is important, too.

    There is a reason that my job description is "Embedded Systems Architect". But I see this complete packet as "programming".

  • source
  • parent
  • [–] 1 point 3 months ago* (last edited 3 months ago)

    You missed the documenting the code

    Your words.

    As for your job title, don't take this badly but "Systems Architect" is not at all the same as "Technical Architect".

    If you're actually designing or at least tuning software development processes and coding standards across multiple teams (so, not just optimizing how teams work but also optimizing cross-team work), you're a Technical Architect.

    A Systems Architect, when the title is properly used, just means that you're designing software whose operation spreads across multiple platforms (so, for example, multiple tiers in a multi-tier system).

    Also there is quite a range in Systems Architect - knowing how to code in two or more platforms (say, STM32 and some Android, to make a bit of home electronics with a microcontroller be controllable from a smartphone) is not at all the same as knowing how to design a high-performance distributed system running in multiple machines, integrated with multiple external system working for ten/hundred of thousands of client front-ends and supporting things like Distribute Transactions so that any failures don't leave half-complete operations.

    You can be a Systems Architect and be isolated form most of the concerns of the software development out there. especially if you're a team of one developing the software side of products based on some marketing person's idea of what customers supposedly want.

    Unsurprisingly, Technical Architects are non-existent outside large companies and even there they're pretty rare.

    Again, still making my point on Dunning-Krugger.

  • source
  • parent
  • load more comments (-1 replies)
  • [+] 3 points 3 months ago
    [removed by mod]
  • source
  • parent
  • [–] 1 point 3 months ago (-1 children)

    Oh, they "come home to roost" almost immediately - you just don't see it because whole teams are doing everything they can to hide it or ignore it - nightly manual data update statements, etc.. Here's just one real example.

    In my last (read: final) job as a senior software engineer, I discovered dozens of serious problems with the system I was assigned to "maintain". They ignored all of them - wouldn't let me fix anything. Meanwhile I was responsible to solve production problems on the daily (duplicate data, insert failures, performance slow-downs, etc).

    It wasn't long before the fact those problems weren't going away that they became problems I "caused". Meanwhile, all the fixes I wanted to make were ignored. I had one problem I dissected and and gave my boss a brief write-up of the scenario. He told me I needed to do deeper analysis. When I came back a few hours later with a considerably more detailed explanation, he didn't read it and complained of a "wall of text", which he literally told me to write. Then he created a random-number hack to "fix" the problem.

    They did not grasp the concept of data normalization and primary keys as they had one particular table that represented two levels of detail (for example, account -> order). They put both in one table and had a code based special update to the "account" number so they would not get a PK violation rather than just fix the data structure.

    They had as single database connection open all the time to handle all inserts in a singleton service, then launched as second one on the same database to process messages faster - and couldn't understand why it didn't double performance.

    The main routine had a cyclomatic complexity of 360! I shit you not! And everybody agreed it was "95% working" even as we continued manually fixing (the same) problems daily.

    Week after week, the customer (internal) would raise more data issues as "new" problems. I'd routinely ask two to three questions about the data set and explain that's the same problem that's been going on for six months, and if we could just get my PR reviewed, we can test it and deploy it.

    All these problems were in a single service.

    I was let go not long after the 1 month probation they soon initiated and told I was not performing at the level of a senior developer.

    This is how delusional these people are. They refuse to acknowledge their flaws even after hiring someone specifically to solve them. They blithely call their monstrosities "successful" while committing many staff to late nights and weekends "managing" it.

  • source
  • parent
  • hideshow -1 child comments
  • [+] 1 point 3 months ago
    [removed by mod]
  • source
  • parent
  • [–] 1 point 2 months ago (-1 children)

    It was, except for the fact of ageism, the shortness of the tenure, the already accelerating developer job apocalypse, and the soul crushing insult of the experience. After a year, I stopped looking for a job and felt a huge weight lift off my soul. My career is dead, and I stopped searching when I realized I lost all joy in the craft. I just didn't want to do it anymore. It is almost like the way Alex in A Clockwork Orange could no longer listen to his favorite musician, Bach, after his "programming". I find myself recoiling from it.

  • source
  • parent
  • hideshow -1 child comments
  • load more comments (-1 replies)
  • load more comments (-2 replies)
  • load more comments (-2 replies)
  • [–] 0 points 3 months ago (5 children)
  • [–] 1 point 3 months ago (4 children)

    An OS, a compiler, any complete application. Or at least significant parts of it. And I mean programming from A to Z: defining, detailing, implementing, verifying, documenting.

  • source
  • parent
  • hideshow 4 child comments
  • [–] 6 points 3 months ago (3 children)

    any complete application

    An OS, a compiler

    Quite the hefty examples lmfao, holy hell. Guess all of us "regular" software engineers in the business are just plebs huh.

  • source
  • parent
  • hideshow 3 child comments
  • [–] 2 points 3 months ago (2 children)

    I've wrote my first pre-emptive multitasking OS as a teenager. I also wrote my first compiler back then. I've worked on everything from industrial controllers to a Cray YMP. And I've forgotten more programming languages than most hacker kids can list. I consider myself as a seasoned programmer.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 4 points 3 months ago

    Right, you're a little more than a seasoned programmer, buddy. You are extraordinary.

    You can't expect "an operating system" or "a compiler" to be the bar for "doing anything 'serious'" 😂

  • source
  • parent
  • [–] 3 points 3 months ago* (last edited 3 months ago) (1 child)

    Don't take this badly, mate, but you sound like me when I was a "kid" thinking I was truly the shit for all my technical achievements as a self-taught programmer.

    Absolutely, really impressive 1 in a really-big-number kind stuff, just the most pure technical track imaginable and not the same as understanding software development the process as whole, at all.

    Decades later, 3 countries later, several industries later, various different environments and kinds of projects later and all sizes of company later, I've figured out that they pay us the big bucks to make software for OTHER PEOPLE, to serve THEIR needs not ours needs and certainly not for our personal enjoyment, though a good dev will always find some enjoyment in cracking complex problems, IMHO - from were a fuckton of constrains and dependencies on what and how you make it and whom do you have to work with are born - and if you want to achieve something that's great in more axes of greatness than just pure technical impressiveness you need to actually learn how to effectively work in a team and with other teams even non-technical ones, including, beyond a certain point of experience, how to empower other more junior people in your team rather than just be pissed off at how little they know.

    (And I don't mean going into the Management track, I mean staying the Technical career track and still progressing as a Software Engineer).

    And don't get me started on the engineering-style concerns of software design around software live cycle in production and how to prepare for expected future directions of change.

    Mind you I've crossed paths over the years once or twice with people who never moved beyond "technical excellence" as their one and only metric for software development (typically "rockstar coders") and they were invariably miserable people who bitch and moaned about "lusers" and how other developers don't know how to use the (not really properly designed for robust usage by people that can't read your fucking mind) libraries they made.

    Unless you find yourself a nice niche where you can be a solo rockstar hacker, technical excellence is only a good software development metric up to maybe the 5 years experience mark. Beyond that, unless your career has stagnated you're supposed to be delivering the results the customers need to the customers and doing so in complex environments in cooperation with various teams, some of whom don't at all understand most technical language and certain don't have a fucking clue what "pre-emptive multitasking" means.

  • source
  • parent
  • hideshow 1 child comment
  • load more comments (-1 replies)
  • [–] 3 points 3 months ago

    That try, the hard part is algorithmic and avoiding archictuctural traps and experience. Pissing code which didn't work or look like it work but don't is easy.

  • source
  • [–] -2 points 3 months ago

    I won't miss writing code. In part because I still do when I feel like it, but also because most of the time it is extremely boring. A mere mean to a goal for which you probably have the path mapped out in your brain already. It is basically just busywork at that point.

    There are these moments where you need to squeeze out performance, where you change something about the UI or generally visuals and get a pleasing result, or where you discover a small tweak that collapses a lot of complexity you originally planned for - but that is, in my humble experience, not the norm in programming. The vast majority of code is boilerplate or stuff you have already written a thousand times in some variation. The more experience you have the worse it gets.

    I was ecstatic when I realized how good agents have gotten, realized how I could focus on design and architecture and with small corrections, get more than adequate software. Because for me personally, programming is the least fun part of software development. Most of the time that is. And you can hate it all you want, but programming is a skill worth nothing on its own now, and it will never be again. You can take solice in the fact that you can still do it for fun if you want to.

  • source
  • [–] 10 points 3 months ago (-1 children)

    idk, code was always written only once, but it will always be read many times. Writing code with LLM centric way and just focusing the high level gets hazardous pretty quickly, since somebody actually needs to understand the codebase deep down (or at least the relevant part) when something goes wrong. When you have 100k+ line codebase with multiple contributors with LLM it can very quickly turn into a black box, which nobody understand anything deep down anymore and everybody are more and more incentivized to use LLMs to interact with the thing to get anything real done. Then it's couple hallucinations away from turning into a fragile mess, where things break unexpected and nobody knows why.

  • source
  • parent
  • hideshow -1 child comments
  • load more comments (-1 replies)
  • 40 comments in c/programming@programming.dev view that post
    [–] 127 points 3 months ago (8 children)

    What OOP refers to is not "writing code" but "designing the code." Everyone can write a book. Even I can. It will be a fucking shitty book, because I don't know how to create suspense, give depth to characters, or any of that stuff. But it's still a book. Writing code is easy. Writing good code is hard. If you want a program to fetch the current outside temp from an API you could throw together random lines of code that vaguely does what you want that you found on stackoverflow and iterate until it works. Will it catch edge cases? No. Will it output in a pretty format? No. Will it be maintainable? No. Will it be the next Facebook? Hard no. But you did write code.

    Writing code is easy. Writing good code is hard. And that is why we have door stoppers called "Clean Code" to help us on our way. You might notice that the "how to code" books aren't much thicker than a a pamphlet. But if it ever as much as touches on the topic of good code it will make for a door stopper worthy of a nuclear bunker's entrance.

  • source
  • hideshow 8 child comments
  • [–] 37 points 3 months ago (5 children)

    One thing to know about Clean Code is that the author is a hard right MAGA dickhead now, so if that is important to you then seek a more modern source of advice. A lot of the things he advocates for about code obviously aren't dripping in right wing rhetoric, but if you look at his socials you might feel quite turned off.

    Worth saying the comment I'm replying to is not wrong IMHO

  • source
  • parent
  • hideshow 5 child comments
  • [–] 13 points 3 months ago (2 children)

    The finer details of the coding advice in Clean Code is also insane. There's a good summary of it but I forgor where

  • source
  • parent
  • hideshow 2 child comments
  • [–] 59 points 3 months ago

    If coding is easy...

    Think of it like DJ'ing.

    The rock bottom level of being a DJ is putting a playlist together and playing it. Anyone could do that, you've already probably done it on your phone. Maybe even grouped songs by genre or year if you're feeling fancy.

    But a good DJ does more than that. They arrange the songs to give a particular vibe, they play around with the transitions to keep people in the music, they may even remix songs or their entire playlist on the fly. They're artists in their own right, making more than the sum of what went in.

    ... And that's the same as a programmer. Anyone can bumble their way through to writing code - but is that code anywhere close to optimal, properly annotated, maintainable?

    GenAI throwing out thousands of lines of shitty code that has to be bug-fixed multiple times over by a developer is a waste of time, energy, computer parts, and money.

  • source
  • [–] 54 points 3 months ago (3 children)

    @codeinabox When I say some variation of "writing code is not the hard part," what I mean is this: I can get a 9 year old to write a program that compiles and runs. A literal child can achieve "writing code" within an hour. That specifically is my bar for "writing code" because, by definition, that's what's happening. However, it's obvious there's a vast difference between what a 9 year old can do in an hour and what a professional software engineer does with 20+ years of experience.

  • source
  • hideshow 3 child comments
  • [–] 21 points 3 months ago (2 children)

    @codeinabox My goal in saying "writing code is not the hard part" is to assure people that using a limited visual scripting alternative or "no-code" tool is not the magic bullet they think it is and in fact it will hold them back more than anything. It's not a statement of "it's not impressive to do this well" it's one of "do not be so afraid of this skill, because it's not as unapproachable as you think it is."

  • source
  • parent
  • hideshow 2 child comments
  • [–] 10 points 3 months ago (1 child)

    @codeinabox The problem with AI being trained on our code is not because the code has inherent value. In most cases, the code is being distributed for free, after all.The problem is that it's a violation of licenses - an expression of an author's desire for how their work is used. If an author's work is an extension of themselves, then violating a license is a violation of their autonomy.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 41 points 3 months ago (9 children)

    If coding is easy, how come programmers were in high demand, and have demanded large salaries for years (even before ZIRP)?

    Because programmers seemed magical, mythical, able to create insane amount of value by typing a few words onto a screen. You will see this if you just go and look at how any other industries work. Even just using basic shortcuts puts you into like the top 1% of computer users, that’s how inefficient most people are at working.

    Why was there so much stress, overwork and burnout even before AI started churning out 5000-line PRs? Why did companies seek 10x ninja rockstar coders and subject them to leetcode interviews—surely, a junior fresh out of college could churn out something if it's so easy?

    Because developers are asked to do more work than any other office job. The value you create as a developer is 10x what a product manager does. You can do a product manager’s job, they cannot do yours.

    If coding is easy, why do we have doorstoppers like Clean Code and The Pragmatic Programmer?

    Once again, because programmers are obsessed with efficiency and productivity. Having a book about something doesn’t mean jack though. There are books on how to walk better, that doesn’t mean walking is hard.

    Why do we have bootcamps or even whole college degrees dedicated to it?

    These are dumb questions, there are degrees for everything.

    If coding is easy, why are people angry at AI (or anyone else) copying their code? Why do they act like they've poured their sweat, soul, and copious amounts of time into something so trivial?

    People are angry that AI isn’t “following the rules” while simultaneously destroying the planet. People believe the bullshit that LLMs make up and then say “oh, your job was easy the whole time”. No, coding is easy. The rest of it wasn’t. Coding is meaningless without good architecture, good requirements, good UI/UX.

    If coding is easy, why do many now feel like their identity and professional purpose are being stripped away from them?

    … because the jobs are being taken away and distilled down into just “coding”. How is this hard to understand?

    If coding is easy, why is software so damn buggy?

    Because business doesn’t (didn’t) care about writing code, they cared about making money. Also the number of bugs has nothing to do with how easy something is. Walking is easy, that doesn’t mean you don’t ever roll your ankle.

    If deciding what to build is the hard part, why do so many product managers seem clueless? Why aren't there rigorous 10-step interviews for them? Why aren't they getting paid more than the developers?

    Yay! Good questions now! Yeah why do programmers have the only job where they’re quizzed over and over again? Huh, maybe it’s because every other industry thinks the hard part is coding (hence why this focus on coding)!

    If deciding what to build is the hard part, why aren't market researchers, usability experts and—hell, customer success—considered rockstars in a software company?

    The output of a programmer is directly visible, the output of pretty much every single other job in software development is not. What, are they going to start measuring how many tickets and meetings your scrum master makes?

    If implementation is easy and finding demand is harder, why are programmers upset when the salespeople promise a new feature to a customer to close the sale? They've found a genuine demand, something people will pay for!

    Who the fuck ever said implementation is easy. Coding is easy. That’s not implementation. The code has to fucking do something. That thing has to be tested. The sales person probably didn’t gather actual requirements before promising the feature, so whatever the customer thinks they’re getting is definitely not what they’re getting.

    You can literally see that actual coding is easy when you understand the requirements by looking at tiny development companies that have made a single product where they give customers enormous power to choose new features. The new features come out incredibly quickly.

    If coding is easy, why doesn't everyone just build ten variations of a thing and see which pans out?

    Dumb question. It’s hard enough to sell one product, much less 10. Think about any normal software user finding out there are ten ways to do something. Even some programmers hate it, Python claims there’s only one right way to do any given thing.

    Some software developers do say “I don't write code, I solve customer's problems”. But then they turn around and start to opine on monads, memory safety, and DRY principles, while their understanding of the customer is a made-up “user persona”, and they think “affordance” is the money your parents used to give you on weekends so you could go out and have a good time.

    Yes, they like to talk about the fun part of the job, not the non-fun part. Big surprise. Also turns out they like to optimize that part to make it more and more fun, because it’s become too easy.

    What is important?

    You’ve switched the topic. It was about what is hard, not what is important.

    But do recognize we're in the middle of an industry-wide tectonic change. We need to figure out how to adapt. We need to understand what is likely to change and what never changes.

    No we don’t. This is like saying we need to learn how to adapt when every country has nukes and has started to bomb every country constantly. We need to stop bombing, not learn how to live with it.

    Users will always want more and be prepared to spend less

    So then we definitely should stop using LLMs.

    Programmers have been in the business of disrupting our own industry since the beginning. Nobody uses punch-cards any more. Very few people need to code in assembly, or COBOL. Those decades spent fighting memory bugs in C or C++, with the scars to prove it, are worthless in the age of Rust, Go, Python and JavaScript.

    Difference is, those things were an improvement. LLMs are a step backwards.

    Accept that change happens. Be equal parts curious and critical about the new stuff.

    I love change. I don’t like destroying the planet. It’s even worse when it’s of absolutely no benefit to anyone but billionaires. This isn’t change. This is destruction of the planet.

  • source
  • hideshow 9 child comments
  • [–] 3 points 3 months ago* (8 children)

    my argument is that i couldn't code real useful programs myself my whole life, and i tried several times, fail computer science in college etc, and now with claude im actually getting these things built -- and there's a lot of pitfalls a few times i had to tell claude to start over but i guess i feel like a paraplegic who could never walk but now with an accessible car i can actually drive and im sorry that's putting a lot of horse carriage drivers out of business.

    and im my IRL circle, a couple of my friends who were great at coding in college and are now master coders, they're not complaining about it at all -- they're able to spin up ten agents at once to do things much faster than they were able to three years ago. they all have startup side businesses now on top of their full time industry job, only possible due to coding AIs helping them get shit done faster.

  • source
  • parent
  • hideshow 8 child comments
  • [–] 2 points 3 months ago (5 children)

    Let me say this how it sounds to me:

    I couldn’t build weapons of mass destruction my whole life, I tried to build nukes several times but couldn’t. Now I have a robot that just does the nuking for me, while I can build other things. My other friends don’t seem to have a problem with the nuking, because they get to shoot their guns faster.

    I’m sorry, but just because you can do something doesn’t mean you should. I could do a lot of immoral, unethical, horrible to humanity and nature things and yet I don’t.

  • source
  • parent
  • hideshow 5 child comments
  • [–] 1 point 3 months ago (4 children)

    I mean the nuke analogy is quite stretched

  • source
  • parent
  • hideshow 4 child comments
  • [–] 1 point 2 months ago (3 children)

    In what way. That new AWS data center is going to kill about 7k people just in CO2 emissions per year. Just 21 of those will kill as many people as the Hiroshima and Nagasaki bombs per year.

    Source: https://www.nature.com/articles/s41467-021-24487-w

  • source
  • parent
  • hideshow 3 child comments
  • [–] 0 points 2 months ago* (2 children)

    Well by that logic i was destined to go to hell a long time ago when i started driving. My personal annual commute to work creates ten times co2 emissions that the entirety of the energy google used to train chatgpt.

    AI datacenters account for less than 10% global co2 emissions. Of course ten percent more global warming is bad, but i personally have several things that contribute more than using AI ten hours a week.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 1 point 2 months ago (1 child)

    Huh? Google doesn’t own ChatGPT. And no, your personal commute to work isn’t a millionth of a fraction of what is used to train these models.

    AI datacenters account for less than 10% global co2 emissions. Of course ten percent more global warming is bad, but i personally have several things that contribute more than using AI ten hours a week.

    No, no you don’t.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 11 points 3 months ago* (last edited 3 months ago)

    I like to distinct between programmer and engineering jobs: first is the code ape, that LLM coul theoretically do (still too verbose though) with some hand-holding from a engineer.
    The second is creating the solution; how A interacts with B on condition C in environment D.

    Sad part is, with how broken the web currently is (each site has to implement every feature themselves), there's lots of code ape jobs.

    And btw, execs love LLM because they excel in the same task; creating lots of sentences with a minuscle of meaning and confidently asserting half-truths or outright lies. They have a "it's just like me!" moment. But both are bad at creating solutions.

  • source
  • [–] 30 points 3 months ago (6 children)

    programming is not hard. translating from human desires into a real project is hard. anyone who has read a project “plan” know what i mean.

  • source
  • hideshow 6 child comments
  • [–] 8 points 3 months ago* (last edited 3 months ago) (1 child)

    What did you read of the article? Of course programming can be hard. Some of the brightest engineers and academics in the world have spent years on problems.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 4 points 3 months ago

    At that point it's basically Maths - things like the Travelling Salesman problem - and the people going after such "programming" problems are actual Scientists and even then the problem is not in doing what AI does - writting the code - it's knowing the logical solution which then determines the right code to write.

    So your what you say doesn't really contradict the previous poster - some of the brightest engineers and academics in the world have spent years working on problems - so figuring out what's the right code to write - not actually in writting the code.

    I suppose the only point of conflict is were the boundary between "programming" and "maths" is - if one think of it as "writting code" then both of you are saying the same.

  • source
  • parent
  • [–] -1 points 3 months ago (3 children)

    Its not that hard. You read the project plan and start translating it into a list of todos. As you make the list, questions come up. Write those down. When you are done writing your todo list, you send your list of questions to the relevant person, then start working on the todo list where you don't have questions, or where you are decently sure what the answer will be. As you work through the implementation, you will come up with more questions for edge cases. Send these to the relevant person as well.

    Ideally, these questions will be sent as an enumerated heirarchical list, and will be answered as such in turn. Every once in a while, it is more useful to jump on a call to figure something out quickly.

  • source
  • parent
  • hideshow 3 child comments
  • [–] 5 points 3 months ago*

    That's a stupidly incompetent way of doing software development.

    If the people upstream are fucking professionals then it would be very rare than the edge cases are discovered at the coding stage since that shit can baloon into massive rewrites and even redesigns (if, for example, it impacts throught to multiple system tiers) which in turn means productivity is shit and the resulting system is a big fucking bug-riddled unreliable mess because of all the going back and all the hacking of "unexpected" (but totally expected if people did their fucking jobs) things into the existing design.

    Further, the constantly ping-ponging of questions up and down the layers during development (especially if at the other end there are business user for whom the software is being made) adds a ton of overhead, not to mention needless waiting periods.

    I bet you never worked with a Technical or Business Analyst or even in a project managed by somebody who was not a reactive "shoot from the hip" manager.

    PS: And, yeah, I'm pissed off just thinking about that crap, because in my career I had to learn the fucking job of Project Manager, Technical Analyst and even Business Analyst after I figured out A LOT of the unecessary problems, blown up deadlines and stress I was getting at the systems design and software design levels were the product of that part of the work not being properly done or at all, so that shit you're describing as if that was the normal way of doing software development really makes my blood boil - by my professional standards that shite is amateur hour, every hour of the day, every day of the month, every month of the year.

  • source
  • parent
  • [–] 7 points 3 months ago (4 children)

    Very few people need to code in assembly, or COBOL

    But those who do are paid the big bux, that's for sure. Many big banks still have their backend off of COBOL code originally written in the 90s, only with flowery UI updates over the years.

  • source
  • hideshow 4 child comments
  • [+] 9 points 3 months ago (2 children)
  • [–] 3 points 3 months ago*

    There was a period when that was true and companies were literally bringing retired programmers back to do it, but that was over 2 decades ago during the Y2K period when really old systems done in COBOL and running in mainframes had to have the dates problem fixed before the date roleover came in 2000.

  • source
  • parent
  • [–] 3 points 3 months ago

    Cobol developers are typically developers who weren't good enough to learn other languages. Their computing knowledge is often quite limited to their mainframe. I've never met one who was competent in anything else.

    They're not making the big bucks.

  • source
  • parent
  • [–] 3 points 3 months ago

    Programmers say it and I doubt they do it to insult themselves. Code was never the hard part, it was just slow

  • source
  • [–] 3 points 3 months ago

    Programmers automating coding then CEOs forcing everyone else to use it is an insult to programmers.

    Some fuckers that built AI and fucked their own industry need to take some responsibility here. Some Sloppenheimer out there fucked the market up, one of our own.

  • source
  • [–] 2 points 3 months ago*

    Well written blog, thanks. I actually saved it to reread.

  • source
  • [–] 2 points 3 months ago

    "Ok boss, let's make a bet..."

  • source