It's even more important to stick to the site guidelines when you're right, because otherwise you discredit the truth and give people a reason to reject it, which harms all of us.
https://hn.algolia.com/?dateRange=all&page=0&prefix=true&sor...
2014 HN discussion: https://news.ycombinator.com/item?id=8374345
A choice quote from Carmack:
> The function that is least likely to cause a problem is one that doesn't exist, which is the benefit of inlining it. If a function is only called in a single place, the decision is fairly simple.
> In almost all cases, code duplication is a greater evil than whatever second order problems arise from functions being called in different circumstances, so I would rarely advocate duplicating code to avoid a function, but in a lot of cases you can still avoid the function by flagging an operation to be performed at the properly controlled time. For instance, having one check in the player think code for health <= 0 && !killed is almost certain to spawn less bugs than having KillPlayer() called in 20 different places.
Read the doom source code and you can see that he didn't mess around with trying to put everything into some nonsense function just because he has some part of a larger function that can be scoped and named.
The way he wrote programs even back then is very direct. You don't have to jump around into lots of different functions and files for no reason. There aren't many specialized data structures or overly clever syntax tricks to prove how smart he is.
There also aren't attempts to write overly general libraries with the idea that they will be reused 100 times in the future. Everything just does what it needs to do directly.
If you take a look at the doom source code you realize this isn't the cutting edge of mathematics, he is cranking out great software by avoiding all that and using high school algebra (literally and figuratively) instead.
While other people spin their wheels sweating over following snake oil bob's pamphlet Carmack is making programs that people want, source code that people want and work that stands the test of time.
If you would actually read through some of his work you would see that it a refreshingly simple way to do thing. No trying to hide that global data isn't global, no unnecessary indirection etc. etc.
> What you seem to be identifying as indications of unnecessary complexity of modern development practices might really just be accident of circumstance and the individual skill of the contributors at the time
I have no idea what this is supposed to mean.
> It is a mistake to look at the behaviors of the unusually talented few and see takeaways to apply more broadly.
This is the point you are trying to make but you just keep repeating it without backing it up in any way.
John Carmack used his skill to do things in a simple and direct way. Anyone can start to imitate that immediately. There is no invisible magic going on, he just doesn't subscribe to a bunch of snake oil nonsense that distracts people from writing the parts of their program that actually do things.
Do I really need to back up the claim that what applies to the rare talents doesn't automatically apply to everyone? That should be the default assumption unless proven otherwise.
You do actually, yes
This makes me think you are just ignoring what I'm actually saying. Read some of his source code like I mentioned multiple times and tell me this somehow only applies to John Carmack. There is no reason anyone couldn't program that way, but people have their head filled with nonsense and get distracted thinking they need unnecessary overhead. John Carmack's programs are incredibly simple and clear. Why would someone try to emulate this charlatan who doesn't make anything when they could mimic Carmack?
This isn't saying everyone can drive as fast as a race car driver, it's saying that you should at least go in the same direction if you want to get to the same place.
I've read the Quake 3 Arena source code before. I wasn't impressed. In fact, it was what I would consider "bad code". Granted, his constraints were different so I don't judge him or his code for it. It turns out you cannot generalize from very specific scenarios with unique constraints, as I have been saying. I really don't see what general principles you think you can glean from the source code written by one unusually capable man in a mad rush to be the first to deliver a revolutionary gaming experience. The fact that you think you can is rather puzzling.
> In fact, it was what I would consider "bad code".
lol, I don't think history agrees with you.
> The fact that you think you can is rather puzzling.
It shouldn't be puzzling since I gave you half a dozen examples of pitfalls that Carmack doesn't fall in to.
Let's reiterate: Carmack doesn't do any of the bob martin snake oil bullshit and he writes very simple, clear, direct programs that were used as foundations for multiple companies and reused over and over for decades after. He demonstrates what exceptional programming looks like through simplicity and ignoring nonsense silver bullets from charlatans.
You can keep saying how baffled and confused you are, but you haven't actually given any examples or anything concrete at all.
He's selling a product. He'll say what sounds convincing and he won't say things that are true but unpopular (or boring). I don't think it's deliberate but the end result is similar.
One point I do think is relevant though, is that smarter people and better programmers can cope with more complexity in one place. Carmack can probably cope with a lot more state/lines/whatever within a single function, whereas chunking everything up into a form digestible by 5-year-olds is sometimes necessary for your code to be approached by a junior. But the consequence of making dostoevsky digestible by children is that you either remove a significant amount of the content, or the book becomes hundreds of thousands of pages long. And it raises the obvious question, do you want your 747 designed by juniors?
I think the right answer depends on a number of other factors.
See what I did there?