Q. Who are the great programmers, with inimitable or at least unmistakable and unique styles? Is there such a thing, as happens with music improvisers, composers, artists, writers?
I find that "great programming" is less about the style of the code itself. That part is craftsmanship, which beginners do poorly, but once you learn it, you've learned it. Expert coders may have differing styles, but it mostly just looks like "good style". Like how two expert carpenters might make slightly different style of chairs, and you can tell that both are made really well, but neither style is distinctive enough that it will blow you away.
No, true "artistry" in code I find comes less from style in code and more from architecture. Like, when you first learn about the unix pipeline, and realize how all these tiny programs are composable, and it blows your fucking mind? Or when you're faced with a huge codebase, framework or engine, and you start to explore how it works, and you realize how smartly designed everything is, and how easy it is to do stuff in it? (it doesn't happen often, but when it does, it's wonderful)
So, less emphasis "neat/readable organization symbols in a particular file" (though it's still important) and more emphasis "neatly organized abstractions enabling broad application"?
I often find folks who prefer langs like C, or at least have a lot of experience with it, are better at that than Ruby/JS/Python folks who haven't used much else.
IMHO every programer has a unique style to some extent, you just need to spend enough time looking at their code to start recognising those specific patterns. For some of my friends I can always guess that code is theirs by the way they name variables, how they structure the logic and other small details. So I guess you can just pick any elegant programming solution and try to replicate the logic on your own, and then compare it and see what they did differently.
A lot of people would disagree but I would nominate Arthur Whitney of k/q/j/apl fame; others on my list are Bill Spitzak of FLTK, Salvatore sanfillipo (antirez), Richard Stillman (who hasn’t written a lot of code recently, but did write the original Emacs, GCC and a lot more)
The analogy between music and programming holds at this stage. I can guarantee you all the musicians in this band [0] had their own distinctive style to some degree or another and would have even loved to have been paid to perform it but the fact is most professional musicians come in and have to be subservient to the style of the bandleader. And it's no different for coding.
Well, in jazz, you have your own individual style, people hire you because they like it. Sure, in different settings you adapt, but you still sound like yourself. It's the same with classical soloists. The ones that are famous, are famous because they don't sound like anyone else. Just a lot like themselves. Same with singers (rock, jazz, classical) - all well-known singers are very recognisable, and a lot of them have weird, unusual voices.
Also, I find it strange, this talking as if programming and music don't exist in the world outside a setting of just having to do what the leader wants. I guess particularly because I've been programming and playing music all my life, almost all of the time doing exactly what I wanted every second. (Only music professionally)
Following the same style guide as your coworkers isn't the same as writing code exactly the same way your coworkers do. I suggest following the style of a bandleader works in the same way. Individuals still have a voice - think of all the great players who made a name in various Big Band orchestras - but the style is still unmistakably that of the band and not exclusively the individual. Unless you're Melkor or something.
Sure, sure. We should differentiate the styles of the individual players, and the style of the group; two different things. I found it depressing, that suggestion earlier in the thread that one's style is always totally suppressed by the team you're on. Maybe I misunderstood; maybe that's stretching the analogy too far.
Although... when I was about 20 I went to see a fellow musician in their day job, programming in a company, finance/accounting-type stuff. It seemed so totally depressing I decided I never wanted to do programming professionally.
I guess there is the average, rank-and-file performer in the arts, like a 3rd violin in an orchestra, or player in a musical show, singer in a choir, (or my friend) where individuality is not required, just professionalism. That's like craft[0]. And then the music-as-art thing, like classical soloists, jazz groups, singers where the important thing is to sound like yourself (and to sound good!)
[0] I'm thinking craft in the sense Collingwood uses it in Principles of Art - craft (as opposed to art) is when you know beforehand exactly what final result you're aiming for and what steps to follow to get there.
I would look to the great applications that you use everyday. Open source applications are a great resource here. One of the reasons I like GitHub is I can peruse great software and learn how they work. The great programmers quickly come to the top when you study their work.
No, true "artistry" in code I find comes less from style in code and more from architecture. Like, when you first learn about the unix pipeline, and realize how all these tiny programs are composable, and it blows your fucking mind? Or when you're faced with a huge codebase, framework or engine, and you start to explore how it works, and you realize how smartly designed everything is, and how easy it is to do stuff in it? (it doesn't happen often, but when it does, it's wonderful)
That's what great programmers do.