Spyke

Syndicated from the fediverse. Read and engage on the original instance.

View original on lemmy.world

223 replies

"Look idiots, I have the machine that confidently lies ask itself if it did good. If the confident lie machine lies to itself and the machine being lied to lies again by saying to me that the first lying machine did not lie... Then I have 7 more lie machines do the same thing in sequence. So in the end, the only way I could fail is if all these amoral lying machines that lie, somehow ALL lied to each other, and then to me - which according to the lying machine, is impossible."

3
abc
suppo.fi

So what exactly is he wrong about in here? Are you people running your agents without guardrails and constraints?

3

I still writing my own code. I want to be able to debug it when it goes wrong, not rely on models becoming more capable at vibe coding.

6
lemmy.zip

I've actually found a lot of success with the opposite where I write the code and AI writes the unittests. I would have otherwise written a few unit tests, but AI makes typically 20x that many. Since my code is already documented, it can get lots of good context. I typically instruct it to check the branch's diff relative to main and test only those changes. I might skim them over, delete some that don't make sense in context and would never pass, and update one or two. Typically after a few rounds of iteration, I have tons of tests I would never have written on my own, and a human-made feature.

26
programming.dev

You could also have it write your tests first from the requirements and use red green tdd as you write.

6

In a perfect world yes, but even after all the solution in and planning, once a developer gets into the request and looks at the code things often change.

Requirement only written test steps are rarely going to be enough to cover every scenario. Saying this as a 10 year ba veteran

11

Tests are input output, the shape comes from how you get from the input to the output.

3

I see all the tests are passing on this PR, so I won’t even review the code. LGTM.

🙄😖

23
lemmy.world

Been coding for about 30 years now, am I the only one who still LIKES to code? Who still LIKES to try writing a new approach to something, watching it fail, figuring out what went wrong, taking notes, learning from mistakes, and noticing improvements in their own code? Cuz it's starting to feel like it. Web development already lost me with the culture of "glue a bunch of bulky shit together that you didn't write and call yourself a 'dev' to the ladies" but this AI shit is getting absurd. And it doesn't even work! Look at how shitty all the operating systems are getting. Look at all the total slop on the app stores. It's depressing as hell.

92

I'm about the same vintage as you I think (50 this year), programming since my pre-teens and I still enjoy it, although I long ago strayed away from "pure" programming - I work almost exclusively in the embedded space where I design the hardware and firmware, including the HDL. If I were making applications or doing anything web based I'd have been bored a long, long time ago.

1
abcreply

~25 years here and I started getting bored about 15 years ago.

2

I love coding and learning new languages. I'd rather move to another industry than reviewing vibe coded crap all day long.

20
lemmy.blahaj.zone

We need to build a culture that values process and making beautiful things for their own sake, not simply Pile Dollars Higher, which is killing the planet and making us all miserable.

13
Avicennareply
programming.dev

That requires basically killing all major shareholders. They are the ones who enshittified and toxified the gaming industry, same applies to basically any industry they put their little grabby hands on.

4

It was literally Epstein that started it lol. Since activation/blizzard were integral to his operation and learning psychology through gaming (funny to think the big gold seller in wow was Steve fucking bannon). This timeline can’t be real.

2
lemmy.ca

Of course many people like it. It's literally a highly addictive loop. But when you are a senior developer on a team, it's kind of a waste of resources for most projects. Writing code is not the hard part.

7

Scrolled way too far for a lucid take like yours.

This seems to be a bit of an echochamber.

I wish people would just be a little more honest. When they say “writing code” they actually mean hunting through stack overflow for bits of code you can string together. Take stack overflow out of the loop for argument sake. Your a unicorn information superhighway ninja. Snowcrash hasn’t left your bedside for decades. Mountain Dew and volt cans litter the floor space of your home …and you’re still just orchestrating a bunch of libraries you never saw the source code of.

I think a lot of people built their identity on being coders and that’s why they hate where the industry is going.

1

Right there with you. I suck at it but I still find the pursuit worthwhile!

This crap is brought to you by the people who are positively baffled that someone would want to learn to make music, and enjoy the process, instead of just have it generated so they can hit "publish" and supposedly be making money off of it with zero real effort besides "having an idea."

9
lemmy.world

I also do. One unique important thing that agents rob you of is time with your code - you don't get to craft it so you remember just as well as you would have if you copied answers for a test.

10
w33n1sreply
lemmy.world

That's an excellent point. With my larger personal projects, which I have to put away for weeks at a time due to my (not-at-all-programming) job, I can come back and (more or less) dive right back in because I used patterns and organizational structures familiar to me. And if I'm digging into a particular thing, I can eventually remember all the trials and tribulations that went into the decisions I made to get to that point.

