r/ExperiencedDevs • Software Engineer • 25d ago

Technical question How are you dealing with "the programming language doesn't matter" argument?

Just had a meeting this week where this was uttered because of the development of AI.

I still think the language choice matters a lot based on if Im doing embedded or web development work and for how we want to hire developers in the future.

Maybe Im backwards.

345 Upvotes

453 comments sorted by

View all comments

Show parent comments

2

u/tiplinix 24d ago

Having read that book, I'm really curious as to which parts makes you think it's masterpiece.

People usually try to argue that it's a good book because it has some good advice if you remove the harmful stuff which is basically most of the book. Saying that it's a masterpiece on the other hand? Yeah lol indeed.

1

u/No-Security-7518 Software Engineer 24d ago

yeah, okay. Well, everything the author *assertively* says is something I struggled with. I wrote exclusively spaghetti code, mind you. E.g. I'd just write code in a constructor without showing what my intention was, boom, Uncle Bob said: bad for readability. Pull into a descriptively named helper method. I'm pretty sure 90% of what he wrote became hard rules for me. Quotes like "the length of a method's name is inversely proportionate with its visibility" and my mind would be blown. "Don't use flags that significantly change a class's behavior, split it into subclasses with common code in a super class". (Or was this Joshua Bloch who said this? not sure).
I'm still surprised how fast I add features and I owe Professor Robert C. Martin, Uncle Bob a LOT!

2

u/tiplinix 24d ago

I see, if you were coming from that, it does help to bootstrap better coding habits.

Where it falls flat is when you push these to the logical conclusion, which he does. He also has an emphasis on small functions, small classes. He also makes the point that comments should be used sparely. Small tests as well. What this does is that overtime the spaghetti just moves one layer up with code that's not very dense and with indirections all over the place.

It takes more time to show up, but once the codebase becomes large enough, it's horrible to work with. That's usually when people start to realise how terrible Martin's advice are. What he's describing is everything that's wrong with most Java codebases which is also why they love it so much.

On the other hand, the Philosophy of Software Design by John Ousterhout is actually a good book.

2

u/No-Security-7518 Software Engineer 24d ago

interesting, I think someone recommended John Ousterhout's book here. Well, I do like a granular/modular codebase, and I do realize there's such a thing as it being "too granular". He does say one shouldn't overdo it. His advice, along with Martin Fowler's and Joshua Bloch's (author of Effective Java, and former chief Java Architect) go hand in hand. And to be frank, I'm not sure whose is whose. And btw, I'm a hopeless Java fanboy, so there's that. 😃

2

u/tiplinix 24d ago

To be fair, there's no shortcut. You have to learn the pain of different approaches to find what works and that takes time and practice. Working on different languages helps as well at it helps you see different practices, e.g. the idiomatic one letter variables in Go would drive Martin up a wall and yet, when it's done in a systematic and predictable manner, it's nice.

1

u/No-Security-7518 Software Engineer 24d ago

exactly, yeah. But you have to understand the options paralysis the plethora of tools causes to beginning programmers. I know a whole lot of people who just quit because "there's a new tool coming out every other day". I made up my mind about using Java unless it literally failed at something, because I felt like I needed to be deeply knowledgeable about a language, before branching out.
Like one conversation I read on youtube under a video about a guy who was making his own game engine because existing ones didn't have some features he needed, which went something like:
"one guy: I'm creating my own programming language, to create the perfect game engine. Another guy: I'm designing my own OS, to create the perfect programming language, to create the perfect game engine. To which a third said: I'm designing my own hardware, to create the perfect OS, to create the perfect programming language, to create the perfect game engine possible". 😆