• it/its

// the deer!
// plural deer therian θΔ, trans demigirl
// stray pet with a keyboard
// i'm 20 & account is 18+!
name-color: #ebe41e
// yeah



BlueSpaceCanary
@BlueSpaceCanary

Our profession loves to wrap itself in objectivity so this doesn't get talked about much, but a big thing that I think separates bad programmers from mediocre ones, mediocre ones from good ones, and good ones from great ones is basically their "taste" in code (and then their relationship with that taste).

Bad programmers just don't really have a sense of taste, ime, they just settle on whatever approach gets the code working first, usually because they don't have enough experience to have developed any unconscious coding style yet (pretty much anybody can be at least a mediocre programmer with practice).

Mediocre programmers have their own preferences/taste, but it's not good taste because it's sort of just an outgrowth of the bad programmers' "whichever approach got it working first": their preferences are just for whatever particular style choices they were taught, and aren't really their own yet. Usually this means their taste is pretty inflexible and just carries norms from one particular context into every other context, e.g. think "Java written in Python". Also, these programmers usually think that their preferences are actually just objective, correct rules of design because they haven't yet had the experience to see why different contexts have different styles.

Good programmers have good taste in code, and also realize that this is taste. They're the most likely to leave lots of code review comments along the lines of "IMO it's cleaner to do X instead of Y, but it's up to you so feel free to just mark this resolved if you disagree :)", I think, because they'll notice lots of decisions they don't agree with in bad & mediocre programmers' code but see it as mostly aesthetic preference and don't think it's reasonable to demand everyone adhere to their personal taste.

Great programmers have basically the same taste as good ones, but understand it more as a tool because with enough experience your intuitive preferences aren't just things you've accumulated randomly, a lot of them are probably informed preferences. Programming isn't that hard, but programming well is very hard, so being able to lean on intuition is a big plus. The key, I think, is to treat your taste as a way to flag potential problems. You don't immediately reject a piece of code because it seems "ugly", but you also don't immediately dismiss the feeling as aesthetic preference. Instead you stop and ask yourself why it's ugly, and spend some time figuring that out if need be. If after some thought it really does just seem to be an aesthetic judgment you move on, and if it turns out your intuition had picked up on something you write a review comment explaining what should be changed and why (or just change it if it's your own code, obviously). Telling the difference is a skill & it takes a lot of practice using that skill to develop it, which I think is probably why most good programmers never make the jump to great programmers.


You must log in to comment.

in reply to @BlueSpaceCanary's post:

A lot of this is going to be so dependent on being able to work in different code bases too to see the forking paths (What if we had done Y instead?). Where I am now I realized that if more people had worked on the thing I had worked on previously for even a few months, we probably would have saved ourselves a year+ of time on a project as it had really nailed done the notion of single-responsibility across the entire product which didn't happen where I jumped to.

i think it's a bit like writing in non-programming languages, right? a bad writer merely takes their thoughts and writes them on a paper (or worse, in a word processor). a mediocre writer understands some conventions of written language, but is too dogmatic in their use (e.g., needless verbosity in hopes of creating a "professional" or "sophisticated" tone).

a good writer knows what bad writing feels like and tries to avoid it. they know that strict adherence to conventions is more useful for bad writers, and it can limit your expressiveness. they prefer creating their own writing voice, and they understand that writing choices are personal and not easily "fixed" by someone else. but, perhaps they're a bit fast and loose with it?

a great writer knows that effectively communicating requires digging into the reader's brain. they understand that there are qualities that constitute a "good story," qualities that make readers feel like they had a good time. they're familiar with many little flourishes and figures of speech and have a feel for when it's tasteful to use one or when it'll enhance the reader's understanding. i guess, critically, they have a good writer's intuition for the literary elements that will complement the reader's intuition.

to them, there really are bad choices—and there is always a reason for that, even if it's fuzzy and deeply intertwined with culture. but writing is chiefly an artistic endeavor, right? we like all kinds of books written by different authors, even if each of them clearly has a different writing style. i guess: learn the rules like a pro, so you can break them like an artist

anyway, i'm sorry for rambling in your replies, i just thought this parallel was interesting as someone who reads and writes a lot, both in code and in english