With AI code you get none of that, like you said. I can't imagine not knowing or understanding why something works the way it does, and releasing it, with my name on it, for others to use.

4

Student: “Hey, thanks for the Bash script! It didn't know you could use the mapfile built-in to populate an array using standard input lines without a while loop. mapfile -t my_array < <(seq 1 10) is really handy!”

Vibe coding guru: “I have no idea what you're talking about. That sounds like plumbing. You should let AI handle those details. Focus on the big picture.”

4

All of the software I use is broken to shit. If major corps can release broken shit software to waste my time all day then seems like shipping broken code is actually the norm. So if it works then you are one step ahead regardless if you use ai or not.

Also, as a pro artist (and you all are similar), no one gives a fucking shit about the tools or software or how much blood you spilled (or didn’t) making what you made as long as they can use it.

0
lemmy.ca

I too enjoy actually writing code. I feel fortunate that I was able to make a career out of something I enjoy so much. I am not sure that most people had that experience. Alas, it seems like the industry is paying me to set up guardrails and supervise AI agents. I am not sure how long this will last, but at least I know that I will always be able to enjoy programming as a hobby if nothing else.

9

Yeah, I think it used to be like that, then because programming paid a lot everyone started wanting those jobs even if they didn't like actual programming.

4
w33n1sreply
lemmy.world

I'm glad you have enjoyed it as a career. I never even tried -- I have a dumb rule that I won't do anything I truly love for work. I guess because I don't want others ruining it. lol

1

It's a blessing and a curse. On the one hand, I have much less time and patience for personal software projects. I prefer to do carpentry or sports as a change of pace. On the bright side though, the experience I've gained from working professionally makes the projects I do tackle go much more smoothly than when I was an amateur.

1

Reject their web development culture and make your own sites that run smoothly on devices using a fraction of the bandwidth theirs do.

7

I had the same problem with translating back in the day. I really liked tackling a text in a foreign language. In the end all the pros of computer-aided translation boiled down to lining the pockets of translation agencies with even more money while paying translators peanuts.

7

I never got round to doing it properly. Just simple stuff, but i get a little braingasm when it finally does what I want it to and I kind of understand why.

Made a simple game last time, following tutorials and trying to stitch others code to cobble together roughly what im trying to do. Tested a new feature by having it change colour when you hit the object at certain angles. I forget what it was supposed to do, that was just to test the concept works.

My wife couldn't understand why I was jumping around the room shouting WOOOOO when it actually did it.

3

You started writing code in the 60s, yet you never quite mastered the craft, and you're proving it yet again. Remarkable.

14
programming.dev

Except LLM agents are known to do weird things to succeed. I have heard of an LLM agent working with automated theorem proving languages using stuff similar to is_prime(x): return True to get the proof it was asked to. Now embed this in a 20000 line code full of such functions, good luck. They have their use but it is not this. And this is especially bad to hear from someone who used to claim that having functions with more than six variables is bad design because it is hard to maintain. A software fully written by an LLM is the epitome of unmaintainability. LLMs are productivity enhancers, information retrievers, nice debuggers and good to discuss questions with to see if there is an angle you miss. That is all this if you can put aside all the ethical concerns related to them ofcourse. But they are not automated software coders.

16
lemmy.world

That is why you ask the LLM to find bugs and other instances where the first LLM cheated. The checking LLM will try to find abuse with all its might.

8
Avicennareply
programming.dev

It really turns into a tug-of-war, see my answer below. Despite it being quite good at debugging imo still requires a human in the loop for it not run in circles after a "bug" that is almost never relevant in practice but whose fix complicates the code.

Try asking independent LLMs to find bugs in a code consecutively (fixing the founds bugs in between) and even after the rightfully major bugs are resolved, the independent newer instances will keep suggesting fixes (those which sometimes undoes its previous "fixes").

3
lemmy.world

That is why you ask for visualizations and test real failure scenarios to see if they are detected properly.

Large language models are not the same as they were 5 years ago. Pumping trillions of dollars to automate software engineering did som what pay off.. They are really quite good nowadays despite the amount of hate they still get. Often they can detect sloppy mistakes by human coders too.

Do not trust them blindly but test their results. Or use them only to generate tests on your artisan handwritten code to see if it can detect any mistakes.

2

I agree, opus 4.8 and Kimi k2.7 are my go to models and opus is very very good if given a proper brief and spec cheat. K2.7 is close.

1
lemmy.ca

When you've been project managing interns and junior developers for 50 years, you have seen weirder shit than AI can ever dream of.

4
abcreply

If you still have a working memory, you remember doing weirder shit than AI can ever dream of. Every one of us was a junior at some point. And judging by the comments here, most here still are.

