Live data from Hacker News

Three Tribes of Programming (2017)

josephg.com

21–30 of 123 posts

Re: Three Tribes of Programming (2017)

#21
post #3

> You are a maker. You build things for people to use I am a maker. I build things for people to use and maintain . This puts me at endless odds with the hackers. All three groups suffer from Novelty Seeking and Risk Taking (aka Adrenaline Junkies), but the hackers seem to get it the worst. My hatred of tools that fall apart the third time you use them goes back to childhood. I don't want to put my name on any of tha…

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 lot less shitty (and shitty+, shitty++, etc) software.

Re: Three Tribes of Programming (2017)

#22
What a delightful piece of writing! The three catagories really seem to fit. It explains the frequent arguments about electron vs native, new JavaScript libraries and battle tested C. Wonderful and insightful.

Re: Three Tribes of Programming (2017)

#23
I take issue with him blanket categorizing Rich Hickey and clojure (spelled closure by him none the less) in the first category along the same lines as haskell. These languages are quite different in almost all respects minus being functional. While the focus of clojure is on simplicity and expressiveness as the author does mention, it was fundamentally created to be a builders language and for getting stuff done fast with minimal complexity and headaches. I think it is actually a perfect mix between the first category and the third category, which is why I love it so much.

Re: Three Tribes of Programming (2017)

#24
Bah, I love Lisp (particularly Clojure), have used (and rather liked) Ada in the past, but I'm not sure I'd consider myself in the first group: "Applied Mathematics."

I fancy myself more of a maker (I like making useful software) who happens to dislike like Python and Javascript. And also Java. Because the lot of them are inelegant and I hate reading and writing them.

Re: Three Tribes of Programming (2017)

#25

I don’t buy this. I am a mathematician who makes things and uses math to understand how the code executes. Execution is not an implementation detail to me.

Instead of thinking of them in nice ways think of the by their pejoratives. Architecture Astronauts, Premature Optimizers and script kiddies. You personally are more of a premature optimizer than an Astronaut. Makes sense that there would be lots of mathematicians and physicists in the optimizers. I'm an Astronaut mostly myself.

Re: Three Tribes of Programming (2017)

#26
When you take all three to extremes you get problems, but when you take the third to an extreme you get problems which hurt other people.

Extreme mathematical programming is turning theorems into code; Metamath is an example of this, as is Coq. Nobody uses this code because it isn't meant to be used outside of a mathematical context.

http://us.metamath.org/index.html

Extreme hardware hackers are either designing missile guidance systems or mirrors which turn your face into a plot of its Fourier transform. If their code explodes, it's either doing so in accordance with a design document taller than you are or it isn't a problem because exploding mirrors are even more fun than the normal kind.

Extreme maker programmers, as the site says:

> Taken to the extreme, this world view doesn't value the beauty in the engineering itself.

Taken to the extreme, this group actively derides good design because good design takes time and Real Artists Ship. Real Artists Make Deadlines, too, and Real Deadlines Are Set By Marketing. You end up with janky crap that looks good but leaks your password to anyone who breathes on it, as sold by people who think being proactive with lawsuits is a good substitute for keeping your data secure. Security Through Suing Anyone Who Says It Isn't Secure, in other words.

Re: Three Tribes of Programming (2017)

#27
post #6
post #2

This is fantastic and surprisingly close to how I tended to explain computer science to students and graduates: In Computer Science, there are 3 kinds of problems: 1. The problems that Math gives you: algorithms, data structures. These are the problems you think you're going to solve and sometimes you do, but often we just need a few really smart programmers to solve this and the rest of us can just use those solutio…

Joel Spolsky talks in an interview about how his bookshelf shifted from 80% theoretical books to 60% psychology books over the course of his career.

Surely his production coding went from 100% to 0% at the same time?

Re: Three Tribes of Programming (2017)

#28
post #19
post #2

This is fantastic and surprisingly close to how I tended to explain computer science to students and graduates: In Computer Science, there are 3 kinds of problems: 1. The problems that Math gives you: algorithms, data structures. These are the problems you think you're going to solve and sometimes you do, but often we just need a few really smart programmers to solve this and the rest of us can just use those solutio…

Makers who don’t understand 1 or 2 often create slow or insecure code that often results in clear user impact. For example, I’ve seen diffing / recomputation code operating in O(n^3) or O(n^2) where O(n) or O(1) is possible and necessary for reasonable performance. I’ve also seen extremely poor use of network requests (multiple serial requests) that happen because the developer doesn’t understand network latency and…

In practice, a great engineer should be relatively well balanced in all 3 aspects and know when to favour one over another (such as the time sensitive case where performance in the code execution is more important than writing something that the next engineer can easily understand).

Re: Three Tribes of Programming (2017)

#30
I feel like I can relate to all of the tribes' value systems, depending on various things, one being time... time of day, time spent on a project, time in my life.

I've come to view many supposed divisions between people this way. There aren't homeless and successful people, so much as there are people that are homeless right now, or people making lots of money right now. People can certainly swing between both. Nothing is forever.

I find this perspective helps me to appreciate more my present situation in life, as well that of others.

Getting back on track, we should find value in the diverse perspectives in programming and find things to learn from them. One of my pet peeves is the programmer who does not have a learning mindset. That toxic behavior transcends the divisions laid out in the article, and is to everyone's detriment.

Post reply on HN