Writing software for 10+ years. Eschew hype; focus on performance.

Living in Switzerland 🇨🇭 since 2017.

Programming role models

(Note I pick a lot on Robert Martin but that's just cause he's one of the more prominent examples. There's plenty like him.)

(And if anybody wants to criticize me, that's fair. But I'm not a public speaker, and I certainly don't have the title of "well respected teacher" in the field of programming. Certainly don't have decades of experience. It's not my duty to be a good programmer, only my passion.)

What is a good role model?

Well, one that exemplifies a particular role, and thus is worth emulating, hopefully elevating your own career or craft as a programmer.

I do believe programming is a craft, in the sense that genuine care and passion can allow the skill to continuously improve. I don't say will allow it because the amount of counter-force in the industry towards genuine improvement on the skills side is immense.

I come from a web background, perhaps it is different in other industries, but from what I've spoken with programmers from other industries, it seems it is the same for them.

Programmers don't take their craft very seriously, on the average.

The average programmer hasn't put much thought into whether Clean Code(tm) is actually a good book or not. How do I know? It's still among the primary recommendations for new programmers.

If they gave it thought, they never gave it much counter- thought.

For those unaware, here is a quote from Robert Martin, the writer of Clean Code(tm), where he is trying to convince you that Clojure is a good language.

But isn’t it slow?

No. Clojure is not slow. Oh, look, it’s not C. It’s not assembler. If nanoseconds are your concern than you probably don’t want Clojure in your innermost loops. You also probably don’t want Java, or C#. But 99.9% of the software we write nowadays has no need of nanosecond performance. I’ve built a real time, GUI based, animated space war game using Clojure. I could keep the frame rates up in the high 20s even with hundreds of objects on the screen. Clojure is not slow.

Source: https://blog.cleancoder.com/uncle-bob/2019/08/22/WhyClojure.html

I don't know why people take advice from somebody that believes a framerate that doesn't even reach 30 is even remotely acceptable for anything, much less something that isn't doing something computationally heavy. While at the same time trash talking the concept of writing for performance.

Granted that was in 2019, different hardware specs from today in 2025, but nonetheless 30 FPS...Minecraft, running as well on the JVM, could also do 30 FPS on my Intel Core 2 Duo from 2007 on 4GB of RAM, and that also had "hundreds of objects" on screen.

(Do note I have nothing against Clojure, in fact I respect its Benevolent Dictator For Life, Rich Hickey. One of the few programming philosophers that isn't just in his ivory tower. If you haven't watched his Simple Made Easy talk, it's worth a watch.)

Clean Code is among the primary book recommended to new programmers. How? Why? It could only be because most programmers haven't read it in earnest, or if they did they weren't good enough to realize the advice is on average bad advice.

The only advice in it that isn't bad is the kind of advice anybody could give you, like "name your variables well" or "don't write bad comments", although even that one he manages to get wrong by effectively communicating to the reader that "comments are a necessary evil". You can read more on that in his conversation with John Ousterhout.

There is other advice that he sells, and his peers seem to sell as well. Test-Driven Development. John Ousterhout did a very good argument against TDD in his conversation with Robert Martin.

Or layers upon layers of abstraction, in order to "make code more readable". This one all I have to say is: if you find Robert Martin's code readable, or the style he encourages, you don't actually like reading code, what you like is getting as far away from the code as possible. You don't want to know what the computer is going to do (actual code), you'd like to know how Robert Martin would've liked to express the concept that he would like the computer to maybe do, expressed in a very particular manner, but you can't be quite sure cause it's hard to find the actual code. (The discrepancy in how I express these two ends of the spectrum is on purpose.)

Let's briefly mention as well programming patterns. The Gang of Four book basically caused a cultural freeze in terms of creating new patterns. It got treated as a bible, the book to answer all questions. Despite the fact that a few of the patterns in it are simply not good patterns at all, and some of them aren't even really patterns. In addition, they prescribe a solution but they don't bother to properly describe the problem! You end up with a generation of programmers being told that the correct way to program is to try to peg a square into a circle. And this they do. You can read up more on that with the book Unresolved Forces by Richard Fabian.

...

There is another point making this harder, which is that in programming, as in many other fields, there is a culture of making programming look cool, but very few programmers actually sharing how they program.

This makes it very hard to actually be able to gauge a programmer's skill.

For example, I haven't been able to find a long form video of Robert Martin just trying to solve a problem. He has a lot of scripted programming sessions (his TDD ones are typical), and he has a lot of slides with befores and afters, but I wasn't able to find one where he just sits down and solves a problem. Therefore it's tough to tell if he ever does program. And if he does, how does he do it? How effective actually are his methodologies?

If I look at his most popular projects, one of them FitNesse, it has 150,000 lines of code. With ~2500 files. Impressive! Oh wait, he only wrote ~7000 lines of code according to Git, 4.6% of the whole.

The other one is his favorite Space War game. 9000 lines of code.

That's all we have on him publicly. 16,000 lines of code.

None of them programmed publicly and live, as far as I know.

...

There is another aspect to all this, which I think contributes to the problem: it is easy to get paid to be a programmer. Or it was in the last decade.

Therefore there is very little incentive to actually get good, unless the person is very passionate and tough as nails to continue to improve their still-poorly-defined craft. But many people got into programming for money, not passion.

...

OK so back to the topic of good role models.

Programmers sometimes have good role models. If you're very lucky, you got to work with a proper senior programmer that taught you the ropes and effectively made you a way-above-average programmer. But they are seldom public. Very few public figures are good role models for programming.

It seems that the reasons for that are:

  1. There are very few good programmers to begin with.
  2. The few good programmers are just not very vocal.

It takes a certain personality to be vocal. And it requires time, and effectively a "mission" to be vocal, if you're good and busy. And if you're a programmer, statistically you're probably less inclined to be vocal, social awkwardness and all.

Good programmers do exist, they're just rare and hard to come across in the wild.

I will share two that I am familiar with that do have code publicly available and they program live, at least from time to time.

...

The first one is Bill Hall, AKA gingerBill. Creator of the Odin programming language. It claims to bring back the Joy of Programming, and I'm actually inclined to agree.

The Odin repo has so much activity GitHub isn't even willing to give me the stats.

The stats are: 650,000 lines of code. 1867 files. gingerBill committed ~28,000 of those himself. 4.3% of the (much larger!) whole.

Looks like the code to files ratio in this repo is a higher signal-to-noise ratio than in Martin's repo as well, with less files but 4 times the code.

That's just Odin, a major product written in Odin, JangaFX, itself probably hundreds of thousands or millions of lines of code, was also written in some significant portion by gingerBill. How much though, is private, of course.

gingerBill does have a YouTube channel where he programs live, or uploads VODs, or other videos. He has uploaded dozens of hours of himself programming live to YouTube. More than you can say for Robert Martin. And gingerBill isn't even an educator by trade.

...

The next one does consider himself an educator. And has been quoted by many programmers, as the reason they are good programmers today. Speaking of none other than Casey Muratori.

His Handmade Hero video livestreams are basically one of a kind. One of, if not the, first of its kind. A programmer just livestreaming himself programming, solving complex problems from the ground up.

Handmade Hero at the end has ~42,000 lines of code and 638 livestreams (each a couple hours long).

Casey continues to post public lectures on the subject of programming.

gingerBill is one of the programmers that quotes Casey Muratori, and this series, as the reason he is a good programmer.

I won't claim I'm a good programmer per my own standards, but I will claim that thanks to Casey I am a better programmer. That much is clear.

...

A point worth noting is that both gingerBill and Casey programmed this recently. Robert Martin has no recent public code to his name worth mentioning. Not sure if he has coded any significant amount in the last few decades. The fact that his craft and his opinions haven't changed in decades tells me he probably hasn't.

...

That's a long ass post. But I don't think there's enough words dedicated to the subject of how poor the programmer education is.

Out of the Software Crisis by Baldur Bjarnason is another take on this subject. I think it's a book worth reading. He approaches it more from the idea of "programmers aren't serious, and management is shit". I'm probably mischaracterizing his position a bit.