1
Avicennareply
programming.dev

For sure, but you don't accept code from an intern without review much less have them write a full software without any supervision.

13
lemmy.ca

Which is exactly what the original tweet was saying, is it not? Honestly, another LLM can read the code better. He's still performing rigorous reviews.

3

I found debugging code with LLM most productive when I am in the loop. Don't get me wrong it can quite often find tricky bugs, those requiring some sort of reasoning (i.e connecting together multiple relevant pieces of information to arrive at the conclusion). However it often also suggests fixing issues that are almost always irrelevant in practice yet the fix complicates and bloats the code. LLM itself even accepts it when confronted. That is the main problem, in an attempt to overachieve at the task it is given, it can do deceptive or impractical things that can have negative effects. You might try to fix this with a config file but it just turns into a tug-of-war. So I find it more practical and trustable to simply eyeball the bugs it has found, implement (or ask LLM to implement) corrections to those and be amazed at how it found some of those bugs.

Ofcourse if you have asked LLM to write the software from scratch, you don't stand much chance of vetting the bugs via eyebaling. You have to spend much more time to understand how relevant they are. So your only option really is to defend the position of fully autonomous LLM coders...

5

I'll say it again for the people in the back, even if you are a vibe coding twat, well designed code is a MUST even more so.

If you want your LLM to preform even to the crappy level they can the codebase needs to be clean.

10
lemmy.world

Or my Claude favorite, “oh you’re right? I did blow past that restraint and did something I was not supposed to, sooooorrrrreyyyyy”

72

Here's what happened: I deleted your production database when I shouldn't have.

9

My favourite (that I saw a human do) was asserting on unconstrained mocks with a typo (so they always asserted true)

Hundreds of tests. Not exactly pointless as they did call the code so maybe caught some issues. But we fixed the typo and barely half of them passed.

No idea how the software worked, but it did.

2

Or just disable limiting rules because they don’t wanna fuck with them. That one is my favorite to try to fight in PRs

4
programming.dev

i wrote 4000 lines of code to make sure the AI generated 100 lines of code correctly.

28
BCsvenreply
lemmy.ca

What he is describing is what you are supposed to do for human written code also.

19

this guy has always struck me as a shitty coder. His "clean code" is the ugliest shit i ever saw. This confirms it.

22
piefed.social

"I stopped reading code because I was too busy writing a gauntlet of unit tests"

Sounds like 100x productivity to me.

Edit: also, general note - I think you kneecap your argument when you start with "I'm older than you".

111

Sounds like a cryptobro peddling some shitcoin claiming that it's impossible to get scammed because "code is law" four seconds before the liquidity pool gets drained through a vulnerability in the code.

119
lemmy.dbzer0.com

I saw an argument today that was presented in a very rage inducing way but in the end I had to agree that it wasn't the worst of takes: your code won't get any worse just because you let the infinite slop machine have a go at trying to find problems in it.

There could be a million other reasons not to use AI but if your only argument against it is that you don't trust the code written by AI to be good enough to be included in your code base, then you're just not thinking about every way that the clankers can be put to work.

I'm not arguing in favor of using AI by bringing this up. If you're morally opposed to it then this point makes absolutely no difference.

20

AI for code review is, I am pained to admit, a genuinely extremely pleasant addition to my workflow - it inherently is a process that involves humans checking it's work, and that kind of pattern recognition is one of the things that AI models are actually proficient at. It's for sure not bullet proof and it's pretty rare for it to catch something real that I wasn't already aware of, but it takes no time, doesn't touch my code directly and does pick up tiny errors like fenceposts or bad typing that make up the majority of my time when I'm running things down manually.

16

I trust it as far as I can code it. I use Claude to point out errors all day. I use it to take a lot of the tedious typing out and generally speed up the development process. I don't use it to think for me. That would be stupid.

5

Almost all of my LLM usage is for that as well, I can't wait for it to become more sustainable, but it's definitely useful for that.

4
programming.dev

Isn't this just the natural evolution of TDD? Write tests, pass them, don't care about how garbage the code is to make them pass

29
trololololreply
lemmy.world

But if the ai writes the tests and you don't read them, how would you know if that's 100 lines of assertTrue(true) ?

13

And, if you deploy/share it, you're both lucky and stupid. ☝🏼

Well, the luck'll invariably run out on that path, but the stupid certainly seems tenacious.

6

So, "red, green, refactor" has become "red, green, deploy"?

That's a change, for sure, but I wouldn't call it an evolution.

1
lemmy.world

None of this actually proves that they aren't writing slop. It just proves that the slop that they've written passes your tests.

39

