Live data from Hacker News

Three Tribes of Programming (2017)

josephg.com

81–90 of 123 posts

Re: Three Tribes of Programming (2017)

#81
This is the kind of piece I am happy to forget about as soon I stop reading it in the middle of the page, because its basically strong opinions on how pretty much everybody should see everything in CS and the whole industry in general.

I mean, "cool". You have ideas, but everybody has one, I have mine and I guess there will be someone with even multiple ideas on the matter. So we will not ever be able to agree, point.

So why bother?

Re: Three Tribes of Programming (2017)

#82
This post is nice, but...

Rich Hickey and Bret Victor here are squashed into overly simple (and/or wrong) categories whose descriptions go like "the best programs [...] formally prove correctness" and "beautiful code is more important than beautiful UI". Both have been very vocal against these points.

Jon Blow is definitely not (just) in category 2. "But one of the reasons his last game (The Witness) took so long to write was that he wrote his own engine instead of using something off the shelf [...]. I understand". He'll probably have a heart attack reading this deep, deep assumption that creating his own thing slowed down his unique game rather than enhanced it.

As someone who does OCaml (and who maintains ReasonReact), shoving it into the category of "poetry is more important than execution speed" and "code over UI" is exactly what we're going _against_. It sucks to emphasize pragmatism, compile & runtime and UI, only to be shoved back into the "poetry" category.

I get a weird feeling criticizing a blog post that mostly gets the right idea across but then goes e.g. "don't worry, we get that you're a poet and care more about that than real-world execution and we empathize with your different perspective" or "we get that you don't prioritize writing simple beautiful code". Like, I _do_ care and these folks _don't_ abide by what you're describing. There's gotta be a name for this.

Re: Three Tribes of Programming (2017)

#83
post #53
post #7

Good article, though Ada is misplaced there. It is more of a maker’s language. It just has a formal proving add on (SPARK) available to test correctness because of its use in mission critical software where correctness really really matters. People who love Haskell, lisp, etc. despise Ada.

> People who love Haskell, lisp, etc. despise Ada. Why?

Ada code is not very beautiful nor mathematically elegant. I think _despise_ is probably too strong but all the things people like about Haskell and Lisp are not in Ada.

I think the author probably thinks Ada's type system is more powerful than it actually is (or is just thinking of SPARK). Ada is basically just verbose C with a slightly nicer type system and better aliasing rules.

Re: Three Tribes of Programming (2017)

#84

This post is nice, but... Rich Hickey and Bret Victor here are squashed into overly simple (and/or wrong) categories whose descriptions go like "the best programs [...] formally prove correctness" and "beautiful code is more important than beautiful UI". Both have been very vocal against these points. Jon Blow is definitely not (just) in category 2. "But one of the reasons his last game (The Witness) took so long to…

Thanks. Author here. I mean, generally I agree - but, any generalization will always be a bit overly general and reductive. The point of this article wasn't to try and make a formal taxonomy; just express an intuition. If I were to revise this article now I think your point is what I'd change about it - I mean, all of us can embody all of these core motivations. (Although I'm not sure we can hold all of them at the same time easily, and I think they're in tension within us). I'm also sure Rich Hickey, Bret Victor and RMS are all more complicated in person than how they're perceived in public.

But extremes are useful to define a scale. In your work on ReasonReact, how much time do you spend thinking about the ergonomics of the users? It sounds like a fair bit of your time and mental cycles go into that. So it sounds like you sit somewhere between the extremes of those camps. I don't think I would have been able to say that sentence without defining overly steriotyped, extreme positions.

And there's lots of interesting thoughts that follow from that - like, what happens when those motivations come into conflict? Eg, users care about feature X, which is going to be really ugly to implement, but desired. What do you do?

Re: Three Tribes of Programming (2017)

#85
I'd consider myself almost entirely between the 2nd and 3rd "tribe", and I very much disagree with this:

In modern app development our computers are fast enough that this kind of thinking isn't really important any more.

Thinking it doesn't matter is how we end up with things like instant messaging clients using billions of bytes of memory and billions of CPU cycles to receive a dozen bytes of text and display it on the screen, and when every application on the system wants to consume like that, none of them can, and the result is unhappy users.

That said, from my experience it often turns out that the simplest code is also the most efficient and elegant as well as being likely to be correct, so from that perspective I'm essentially valuing all 3 tribes.

Re: Three Tribes of Programming (2017)

#86
For sufficiently complex and large programs like writing an operating system, writing a computer language... you need to be a poet and a hacker.

Makers are a dime a dozen. In the end everyone is "making" something so everyone is a "maker" in a sense. It's just the "makers" described in the article don't know how to hack or write a poem so they just concentrate on delivery time.

Re: Three Tribes of Programming (2017)

#87
post #45
post #21

Earlier quoted context omitted.

At the risk of just jumping on a single point: > I build things for people to use and maintain. Maintenance. Maintenance. Maintenance. That's the key. It is the lack of that mindset which is killing our home world. Ultimately, it's just expression of not having to pay for your externalities. It also kills software dev. If software devs were actually held to account for their legacy (software, hah), then we'd have a l…

In context of this, I've always been thinking that software engineers should be held way more liable -- like those of the physical engineering disciplines. In order to enforce good software engineering practice, there must be either incentives or disincentives (carrot or stick) that have clear consequences on the engineer himself/herself. Otherwise there is nothing stopping them from producing bad work. It may be uni…

The cost of bugs varies wildly. I do not want my FADEC to have the bugs my word processor has but I do want the word processor to have more features.

Re: Three Tribes of Programming (2017)

#88
post #81

This is the kind of piece I am happy to forget about as soon I stop reading it in the middle of the page, because its basically strong opinions on how pretty much everybody should see everything in CS and the whole industry in general. I mean, "cool". You have ideas, but everybody has one, I have mine and I guess there will be someone with even multiple ideas on the matter. So we will not ever be able to agree, point…

Except he's largely right. His tribes are real things, as real as the dichotomy between SQL admin and python programmer.

I know what you're talking about though... Lots of blog posts talk about their own ideas about the industry that are largely irrelevant. But if you touched all the technologies he has listed in his write up you'll see he's completely correct. He's not speculating about something. This is reality.

Re: Three Tribes of Programming (2017)

#89
post #69

I think this is a good article, but ironically I think all three tribes would actually describe themselves the same way many times (whereas this article implies they'd describe themselves, or what matters to them, differently). To use an example from the article, I think Jonathan Blow would absolutely argue that he wrote his own game engine because it was best for his user . Whether you agree with him or not, he is w…

Re: Jonathan Blow, I don't think it's a stretch to say different/better tools can have a profound effect on the industry and resulting games as a whole. As someone in games, quite a lot of software has had far-reaching impact that influenced games on a noteworthy level. Speedtree, Zbrush, and the substance package have basically defined modern AAA art assets. And while the major public engines have had a profound imp…

One of the most played games of all time, Counterstrike, started off as a mod.

Re: Three Tribes of Programming (2017)

#90

I'd consider myself almost entirely between the 2nd and 3rd "tribe", and I very much disagree with this: In modern app development our computers are fast enough that this kind of thinking isn't really important any more. Thinking it doesn't matter is how we end up with things like instant messaging clients using billions of bytes of memory and billions of CPU cycles to receive a dozen bytes of text and display it on…

You say you're between 2 and 3, but everything else you wrote in that comment puts you pretty squarely in #2.
Post reply on HN