I wish some programmers would be more stubborn exploring a problem space. But being randomly obsessed about a detail can also be a distraction. Loosing track of time during an obsessed phase isn't always helpful. All this is also often a easy way to ignore responsibilities of life.
I suggest that all nerodivergent peers go on high alert if they encounter business people and wanna be hustlers that pretend to care.
Talking about neurodivengency as a general advantage (or disadvantage) brings no benefit and adds nothing but noise to the discussion.
Perhaps ironically, it's one of the many things that makes being an autistic person even harder. As if baseline expectations of you aren't already too much, you're now a hyper-profitable 400x engineer. But you can't be one of the weird ones or your social awkwardness gets you canned no matter how good an engineer you are.
E.g. if you have ADHD and it benefits you in those areas, you may no longer meet the diagnosis criteria IIRC?
My understanding is that while this may have been the case at one time, it is not now.
I believe that there are something like nine symptom clusters for ADHD, and a standard diagnostic measure is whether you have at least X of them at a moderate level, or Y of them at a severe level. Something along those lines, anyway. And the clusters include things like "time blindness", "task initiation", "task perseverance", etc.
(Again, this isn't based on any recent and specific knowledge, but amalgamated recollections of some things I've read on the subject over the past several years.)
> There is clear evidence that the symptoms interfere with, or reduce the quality of, social, academic, or occupational functioning.
That criteria is not optional.
(Someone please correct me if I’m wrong)
Edit: Same applies to Generalized Anxiety Disorder. Criterion F:
> The anxiety, worry, or physical symptoms cause clinically significant distress or impairment in social, occupational, or other important areas of functioning.
So if the disorder positively impacts all areas of your life, you can’t be diagnosed with the disorder. Which kind of makes sense.
My worst features as a software developer have always been byproducts of neurodivergence and that lack of awareness.
There are also good features and I know I'm useful to have around for system design and development. I just wouldn't say I'm better. I'm complimentary to others, not better. That's why we build systems as teams.
Perhaps it's true of all people though, and it's revealed much more so when your atypical traits go against the grain. I've wondered about this quite a bit over the years.
Speaking from my own neurodivergent experience: I tend to be a bit slower and get distracted easily, but when circumstances are optimal (silent office, clear expectations, etc) I can function on about the same level as my neurotypical peers.
While I don't 'blame' neurotypicals, I do recognize that most office environments are not that accessible for me and other neurodivergent people.
> If it were just me, cool stuff would definitely happen - randomly. And we would run out of money and fail.
I like to think there needs to be some distribution. Just like how there should be an adversarial process where the business people are only concerned about the money and the programmers are only concerned about the product [0]. You need code monkeys to build a product and make it something people want to use. But you need business monkeys to make it profitable and to get the money to build better stuff. If the code monkeys dominate then user interfaces suck, building takes forever, and is vastly outsold by products with worse features[1]. If the business monkeys dominate too much you just get enshitification because they only care about the product so far as people will buy it (even if they turn down future sales).Turtles all the way down. Even on just the code monkey side you need some of those people that swing for the fences and miss a lot to get those big leaps but most people should no be doing this and instead keep things marching forward. Both groups are useful, just in different ways. An adversarial process can also be useful here. But everyone also needs to recognize they're on the same team.
[0] more accurately: the business people optimize for the money, conditioned on the product; the engineers optimize the product, conditioned on the money.
[1] throughout history the products that are technically better frequently lose to inferior ones. Because success isn't purely reliant upon features
I literally cannot work in silence. The best place I ever worked was at one CCC congress where someone had set up a bunch of desks in the corner of one of the raves.
What even is the point of going in to the office if you're going to sit in silent ranks trying to increase shareholder value as much as possible without any breaks or distractions? Eugh.
Bonus: by the way "Trait 2" is written I know for sure that the author has never experienced real hyperfocus. True hyperfocus is something to be avoided at all costs. Writing code for 6 hours straight is a terrible experience and leaves you drained, physically uncomfortable and sometimes mildly injured if you were in a bad posture during that time.
That is different for many neurodivergent people, but not all. I know some who need silence. I myself need some noise floor, but something that is not distracting, like chatter than I cannot understand or make out, and without loudness spikes or recognizable names/topics/voices. For me, some kinds of music or soundscapes like waves on a beach or forest work best.
And generally, everyone who needs their personal noise in a quiet room can always use headphones. The opposite doesn't work, and the only available soundscape is "office noise" anyways.
Because man, consequences do not connect that way. When I hyperfocus for hours, the primary emotion is satisfaction. We fixate due to a malfunction in reward centers, which happens to override negative consequences for long enough that your stiff back is no longer correlated at all to the fact that you've sat motionless over a keyboard for hours.
Even raising the question of avoiding hyperfocus excludes you. Hyperfocus is generally not something that can be avoided or controlled. The chemical gradients hit a tipping point and you're committed whether you want to or not-- and without your awareness or consent.
You appear to be suffering from bad work ethic/balance, not ADHD. Because this is not in any way how an ADHD person experiences hyperfocus. It's not a choice or a consideration, it is an event that happens without your input or control.
What a strange thing to say
> When I hyperfocus for hours, the primary emotion is satisfaction
Lucky you. Are you in your 20s? I thought it was great when I was in my 20s.
> which happens to override negative consequences for long enough that your stiff back is no longer correlated at all to the fact that you've sat motionless over a keyboard for hours.
And your stiff back magically fixes itself the moment you stop concentrating?
> Even raising the question of avoiding hyperfocus excludes you. Hyperfocus is generally not something that can be avoided or controlled. The chemical gradients hit a tipping point and you're committed whether you want to or not-- and without your awareness or consent.
Avoiding it is easy, you simply prevent yourself ever having enough focus for it to hit, or have external stimuli that can cut through it. I have a bunch of alarms and reminders set up throughout the day that are generally enough to jerk me out of it and remind me that I need to breathe properly, sit up straight, drink water and attend to bodily functions.
> You appear to be suffering from bad work ethic/balance, not ADHD.
Thanks for the armchair diagnosis, maybe I should stop taking these pills the doctor gave me
No, that's spotting a problem. Like, come on.
The fact he did not even spot the actual problem is worrying. Did someone know that the button color was changed in the new version of the software?
That said, I have lived with manic depression for the better part of my career, and I find this incredibly insulting.
(1) Neurodivergence by definition involves broad difference. Its irresponsible to declare anything absolute and categorical about such a "divergent" population. Many of these divergences are bonafide pathologies that need attention. Even many non-"pathological" quirks, deserve the attention for the sake of healthy dynamics with others.
(2) Lot's of the behaviors promoted can cause people to fail dramatically. I have both lost my job and been kicked out of school for precisely the behaviors described. Obsession, rigidity, and impatience are recipes for disaster especially in combination.
(3) The absence of humility in the article is remarkable. I actively work on self-improvement and strive to remain unnoticed. I work to foster healthy dynamics with my coworkers and those I love. While I do appreciate accommodations, I do not expect the world to adapt to me, and I am always open to feedback for growth. I choose to remain hidden because of the attitudes expressed. I want people to associate me with others who are so boldly unapologetic about their shortcomings.
Yes recognizing strengths is important, but it's equally important to know when you're getting high on your own supply.
It turns out that trauma unresolved doesn’t just get better because you make yourself stronger, smarter, and less approachable. Instead you make yourself an island, keep pushing others away, and you become miserable. A red flag is the idea of being “better” than someone, even if you are! A covert narcissist might to themselves think they are a better engineer than their coworker but because they are so “self-aware” be kind and accommodating. This is a tricky spot because that line of thinking still maintains an idea of inherent superiority and it festers.. all this to say is I think our field has a lot of traumatized engineers and I think being on computers and in your head playing God can be a breeding ground for narcissism, especially the covert form. I even think this is encouraged directly in the field with the way engineers get treated as unimpeachable and as superhuman in some companies (easier to manipulate and less qualms about exploiting their fellow man). Of course you have really smart people that are genuinely empathetic and humble but I think this is a dying breed in the field. And with these people, they can be very unassuming and go unnoticed on online discourse because they are so humble and self-aware.
To discuss the "neurodiversity" of a population is to recognise the enormous range of different aptitudes and ways of being across that group. It's an inclusive way of thinking and matches reality as I see it.
To describe an individual as "neurodivergent" is to imply a "normal" group from which that individual "diverges". It usually also implies a second "divergent" group to which they belong.
It's related to the "condition-isation" we also get in language, where you don't simply think a particular way but "have something". I don't merely struggle to imagine visual imagery, I "have aphantasia". I don't merely get annoyed by small, repetitive noises, I "have misophonia".
As a child, I was diagnosed with Tourette's Syndrome. I mostly grew out of it in my twenties, but I still 'tic noticeably at times. Back then my 'tics were severe, sometimes extreme, and could be disruptive in lessons. (But no, while I did have vocal 'tics I did not "have coprolalia". Only around 10% of Tourette's "sufferers" swear compulsively, not that you'd think so based on the way it's portrayed in the media.)
To have a label attached to this "condition" helped in some ways: a particular teacher who was visibly annoyed by my vocalisations was more tolerant knowing I "had a condition" that caused them (although perhaps he himself should have been given dispensation as someone who "had misophonia"); drugs and therapy were tried, which didn't help but could have done.
However neither I nor my peers ever saw me as different to them, and these benefits could have accrued just as well without the label. Indeed, I've known plenty of people without the diagnosis who would have benefitted at least from a greater understanding that some of their behaviours are compulsive and difficult to manage.
Grouping symptoms into syndromes surely has some value in medical research, but a neurological syndrome like Tourette's or OCD or autism isn't like a hepatitis infection. The underlying mechanism isn't understood and the symptoms are things that are seen to a greater or lesser extent throughout the population. Drawing a sharp distinction between those who "have a condition" and those who "are normal" seems counterproductive.
The more "diverse" a population is, the less it makes sense to think of any individual within it as "divergent", and real-world human populations are incredibly neurodiverse.
I think this is largely streetlight effect (availability bias) rather than media bias. Of course other sorts of tics are less noticeable, and not readily thought of by laypeople as belonging in the same category.
But yes, I broadly agree with what you're saying here. (I feel much the same about gender identity issues, too.)
Are there people on the autism spectrum at leadership level? - Steve Jobs was considered to be one even though he was not formally diagnosed as one.
Are there people on ADD/ADHD spectrum at leadership levels - yes, I know of a few..
Are there people with sociopathic tendencies at leadership level - You can answer this one :)
> A former manager once described me as a “purist”.
Can we talk for a second about how useless this type of language is? When people repeat phrases like "don't let perfection be the enemy of 'good enough'" and such?The problem is they're used predominantly as thought terminating cliches. Perfection doesn't exist and frankly if someone thinks it does it really suggests they're very junior. The problem with those phrases is that they sidestep the needed conversation of "what is good enough" and instead implicitly state "what I think is good enough is the answer and what you think is unreasonable". It kills the needed conversation and just annoys the person you're saying it too.
Working in teams is all about communication and we often do a really poor job at it. Let's be honest, the soft skills matter. Just say something different like "why are those features needed?" or "what's wrong with the current implementation?" and follow up with "how critical are these issues?" You can always triage and come back. Maybe there's something you don't see and the "perfectionist" does because they're in the weeds. Maybe there's a disagreement on the specs. Maybe the "perfection" is useful but low priority given current conditions so you log up a feature request or make some note and move on, coming back later.
It's just a pet peeve of mine, as someone who's heard this a lot. Sometimes it is me, but more often than not it is the person not working on the thing that is missing the scope of the problem (almost always when a manager is nontechnical or disconnected). A simple conversation usually clears that all up and every party tends to move their position a bit.
I also see the other side quite a lot. People read tickets half assed, quickly write some code and move on. Their first thought is good enough. Which is usually not.
That mindset was born in the VC startup world. Of course it makes sense to shorten the time of burning money and bringing new features to beat the competition. But that doesn't makes it always justified. The tech world has more and more visible problems with security and quality. Good enough plays a part in it.
> I don't read that at all from it.
That's totally fair. I was contemplating that myself but the fact that they specifically mentioned their manager saying it combined with how the article focuses on being detail oriented (defending that behavior (something I agree with, but needs context)) I felt the inference was justified. But hard to tell without the OP coming in. > I also see the other side quite a lot.
This bugs me A TON. But it also feels like these are the ones using these clichés.From my personal experience, my first thought is always shit. I really internalize the non-existence of perfection. It is equivalent to "I'm always wrong." I find this helps because I no longer think "am I right or am I wrong" but "how wrong am I?". I tend to think this also makes me more agreeable, as I'm open to changing my mind (I'll often explicitly state what will do that). If you want to be "right" and you know you're always some amount of wrong, it becomes natural to do that and it is hard to have your ego hurt when someone points out an error in your logic. They likely just helped you find an unknown unknown :)
> That mindset was born in the VC startup world.
I think I see what you're saying. Are you referring to 'The Silicon Valley model': "run at a loss, corner the market, then raise prices with your (near or effective) monopoly power"? Setting aside that this feels like metric hacking the economy, I do agree that it incentivizes myopic thinking. "Move fast and break things" is a great strategy when working on tough problems and you're just starting. But it is also a terrible strategy when established. I mean... you just broke a bunch of things and the garbage is laying around all over the place, right? We need the addendum "then clean up, everybody do their share." If this is what you're talking about, I'm in full agreement.The myopia makes sense for startups, you shouldn't prioritize long term business strategies when you're worrying about your business existing next week. But the momentum of that strategy persisting in established businesses is definitely detrimental. I mean that's one of the biggest downfalls of monopolies. You can make shittier and shittier products because the fewer competitors you have the lower the bar is for "good enough."
I won't be surprised if we see these established players be disrupted. It's pretty hard to do so, but every day average people are getting fed up with the enshitification. It is entirely their battle to lose. I mean we're seeing a big uptick in linux users. As a long time daily driver, I do think linux has gotten better, but I still think the major factor is people just getting pissed at Microsoft. I mean if you're going to be constantly fighting your computer might as well do it on a system that actually lets you control it and doesn't randomly revert your settings, right?
Sometimes they're even right.
If you think we shouldn't push a quick & dirty fix for this issue that's affecting 20% of your users, because a good fix will take much more time, but also take care of an entire class of bugs that are otherwise likely to crop up...
That's letting perfect be the enemy of the good.
And there's no way to know, just from that scenario, which side is really correct. Maybe the bug will cost your company $1 million/hour until it's fixed. Maybe letting the quick & dirty fix go in means that you'll annoy users enough that you'll lose 10% of them permanently.
Perfect doesn't exist. There's no perfectly written code. If there were it wouldn't be perfect for long because the environment is constantly changing. After all, code rots.
I want to make that clear because it is why I said only a real novice gets roadblocked by perfection. They might have an idea of a perfect solution but anyone with any meaningful experience knows the real world is full of unknown unknowns. (Even with perfect information it's usually not traceable) What's the old joke? Theres two types of software: those with bugs and those nobody uses.
So given that, everything else is actually an argument of "what is good enough." Take perfection off the table, it isn't useful here [0]
In other words, we're looking for locally optimal solutions, not global. Because global likely doesn't exist[1]. My interpretation of what you said here is the same. We could write down all the (known) conditions of that problem and still not get a perfect solution that works every time. There are good practices, but those aren't bulletproof algorithms to success. They still require interpretation[2].
So the job of the engineer isn't to be a robot that follows instructions to the letter. It is the job you interpret, explore, and discover. It's to implement suboptimal solutions and iterate on them to find better suboptimal solutions. You have to balance short term and long term benefits, such as your hot patch scenario. There's always some trade being made. And that's why the thought terminating cliché is so detrimental, because it at best sidesteps the trade-off conversation and at worst creates willful ignorance of them.
[0] perfection is a good target to help align but it is also fundamentally unobtainable. We could say that same thing about utopias. But similarly the inverse (e.g. shit code/dystopia) is easily obtainable. This, I think, is a subtle difference in how we're using the term "perfection". I think you're using it as a guide rather than a literal objective that can be achieved in finite time. Do I have that right?
[1] real world problems are very high dimensional and we usually project them into lower dimensions to make solving more tractable.
[2] no rule can be so well written that there are no exceptions. (Including this rule)
... that "normal" people can't understand or use. That's how you get things like this story of Tom, told by ThePrimeagen[1].
The so called neurotypical people are people brain damaged from something, who slowly took over the society over the 20th century. Without dimensionality reduction, virtually everything they encounter is an overwhelming, highly dimemsional problem so they can't deal with anything, except for a narrow set of problems they specifically trained to deal with.
[1] https://academic.oup.com/mbe/article/42/9/msaf189/8245036