Comment by einpoklum
9 months ago
My experience is that being fastidious about code formatting is independent of one's ability as a developer. i.e. not a good indicator either way.
9 months ago
My experience is that being fastidious about code formatting is independent of one's ability as a developer. i.e. not a good indicator either way.
I’ve noticed the worse someone is in a language, the worse they format it.
People then develop fastidious code formatting rules because they realize well formatted code is easier to read and extend.
Then people realize it’s the organization of the code, not the rules themselves. They have preferences, but don’t treat those preferences as “the one true way”.
So people with fastidious rules are in that middle ground of becoming less bad, and that’s a wide swath of abilities.
> Then people realize it’s the organization of the code, not the rules themselves. They have preferences, but don’t treat those preferences as “the one true way”.
Yup, I agree with this
It's not about, let's say, where your curly braces stay, but being consistent
Though in some cases I'd argue that things like a very strict 80 character limit actually results in worse code (or at least worse to read code)
Disagree. Highly disagree.
Smarter people write shittier code.
Clean code is for stupider people.
Think about it. It’s because smart people don’t need clean code. It’s so trivial to them and so readable that they really don’t need things to be ultra clean and well formatted.
So the tendency to have this ocd need to write clean code among smart people is random. They either have it or they don’t give a shit.
But among stupid people it’s not random. They need clean code because they are not smart enough to understand code that isn’t clean.
That's definitionally untrue.
Shitty code doesn't run or doesn't do what the author thinks it's supposed to do. You can't write genuinely shitty code and be smart.
I've seen smart people get caught in trying to write "clever" code. Abusing features of a language to make the code "look" smart. And I've never seen someone I've considered smart write completely unformatted code where it matters.
I may not agree with all of their choices, but the smartest people I've worked with tend to have the structure of the code reflect the structure of the problem as they see it in their head. And yes, that tracks, you begin to use the code itself as an assistant to your own thinking. You don't think about where things are because they are where they should be.
Forcing yourself to remember a bunch of pointless minutiae in order to write software isn't a mark of intelligence, it's a mark of someone who wants to be seen as intelligent.
11 replies →
When you're writing it you have the help of the compiler and various other tools, plus you have the model of what the code is doing fully-formed in your head, and you have the recent memory of various other approaches you took and how and why they failed. When you're reading it you have none of those things.
So, code is harder to read than it is to write.
So if you write code that uses your full intellect to write it out, you are therefore by definition too dumb to read it.
1 reply →
I've been trying for years to track down a quote I lost, and it sounds like something you might know, because I think it would have resonated with you.
It was from Charles Simonyi, talking about how as he got older, his prodigious ability to juggle large amounts of information in his head declined, and as a result, he started writing better code. Do you know it?
Also, I half agree with your point, but I see it happen in two different ways. When writing ad hoc code for research purposes, I see very gifted people write seemingly sloppy, to-the-point code because it's the quickest way to the result. I say seemingly sloppy because another programmer would see an intricate mechanism that in so many places is a hair's breadth from being wrong, and they would want to reorganize it to make it more obvious that the code is correct. The savant who wrote the code is like, it's already 100% obvious, how could any change make it more obvious than that?
In the software development context, I sometimes see very gifted people write incredibly complex code because they enjoy flexing their intellectual muscles and seeing the ornate towers they can create. But I also see average programmers and dumb programmers do the same thing, the only difference being that the gifted people can get away with more before it starts to hurt them. What's more, I see very good engineers, gifted but not as gifted, try to follow the example of a savant and end up accomplishing far less than they could if they cut themselves a break and wrote plain code without all the flourishes and ornaments. A gifted programmer usually gets tired of this and grows out of it, but some of them enjoy it so much they commit to fooling themselves and other people that it's the right way to write software.
> So the tendency to have this ocd need to write clean code among smart people is random
It is if they work entirely alone and their work doesn't depend at all on the success of others using their code. However, when it comes to big software projects, my experience is that it's not random: the smartest people do end up writing good code, unless they have ulterior motivations or a severe social blind spot.
1 reply →
Or maybe the smartest people understand that it is as important that less smart/experienced people than them can work with the code.
7 replies →
Reality is that you have to work with different levels of intelligence. Your stack must be understandable also for the "common" programmer. Otherwise goodluck finding people.
1 reply →
The best developer that I ever worked with, is "on the spectrum."
His code was really anal.
I have come to learn that there are no "rules," only heuristics.
I've inherited many sloppily formatted code bases that all contained mistakes which blended into the mess. Consistently styled code has the nice property that certain types of mistakes stand out immediately.
For example, there's a large chunk of code following an if statement, but it's indented the same as the body of the if. The dev overlooks the closing brace and puts the logic in the wrong place. Additionally, there is a nested if statement whose body is indented less than the surrounding code. It's hard to read, and error prone.
I can't imagine a "good" developer putting up with that, although I admit you don't have to be "fastidious" to prevent this type of thing.
I can't remember the last time I worked on a team without automatic linting enforced on check-in. Why would people choose to waste time arguing over that can be automated?