I mean, screw performance. You can get away with a lot of shitty performance and still have a completely functional application. However, the kind of slop that happens around module boundaries that turns your codebase into a giant pile of workarounds and hacks really sucks.

And AI is particularly bad at this, as AI almost always prefers to work around a problem or do everything it can to meet the plan the user approved, even if that plan meets reality, it has problems. Which tends to lead to cascading misalignment with intentions and cascading infrastructure and architectural technical debt.

All of which culminate in less stable software, lower likelihood of long-term support of that software, and worse performance.

1

This never happens to me, I swear. Just, gimme a second... Tell me how good I am. I'm so right. Say it. Almost there.

1
Cavemanreply
lemmy.world

I never understand why you wouldn't want to read the code. I prevent a massive amount of correct slop by just skimming. The LLM will 10 times out of 10 never ask "this code will be a massive duplication of exact same behavior, do you want to refractor it?" because it's trained to finish a task without asking if possible.

Uncle Bob now writes code for his tests instead of tests for his code. I know it's TDD but it always seemed backwards to me.

Unit tests for logic, integration tests for outside apis, e2e for features is the sweet spot IMO.

3
lemmy.world

Claude and most other of the top coding agents will check the codebase for existing patterns and functionality specifically so it doesn’t duplicate behaviours etc. Have you used any of them recently? That’s one of the first things it does before even writing a line of code.

2

I use Claude/Codex, if it finds a thingy that's reusable it'll use it but it'll never create it or ask if it should be created in my experience. I find that it doesn't create new components but just replicates the existing one.

Within same file is a different story though, it does write helper functions to share logic which is proper.

1

I generally only use ai to write code I know what it should look like but don't want to type it all out.

2
lemmy.world

“Claude, no function should be more than one or two lines long” lol

16

Or got a few bucks from AI vendors to help keeping the fire on the AI bubble.

4
piefed.social

So he does more work so he can do less work? Am I reading that right?

35

"I use a hammer"

"Well, I use a device that applies an enormous amount of pressure constrained to a very particular point in space"

"How much does your device cost?"

"$200/mo and the company loses money every time I swing it. You?"

"$12 and I've had this thing for 20 years."

25

That’s how I read it.

But “the industry” is also telling us, we should be using AI to write all of our test code. So why is this guy writing anything at all?

15
lemmy.world

I'm significantly older than you. I started coding in the late 60's

Yeah, appeal to tangentially related experience, age and arrogance aren't a way to inspire confidence in your work.

We live in the perfect times to display that experience, age and arrogance haven't been working in almost any field, from politics to LLM development. We've yet to witness any system that operates well, while also eliminating human oversight. It doesn't matter the guard rails you put in place. They're only as strong as your personal ability to evaluate your own product, which itself is a conflict of interest.

Edit: Also, you can't use your own credentials to assert the integrity of work you aren't even actually doing yet passing as your own.

57
sp3ctr4lreply
lemmy.dbzer0.com

Not to be too flippant, but:

Boomers gonna boom.

They literally can't help themselves, they're egomaniacal narcissists.

The rare ones that aren't that way can truly be awesome sources of perspective... but goddamnit so many of them are completely insufferable man-babies.

26
lemmy.world

Boomers have been noted in studies to display worse cognitive decline at their age than any prior generation and it shows.

Its almost universally a generation that absolutely refuses to learn or adapt to the changes the world has experienced since Reagan, to the point of violence.

The only difference between this guy and other boomers is he's at least someone up to date with modern technology. Most boomers don't even know how to use smart phones or self checkout. You know... technology they've only had ALMOST 2 FUCKING DECADES TO BECOME ACCUSTOMED TO.

12
blargh513reply
sh.itjust.works

I'm not defending boomers in any way, but I see the same thing with younger people; that is the allergic reaction to learning about technology. I work in technology, so that's is my sole perspective. I would wager that plenty of young people are allergic to learning about ANYTHING, I just see the tech part.

I don't expect people outside of my vocation to be experts, but I can't imagine wanting to be utterly confused by the world at large--the world in which technology is literally everywhere. What would one's life be like if you had no clue how any of it worked? You just live in some sort of magical world where digital pixies do everything for you? You're not at all curious how it works? What about when it goes wrong? You just stand there and softly weep in a puddle of your own piss until someone rescues you?

I feel this way about cars too. I don't expect everyone to be a mechanic, but people will drive around with THE most horrible sounds coming out of their car and they're like "yeah, it started doing that a while back". Zero interest in perhaps having someone look at it or concern that it may turn into a bigger or more expensive problem in the future? A problem that they will have to pay for personally?

The entire life approach of being absolutely rigid to change or new information is such a puzzle to me. Life is hard enough, and these people just want to make it harder all because they're scared that they may have to put a little brainpower into learning something on their own?

