It's one of the fundamental texts on societal organization from a few centuries ago. It's been a few decades since I finished school, so I may misremember but IIRC:
The author believes that mankind would naturally live in a brutal state of conflict (homo homini lupus est, men are wolves to each other).
But mankind can give up their self interest and give their authority to a government/sovereign (the titular leviathan, a giant monster made of multiple people) that can rule with absolute power and guarantee an environment in which we are all better.
I cannot for the life of me imagine how this ended up on the HN front page, but it's cool.
This was the case in Italy too until a few decades ago, except for some specific locations with a casino license, and a national kind of sport lottery.
Since sport betting became legal the issues with gambling addiction have skyrocketed but the state is addicted to the trickle of provents from it and can't cut it back.
There was an attempt to limit sport bets advertising, and that was widely sidestepped (you advertise for bet.news instead of bet.com, with the former linking to the latter)
But the argument for not having cash so that it does not encourage robberies is a real argument and it does indeed work.
ATMs have long had devices that stain cash if you try to steal from them. Bank cashiers used to have "we don't have the keys to the vault" signs. Vaults that open at fixed times beyond the control of the cashiers are a thing.
Regulation and enforcement are important but removing opportunity and motive are also important.
My sense is that there is a narrow slice of software developers who genuinely do flourish in a pair programming environment. These are people who actually work through their thoughts better with another person in the loop. They get super excited about it and make the common mistake of "if it works for me, it will work for everybody" and shout it from the hilltops.
Then there are the people who program best in a fugue state and the idea of having to constantly break that to transform their thoughts into words and human interaction is anathema.
I say this as someone who just woke up in the wee hours of the morning when nobody else is around so I can get some work done (:
I worked for five years at a shop where a few years in we started pair programming aggressively. One of our most experienced engineers was really into XP and agile work (in the “purer” meaning of the term). He often suggested pairing when thorny problems came up, and eventually it spread. It often took half or more of the available time for programming each day. That was by far the best working environment I’ve been in. The team was excellent and it seems like we all improved in our skills when we started doing it more. We cut down on how long it took to get in while managing to produce better code. It made planning features and adjusting to unforeseen snags in plans so much quicker. I can’t emphasize enough how much of an impact it made on me as a developer or how much I miss it.
The biggest downside to me was that it forces a level of engagement exceeding the most heads down solo work I’ve done. I’d come home and feel mentally exhausted in a way I didn’t usually.
I like pair programming for certain problems: things that are genuinely hard / pushing the boundaries of both participants knowledge and abilities. In those scenarios sometimes two minds can fill in each other's gaps much more efficiently than either can work alone.
I like pair programming. Not everytime or even everyday, but to shadow a junior a few hours a week, or to work with another senior on a complex/new subject? It's fine.
reply