[1]: https://en.wikipedia.org/wiki/Seeing_Like_a_State
[2]: available free to read online: https://files.libcom.org/files/Seeing%20Like%20a%20State%20-...
The book traced a number of case studies supporting the notion that large enough systems of control require some degree of standardization to implement—for example, to tax stuff, you have to know how much stuff there is. Village life might tend to have advantages for human well-being, but that doesn’t mean you’ll get that result by sending out troops to force everybody out of their traditional structure and into village footprints.
If you’re tallying up a nation’s agricultural capacity, “Farmer John’s got a nice-sized patch that’s extra fertile but he’s lazy” doesn’t add as well as “corn, 5 acres, Grade B”.
In that way of thinking, complexity, nuance, or localized idiosyncrasies—where a lot of useful information lives, but outside of the standardized spec—essentially becomes invisible to the system. Even though it’s essential to the social phenomenon the system is setting out to regulate.
It’s illegible to the centralized governance mechanism, so it may as well not exist, as far as that mechanism is concerned. No National ID number? You’re not a person, go away.
Sean Goedecke recently wrote a blog [1] applying that idea to software companies, I imagine that’s where the resurgence is coming from in these parts :)
[0] https://files.libcom.org/files/Seeing%20Like%20a%20State%20-...
[1] https://www.seangoedecke.com/seeing-like-a-software-company/
Extending it to observations of natural or emergent phenomena seems like a reach for fanciness when "inscrutable," "unclear," "murky," or "poorly understood" would be more accurate to me.
Edit: Upon further review, I am coming around to it a bit, in the sense of performance reviews looking for the wrong thing, but I still think the larger point is about something more complex that poor evaluation metrics are just a symptom of rather than the cause.
I see where they are coming from but still have a hard time making the connection between the idea and the word.
A: Started coding when he was 6 years old, was making 3D games from scratch at 12, and sold his first software at 15. Never went to college, as he was right in time for the dotcom boom. The man just loves coding, and always works on his side projects in his spare time, mostly software he finds interesting. At work, he's the closest I've seen to a mythical 10x
B: Hadn't written a line code before he switched majors in college. Went from having zero experience with programming, to being a straight A computer science student, finishing one year faster. Best student prize at university for masters, and then a Ph.D in record time. Writes flawless code, is a top tier architect, and just a machine. Doesn't write a line of code when he comes home (at least according to him), basically severs himself from work as soon as he leaves work.
I’ve met these people before, they’re almost always undergrads from elite schools that could pick and succeed at anything they choose
The prestigious schools filter up-front based on merit, and filter a 2nd time based on the ability to keep up and remain diligent to pass the courses. Less famous schools only have the 2nd filter, and have more people drop in the process that could not keep up.
The quality of education can be very similar, or even favor small schools in some subjects based on luck and school staff interests. The vast majority of learning at this level is made by the student anyway; there is only so much a good teacher or expensive teaching resources can do to help.
I've talked with interviewers that seemed completely uninterested in what courses or major was taken, just the fact that someone got through a difficult major as a stamp of quality.
I'm truly curios what percentage of programmers do write code outside of work. I'd bet the actually percentage is pretty low, especially those who've been at it for five years or more. I don't know that I ever did, except when I first started.
Also, the older I’m getting the more I’m prioritizing activities that benefit my body. Working out more, home cooked meals (so learning to actually cook well instead of throwing things together and hoping for the best).
I miss the side projects sometimes. At least I still do AoC yearly.
I work hard to cultivate hobbies outside of programming, but inevitably, I find a way to improve that other hobby with software. I'm just wired like that I think. I love systems. Code is my love language. :)
I'm currently trying to digitize a hopelessly analog procedure to calibrate aircraft engine fuel injection systems. Rpi, transducers, and python to the rescue! :D
Very few candidates say they've done any programming outside of their jobs. At most, they share something like running Home Assistant on a Raspberry Pi and using Python to automate their house or something. Another common one is to hear about how they used an Arduino or Raspberry Pi to accomplish some small task.
Very few people say they have side projects. Of those who do, when I ask for details most admit it never went far beyond the idea phase.
So from what I can deduce, it's very uncommon for programmers to have true side projects that go beyond a couple git commits worth of code to solve some task, or an idea they had that they never followed up on.
I didn't stop coding in my free time because I stopped enjoying it, either, but because I could no longer sustain the fantasy that anyone was going to use any of the stuff I wanted to build. The level of motivation I feel for a project which is not going anywhere is not high enough to sustain me for more than a week or two.
Over time I've come to appreciate the difference between people who are described as the best programmers and people who are best at delivering results.
Some times they're one in the same. It's wonderful when you work with someone who is both an excellent programmer and excellent and delivering results in a team.
Many times I've worked with or even hired people who are brilliant developers and praised as being very smart, yet they didn't deliver results as well as the average developer on the team who diligently gets their work done.
Looking back, some of the most stereotypically brilliant developers I've worked with have also been among the more difficult to work with. Not all of them, but quite a few. The two that come to mind have been bouncing from company to company for a long time. They'll always have job offers and be able to pass interviews, but actually working with them and getting good results is a different story.
One of them even founded a startup with a co-founder, but unsurprisingly they broke up less than a year into it. On paper he should be the perfect fit to get launch a startup product, but working with him is a different matter.
The brilliant devs I know who are great at delivering results usually find their way into good positions and good companies early in their career and then stay there for a long time.
A man, on his hands and knees, searching diligently for something on the ground.
Another man, walking by, stops to help search. After a few moments he asks "what are we searching for?"
The first man replies "My contact lens"
After a minute or two the second man, frustrated, asks "Where did you lose it?"
The first man replies "Way over there, but the light is better under this streetlamp."
Coding interviews kinda feel like that to me. We can't measure what's important, so we'd better measure what we can measure extremely rigorously.
So keys and contacts are both modern revisions.
I ask about time complexity, and all the basics, but it's just a bunch of malarkey. So I spend more time quizzing them about technologies I don't know on their resume and getting something out of it for myself. It's easy enough to tell when someone's full of shit, but asking them to describe the tradeoffs between the technologies they've worked with seems more valuable than watching someone sweat-ily cramming out some crap imperative code for a toy problem and telling me they got it down to nlogn. Oooo ee!
It's not invisible though: those who work with these kinds of engineers easily see how valuable they are.
Passing some leetcode challenges is legible to employers, it puts applicants in the same buckets and measures them in (roughly) the same way. But it's not a good measure of actual talent. The real measures, as discussed in the article are out there but illegible to those employers.
I don't have the greatest work ethic, I waste time sometimes, forget things, am not too organized, etc. It's mostly the fact that 1) I do SWE as a hobby and 2) learn obsessively without BSing myself that gets me into jobs.
However my teammate at my last job. He probably didnt have the same level of intimate knowledge of systems as me. But his work ethic was just breathtaking. Mine simply wouldn't compare in a million years. Averaged over a large enough period, we both ended up doing the same amount of useful work.
Similarly there were others with different "approaches", just included the above 2 cases as an example.
Now. It wasn't the best experiment since we helped each other a lot. But I came away feeling it's true.
My hypothesis is that in less abstract work, the number of approaches is limited, and hiring practices in SWE have just been made the same as those jobs.
I don't really complain since I really can't think of a framework for hiring for abstract jobs that will yield better results than the current one. But who knows, maybe we'll find one.
FWIW, I think leetcode, just one round to bring down the applicant count to a number that's possible to interview {hard if there are too many, medium if there are few, or just Two Sum to weed out folks that can't write a for loop if you have just tens of applicants}, and then system design as the main interview, is a good system. For system design I would skip the common ones like "design a rate limiter/load balancer" stuff that people memorize. IMO it's easily possible to create unique system/API design questions that match the job somewhat.
Super nice guys, complete assholes, showmen, wallflowers - what they have in common is that they are great at making software
There are for sure personally types that are typical in certain traits, but we lose site of the fact that these do not tell you everything about who a person is
I likewise can give you stories of the best developers I’ve worked with - from Devry graduates, to high school dropouts, to HYPE wunderkinds - they come from all walks of life
There exists a quantitative method to correctly evaluate workers:
1. Collect each worker's work outputs and construct a training dataset.
2. Train an AI model with all work outputs combined.
3. For each worker, train a model with their respective work outputs deleted.
4. Construct a comprehensive evaluation benchmark over the full combined dataset.
5. For each worker, measure the change in the benchmark's performance with the worker's specific model relative to the full global model.
6. Fire the workers that lead to an unexpected improvement in the benchmark with their respective worker's model. This means that these workers were not contributing in a meaningful way to improving the performance over the benchmark. Keep the rest.
You can still do a very meaningful and satisfying career playing by your rule if you don’t care about striking your ego so much.
We can know who is good for our last situation, but it comes with bias and is very hard to measure. This is true even for jobs that are easier to measure like Sales or Support.
But the no presence... I've got a kid, a house, a mortgage. I've been in software since I was a teenager. Am I still fascinated by it? Sure. Will I still spend hours and hours of free time? Nop. It long since stopped being a hobby. Right now I like reading and listening to audio books, when I have a break from house chores and child rearing. I like to cook and experiment in the kitchen. The endorphin feedback cycle is so much faster (hours) than large scale software (weeks to years). I like to watch interesting shows on TV. Write. Coding-wise, I'm invisible outside the company I work at.
Not strictly a 9-5, but with a kid I do try to have quality family time, so I condense as much as possible to my working day, leaving time to be with my loved ones. If there's something important I'll participate. If there's a pagerduty alarm I'll jump. But otherwise, I'll deal with it tomorrow. I've long since learned to identify real emergencies from artificial urgency "because there's a milestone deadline!". Sure there is. Like the old saying goes "I love deadlines. I love the wooshing sound they make when they go by". Is it a customer commitment? No? Then I'll work on it Monday morning, right now I'm out.
I value people like that. Being a hero is a young-people game. You can't be a hero for years and years and not burn out. I've seen that happen. Working every weekend? Then something is wrong with the estimation. Or the design. Or whoever is in charge of priorities.
God helps me when I look for a job again. I guess I'll have to rely on references and hope to hell I'll pass the filtering software to actually get someone to look at my application. So far I've been lucky. Last time I actually sent CVs was at the beginning of my career, as a new grad, 20 years ago. Ever since then I was picked out, carried over, invited in by people who knew me. Really, really hoping that'll keep being the case.
hackthemack•2h ago
Today's hiring process feels like you have to go memorize algorithms instead of valuing things an employee actually has done in the past. And if the thing that was done in the past is something older, like Ruby on Rails, or an old PHP project it actually has a negative connotations in respect to hire-ability.
bartread•1h ago
What it isn’t any more is new or trendy. Still pretty widely used though, and with good reason.
fragmede•52m ago
dasil003•31m ago
As far as new apps go, yeah I think it's still pretty optimal for a huge swath of web apps, especially for early incubation when you have <20 engineers and you need to move quick. Not if you need web sockets, or other concurrency / performance critical applications though.
fgonzag•7m ago
fgonzag•9m ago
I don't know if I'd call that "mature".
NoMoreNicksLeft•1h ago
And in many of the places where I did not have an office, it wasn't because none were available. In most of the jobs I've worked, there have been multiple vacant offices going unused or becoming junk rooms where they stash old equipment to keep it out of the hallways.
Autonomy to solve problems... I don't know how many places I've been where it was tacitly supported for people to goof off for 20-30 hours a week, but god forbid you put effort into work that hadn't been directed from above.
And on and on and on.