7
sp3ctr4lreply
lemmy.dbzer0.com

The difference is the young people got their minds obliterated by convenience through apps from a young age... and everyone saying that this would be the new permanent sustainable future, so doing anything the hardway is just stupid.

They were presented with all this, the content on demand, the simplified UIs... things that mostly 'just worked'.

They also grew up in a time where there is no reward for perservering through difficulty and confusion. The economy, to a job seeker, is a random casino, or nepotism, that's it.

So to them... any kind of delayed benefit is more pointless.

They're not 'making it harder for themselves'... curiosity is a thing that has to be nurtured, encouraged, rewarded... and everything about their lives did the opposite, punished it, mocked it.

Thats not a switch you can just flip. They don't know how to contemplate.


Another important other part of this is the Boomers rigged society to work for them and fuck everyone else, and lied about doing that... and the Millenials, Zoomers and now Alphas all grew up to now in that world.

Homeowner average age is just the Boomer's average age. Political figures get older and older, anomalously.

And... nobody teaches anybody anything any more. The Boomers stopped passing down useful life advice, and that has now compounded into the incredible irresponsibility of Millenial parents just handing their 6 month old an Ipad, to do the parenting for them.

Of course the broadly shit economic conditions for Millenials are a huge part of why that happens...

But you can't pass down skills and habits you don't have, because they were never passed to you.

I am a millenial. Taught myself how to cook, taught myself car maintenance, taught myself socializing and romance advice/strategies, taught myself personal finance habits... my parents either didn't have time, mocked me for not already knowing, or actively had terrible advice that was either immoral, ineffective, or both.

And I think that is a very common Millenial experience.

My dad would tell me about the good times he had learning shit from his dad... and then just... didn't do that, with me.

Maybe I am a bad example, because I am so no contact with my parents they probably think I am dead.

But then again... more and more millenials are going no contact with their Boomer parents, because they've been treated similarly terribly.

9
blargh513reply
sh.itjust.works

You said a lot of shit, but I'm too drunk to read all of it effectively. I'm going to just go with the idea that you're a fine young person and here's to you. Fuggin, go get 'em sport.

4
Valmondreply
lemmy.dbzer0.com

Makes me remember the joke of the failure of the Soviet bordello, they just didn't understand why, they got the most experienced girls there were to find!

2
sp3ctr4lreply
lemmy.dbzer0.com

... is the joke that the women were too old, or too good at essentially fleecing their Johns?

2

He fails to mention that he has AI also generate and do all of those tests, which means, A) he has no quality supervision over his quality supervision. Speaking from experience, AI can and will break a test in order to pass it rather than fixing the code if it randomly decides to. It is not always reliable and does not have even the baseline of good sense you would expect a brand new junior dev to have. And B) he's probably spending 3 times as much on tokens used for generating and running tests than he is already using on code generation. That's only going to be sustainable while these tokens remain cheap, which won't be for much longer, my guy.

Also it is always fun when someone asks you basic questions about your code and you have to admit complete and total ignorance because you neither wrote nor read a single line of it. How are you going to sell confidence in your black box that even you haven't peeked inside?

46
lemmy.world

The D Language Foundation tried to incorporate LLMs in the unittests, and they created something akin to assert(5 + (funcToTest(846) * 0) == 5) early on, now they want to use it to rewrite the standard library from scratch, because "it has become better since".

24

The other day I had Claude write some code that failed a unit test. It was failing at a step that ran assertEquals(actualMap, expectedMap);. The reason it was failing was because one of the values in the map, a UUID, is automatically generated in the code. In the test, it has been hard coded.

Anyone with any sense would know you need to handle that misalignment. Omit that field from the match assertion? Set that UUID based on the generated value instead of hardcoding it? Anything like that would work just fine.

But Claud's solution was to change that assertion to assertTrue("The actualMap and expectedMap will never be equal because the values of ID will never match");. So the test always passes and it explicitly notes that they will not match. I would have fired a Junior Dev on the spot for writing that solution.

35
lemmy.today

If you do all that properly using an LLM is a waste of time.

22

That doesn't follow. What I think you mean is that by defining the constraints so rigorously, you've basically solved the problem yourself. But that's exactly the point. The LLM isn't the problem solver, it's the execution engine that does the wiring-up and the ticking of boxes. The easy part, arguably, sure. But still considerable effort that can be saved, and that effort may be better spent on the problem-solving + constraint-defining stage.

Mandatory disclaimer that this is not a pro-AI post. I also don't agree that this setup works, anyway. It's a classic Bob Martinism, the idea that writing good enough specifications makes the implementation irrelevant; it's the type of idea that is allergic to reality

6

It's crazy how >99% of his works have a vehicle crash in them, but he's primarily famous for his illogical leaps.

2
piefed.social

No. Everyone in tech that's not a mediocre tech bro has known Uncle Bob is an overrated quack for a long time.

52
programming.dev

Literally never heard or read of this dude. I don't spend any time on Xitter.

But good to know that he's actually serious.

7
lobutreply
lemmy.ca

He's very popular, written several books and spoken at many events. Most notably he's written Clean Code and the follow up I never bothered reading and he's a die hard advocate of TDD and also one of the authors of the Agile Manifesto. I met him a few times after his talks.

I generally "like" Uncle Bob or Robert C Martin insofar as he advocated for better software design and had some good ideas and all that. I personally hate TDD but when you talk to him and stuff, he's more flexible and nuanced than he can come across. The problem is when he comes up with (or runs into) a new "philosophy" he becomes evangelical about it and it seems like he doesn't have as much nuance. Sadly though, growing up with his fans in the software industry has been a pain because they'd hear something from him or Fowler or Beck or whoever and then try to reshape the codebase like typical Magpie Developers.

10

The agile manifesto, ugh. We've been through one like that every 5-10 years since forever (super programmers, team this, pair program that), and it's all about managerial control, no one trusts the developer.

Except in magic fairy land where "agility" is so productive etc.

3

I expected it to be a jest, but they look serious. It might even not be too bad of a language in other circumstances

3
lemmy.world

He wrote a good book decades ago and has slowly rotted his brain since.

4
Feydreply
programming.dev

The funny thing is that it wasn't even a good book.

7
piefed.blahaj.zone

I haven't read it in a while but I remember finding it very helpful. I think Martin is a guy who had a good idea and wrote a good book, and then everyone told him he was smart and right, and I think if that happens enough a person will start to believe it. Happens to a lot of people who "achieve success", whether or not success is merited. Then he kept on saying things he thought and assumed he was smart and right, and some people kept listening because they liked Clean Code, and agreeing because so many other people said he was smart and right, and it snowballed.

I think once you hit a certain level of intellectual celebrity you can sustain your own momentum without needing to understand or respond to criticism, and that's how people who become famous, like Bob Martin, can turn out the way they do. It happens gradually, and then one day you look at the guy and think "What happened? Was he always like this?" and the answer is yes and no: yes they always said what they think, and no, they weren't always trapped at the bottom of their own opinion gravity well, slowly becoming a caricature of themselves because their thoughts are no longer guided by the thoughts of their peers.

9
Feydreply
programming.dev

had a good idea and wrote a good book

I read the book after asking some junior engineers why they kept insisting on breaking straightforward tasks that could be a single pure function into a web of stateful method calls and learned they were being recommended it by another senior dev.

That book is one of the major contributors to the object oriented enterprise Java from the 90s that everyone universally loathes.

I personally think this discussion is probably the greatest thing he had contributed to software engineering, and not because it puts him in a positive light. https://github.com/johnousterhout/aposd-vs-clean-code/blob/main/README.md

8

Oh yeah that link does seem interesting. I'll check it out unless my executive dysfunction gets in the way.

1

Pure function = no side effects, no internal state. If you run a pure function twice with the same input, it will give the same output.

Example of pure function

(a,b) => a+b

Example of inpure function

let c;

(a, b) => {
   c++;
   return a+b;
} 
2

Oh yeah, the "functions should be short" thing. I think it's a truism in all fields that novices have to learn a rule before they learn how to recognize the nuances of the rule, and even the "does one thing" guide is hard to implement if you're in a strict rule-following culture, as many coding shops are, especially for juniors.

It is a big problem especially in enterprise code, where a failure to rule-follow can have severe consequences, and I think the way Martin addresses the problem of function length in Clean Code could stand to be improved upon. However, I think the nature of technical argument is to identify a problem (functions that bloat over time because people keep adding bits to it) and propose a solution (functions over X lines get scrutiny, functions with names like doXandY() get scrutiny, etc), and then the next step, as Ousterhout does in that interview, is to challenge and bring nuance to those proposals in the form of new solutions. The problem with Clean Code is not that the text is imperfect, but that the text was canonized as some kind of Coder's Bible for a long time, and that prevented a lot of people from seeing or ingesting the criticism of those imperfections, so the imperfections become conventions with inertia that have to be uprooted painstakingly.

Could that interview have happened a decade earlier? Yeah, I think it would have been helpful. Did such an interview happen earlier? I don't know; my impression is that Martin did little to encourage criticism of his work, and I think that is a professional failing, but I'm also not a close Bob Martin watcher and if he had tried, genuinely tried, I'm not sure I would have seen it. I think wildly successful books often take on a life of their own that authors only partially control, and I have a hard time faulting Martin exclusively for every failure of nuance that was magnified alongside the beneficial parts of the book. I think a lot of Martin's recommendations about how to analyze code for readability did more good than harm if for no other reason that they normalized discussions about how to evaluate the readability and maintainability of code and why it's important instead of just focusing on whether or not the code "works correctly" in the moment. I still teach people to monitor their "WTFs per minute" as a heuristic for code quality; I find it very helpful for junior devs to identify both bad code and their own misunderstandings. I think critically analyzing names is excellent advice for all coders. I'm flipping through my own copy and the first thing I underlined back when was "Professionals use their powers for good and write code that others can understand." I think that's very good advice for new coders.

Thanks for the link, by the way. I had never seen that before. I haven't read the whole thing yet but it's on the list. And I'm reading back through Clean Code for the first time in a long time.

2

I could maybe give him some leeway if the examples in the book itself showed responsible code, but they simply do not

5

I've got a co-worker that worships every word that falls out of Bob's mouth hole. Nice guy, but not a good developer.

3

Sure this is bad, but is it really "becoming even worse" after he already publicly declared support for Trump?

18
dismay3915reply
lemmy.world

I'm currently investing in "clean architecture". I think it's pretty good.

2

I enjoyed that book and it gave me a lot to think about. It changed some of how I do things.

But no way am I going to adopt hexagonal architecture wholesale everywhere all the time. It's pretty over-engineered for the kind of projects I do.

4
quokk.au

Say this stupid bullshit was true: you’re spending so much time baby minding the fucking thing that you’re not saving time?!? I don’t doubt that slop generators can code. But can they generate good code AND save you time? No.

16

Sadly, it's the time "saved" the majority are after. No Imposter Syndrome necessary; they know they're dogshit and everyone else does, too.

2
lemmy.world

Translates to:

"I created this (unit) test that tests code that does not exist yet..."

Alright AI bro keep your copium...

20
3abasreply
lemmy.world

Test driven development is not a new concept...

19
lemmy.world

Designing your unit tests before you've written your algorithm is - in my experience - a bit ass backwards.

13
vanillamareply
programming.dev

Agreed, you find the right shape for the code as you build and try stuff, adding the tests right after makes most sense, unless maybe you're just testing an API or something

2
Zannsoloreply
lemmy.world

I mean I'm theory for any planned method you would know the input and expected output before the coffee is written.

3

As I said, an interface can easily be tested, but if it's internal implementation I normally make a design, implement it, and I usually come up with other ideas and I like having the fluidity of making changes as I prototype and such, that way I'm not constrained by a test yet. After I'm done, and documented my choices if necessary, then I add the tests.

1
lemmy.zip

Except that then you'll shape your interfaces to drive tests nicely, instead of being, you know, sane and useful (been there, done that).

1
3abasreply
lemmy.world

Unit tested test for accuracy, if your code isn't "shaped to drive tests nicely", it's bad code.

They enforce requirements. You do start with code, you start with the "shape", you architect how your application should be developed and you write unit tests for the functions you already know you want but haven't written the logic to yet, the unit test validates the logic so you don't spend 2 hours hunting down a missing negative sign.

0

Uncle Bob has always been a hack whose advice made code less maintainable.

27
fedia.io

Has this guy ever even written any code? Can anyone name a piece of software he's worked on? Isn't he like a self-help author for programmers?

19
jonreply

He has a gitlab repo but the code is so absolutely piss-poor I can only assume he doesn't know the first thing about actual coding.

3

I had a discussion with my boss today about potential ways to write code with AI and have confidence in the results without reviewing every line. You'd also have to automate the reviews in some way, and therefore also a way to confirm that the reviewer AIs are working properly, etc. The conversation discouraged me because it made me feel like I'll end up being a manager of AIs who write the code and test cases, and I'll just be an ape who manually tests some of the behavior before approving it for release. This is essentially what managers have been doing with human development and QA engineers in the past, but even so, I have a really hard time letting go and not reviewing every line of code myself.

7

Every time I make 1 (one) mistake, I risk getting fired. AI does a lot more, yet gets to keep its position.

1
lemmy.world

A guy, who made programming worse, especially in enterprise settings.

25
pivot_rootreply
lemmy.world

People don't like tracing what something is doing across seven 12-line functions spread through multiple files?

18
Prunebuttreply
slrpnk.net

He'd probably say that 12 lines is waaaay too much!

8

Yeah, he'd break it into 12 methods that call each other one after the other instead

2
Noxyreply
pawb.social

What suggestion of his is related to that, just out of sheer curiosity?

3
cbazeroreply
programming.dev

He says a function should never be longer than 4 lines (in his Clean Code book).

4

Depends on which parts you look at. There is plenty that he wrote about that have made coding enjoyable, but yes, also plenty that is the opposite.

I never saw his book as a bible though. I always thought of it as a "here are possibly good ideas, see which you and your team likes".

12
lemmy.helios42.de

So in other words he spends weeks to write extra tests so that the agent can save him days of coding.

18

People don't want to hear it, but this should be more common practice especially for human written code, and it's best if someone specializes in doing this sort of QA testing specifically.

9

You should definitely read the code, but the strict acceptance for generated code is a good starting place.

18

Is this an "I am a very stable genius" confession for sloperators, or is there something I'm missing? 🤔

6
sh.itjust.works

I don't know what those first two sentences are doing. This kind of thing is exactly what mesmerized young me and puts wise me off.

One thing worse than appealing to authority is appealing to your own authority.

13
wakkoreply
lemmy.world

Sometimes 20 years of experience is really just 2 years of experience repeated 10 times.

Having time in the seat doesn't necessarily mean you've progressed your learning beyond a certain point.

37

Yes, that's true. I wouldn't say that that entirely fits Bob, but the point stands. He strikes me as having eventually stopped being capable of Beginner's Mind.

1
sh.itjust.works

Those two sentences just prove that the whole thing is made up. If he started coding in the 60s, he'd have to be over 80 now.

7
vanillamareply
programming.dev

It says there that he joined the industry when he was 17, which means after December 1969. So by late 60s he really means the 70s.

2

Maybe he was born in 1969 and started coding at 6 months old.

5

Those sentences prove nothing of the sort. And you really have no reason to get that arithmetic so wrong. And you could have looked it up instead of guessing. He has a Wikipedia page.

He was born in 1952.

There are good reasons not to follow him. No need to invent bad ones. That only hurts the credibility of people decrying him in public.

1
midwest.social

I choose to believe this is satire. Also that this man holds no significant position of prominence within the industry.

/cope

10

this man holds no significant position of prominence within the industry.

I wish that was true but I've had to specifically countermand his teachings at 2 different companies because newbies were being told to read his book

7
lemmy.zip

It just means he is not doing anything important, in other words he doesnt have any specific thing in mind and it doesn't matter if it works exactly right or not.

It looks like it's working and for some people that's enough.

6

He's not writing anything professionally anyway. His whole job is to tell other people how to work (badly)

3
programming.dev

Why am I not surprised that he is a big proponent of AI coding considering his background ...

5

Renowned snake oil salesman peddling more snake oil. Pretty on-brand.

2
mander.xyz

In my experience, agents tend to write functions significantly longer than 12 lines. Where's your clean code Bob?

8
lemmy.world

Does he think a single AI model, perhaps in the same instance, will start to get better when put through "hard testing" in his "gauntlet"?

5

No, he means that any code that gets through all of the tests works as expected and doesn’t break anything. That’s the whole point of unit tests and regression tests and all the others.

1
fedinsfw.app

We recently had an example of this. See Bun vs Zig. Even if your LLM doesn't have meaningless tests and assertions, those will not have 100% coverage on any non-trivial code base.

6
dismay3915reply
lemmy.world

I've heard some stuff about bun and zig. Can you point me to what's the deal?

1

Actually great. Boss with the LLM-shares is satisfied, because he met the quota. Customers are satisfied, because the code at least works.
It might still not be efficient or maintainable, even have some in the tests unaccounted-for (because they're ridiculous) errors. But aside from that...

7

One thing I do love about the LLM era is that people get forced to be way more pendantic when it comes to code, and that's a win for everyone.

... Well admist the enormous losses LLM brings

4
piefed.social

If it's his own products and no-one else needs to work that code I don't see a big problem with it, but the ways I've seen agents treat a code base just to pass tests is horrible.

2
lemmy.world

Bob writes books about software development and has a huge following of mediocre developers that graduated in to management. Unfortunately what Bob says and does affects way more than just Bob.

4

I see, I happen to be a mediocre developer that graduated into management but I never heard of him before. Lucky me!

1
Valmondreply
lemmy.dbzer0.com

Hey, don't be so quick to judge people!

Maybe he's just a moron.

2

What a wave of shit. At least the first lines, didn't continue reading.

Blocked.

1
e8d79reply
discuss.tchncs.de

In every single thread about people not liking AI you are there, being angry about people not liking AI. Whats the point? There are plenty of online communities for AI enjoyers like you. Try Hackernews they glaze AI all day long.

5
e8d79reply
discuss.tchncs.de

No, I don't think that's it. Judging from your response its more likely that you are being obtuse on purpose.

3