Always Be Quitting
jmmv.dev
jmmv.dev
I stumble on one DevOps guy who wrote every bloody thing happening in the system. He likes doing it, but from the way people were asking questions in the common chatrooms, group emails, I knew nobody read them. He loves plain text, nicely formatted with the old-school Unix-styles et al. I had talks with him outside of work and found him fascinating; I asked him help with my hobby, home-lab tinkerings, etc.
By that time, I had already started internal blog groups and was encouraging people to write. And indeed, a lot of people came out to write about engineering, marketing, product, and it became a routine for people to show off what they can do, what they love, and what they are good at.
In one of my regular company-wide emailers, I dedicated a big piece to the DevOps guy, pointing to his work and the beauty of his documentations. People loved it, and they began reading it. He remained a friend. That mailer was the only way I could highlight people I encounter doing good work, to the whole team up to the CxOs.
By the time I left the company, I was responsible for many vital things in the company, but I could transition everything smoothly with the documents and credential details (thanks to 1Password).
In the last year or so, I have been thinking more about -- always be dying. I think the similar vein of Always be Quitting; I try to document, write out details, just in case I die and my family has to figure out the intricacies.
In all of my coworkers across all projects, I'm the only one who does this. I'm pretty sure nobody reads them either. I don't mind though, it has paid for itself countless of times already, since I always reference it.
Today our 40 person org has 1,337 knowledge base articles (as of yesterday, a coincidence, and we probably have a different number today).
It started with myself (CEO) creating all of the initial documentation.
3 months after my first employee joined, I started holding her accountable to creating and updating documentation.
It's not a one time thing.
You can't say, "your job is to do documentation" once.
It's consistently talking about it.
It's scoping in documentation updates and refreshes into bi-weekly sprints and quarterly goals.
Once she was onboard, we began to hold everyone else in our organization accountable too.
Again, it's never a one time thing to get anyone bought it.
It needs to be constantly discussed and scoped.
Today, all of the managers are bought in.
Instead of me explaining the importance of documentation, it's our org's managers embodying and instilling the culture of documentation into everyone new.
They understand the value of having their reports check the KB first.
They understand the value of being able to link someone to a KB instead of repeating themselves.
They understand the value of being able to work more async.
They understand the value of not being a bottleneck for someone else.
I stopped spending much time creating documentation about 6 months ago - and the number of documents just keeps increasing.
Today, I'll push documentation forward for new position / roles.
I'm working on delegating finance - and spent a bunch of time putting together documentation on how to handle the company's money.
- Expense policies
- Org software purchases
- Invoicing and payroll
- Phishing and security
- etc
Auto generated READMEs (and their handcrafted equivalents) are worse than useless. Not only are you wasting your time creating one (and giving yourself the sense of having accomplished something when you haven't) but the effect of a README creation is one-to-many, so consider that wasted time and then throw a multiplier on it. That's the cost of a dummy README. Don't create them, people.
It’s a mixed blessing. In that case, the people who peppered us with questions slowly learned to find answers themselves. On the flip side when people ask you questions you get a better idea of what’s going on elsewhere in the project.
Later though, when it turned out we had a bad batch of hard disks on our dev boxes, the setup docs went from pretty okay to complete.
My wife asked me to write out on a piece of paper all of our bank, investment and insurance account names, numbers and passwords just in case I died during my last business trip.
Like any backup plan, unless it’s regularly tested it should be presumed to not be working
https://www.macrumors.com/2021/06/08/ios-15-legacy-contacts/
I still probably need a technical executor for some of my encrypted stuff as that's a little more complex.
I'm reminded of how so much of what we know about history is because of the diaries and correspondence that happened to survive to the present day. There are surprising gaps in what we know about day-to-day life in the distant past because nobody bothered (or was able) to write it down.
People usually bias their writing towards what they consider to be important information. And they leave out what they consider obvious context.
So we have a lot more information about battles and kings, then about daily life.
People are less biased towards highfalutin in the ways they produce garbage.
Battles and kings and things that seem important when they are current, but aren't as interesting in a few hundred years as insight into daily life.
Can you give some advice around that? Was it one blog in general, one per team, per person? What tool did you use for it? What else do you think is notable about it?
The notable thing about the system was that people began to know their colleagues better, discover stuff together, and partner up to do interesting experiments.
Before that, I started by writing fortnightly newsletters to everyone in the company. It was just what happened in the last two weeks. I was just the messenger. I highlight designers, developers, DevOps, QA people, etc., with snippets of their exciting work. It became an instant hit.
I'm not particularly fond of managers/leads who do the talking for what their team or juniors did. So, I had to bring in that culture of every doer doing their talks or bringing them to the forefront. The only way to start that was to write to everyone who did what last week. Now, when I get in that junior developer to talk about what he did, his thinking behind it in the next meeting, people know and are prepared. Also, even if some managers/seniors continue to talk over their junior team, people already know who did the work.
I dig that saying. It’s a sad thing, but a good developer should make themselves obsolete by the end of their run. It’s our form of ethics.
1. People do not have the time (or think they do not have the time) to read documentation for more than 5min by default. They need to consciously allocated that time.
2. C-level types generally do not read details IMO, presumably because they think they won't understand it anyways. (thus, "executive summary")
3. Everyone who aspires to become C-level someday copies this behavior and ignores all but the "executive summary".
4. Otoh, C-level types are always in meetings. Thus, aspiring career folks will copy this behavior, too and only ever focus on something if they are in a meeting.
5. This culture of only ever sharing information synchronously is somewhat infectious and will spread throughout the company.
6. The behavior is also self-enforcing. If several people are in a meeting-only mode, you can only get them information by scheduling a meeting yourself. This will, step by step, bring you into meeting-only mode.
7. In the end-game the whole company slows down because information is spread only by the speed of meetings.
I also believe that many people, including developers, actually don't have very good reading comprehension skills. Obviously, this doesn't apply for most people who comment on forums such as Hacker News, but in general I believe that it's true.
Writing skills are even more depressing. Just laying out bullet points coherently puts somebody in the top quartile of white-collar workers.
I feel like a relatively intelligent person but I absolutely struggle with writing concise emails / docs that are well organized. It's an agonizing process and I feel my results are hit or miss with little inbetween.
To be fair, that's not my forte either as my writing tends to be sort-of meandering at times. Just recently I wrote a longer message to my PM and he told me "yo, bullet points please".
My method now is as follows:
1. Send the E-mail asking for whatever, and an expected time frame
2. If I don't get the requested reply or action in the time frame, gently ping with a chat message
3. If still nothing... Well, here we go: it's meeting time, regrettably
I also never fully understood this problem, but the other day, someone shared their screen and I saw, I kid you not, 5000+ unread emails. Granted, these were both private and work emails, but still.
I think when something like that happens (and I don't think it's an isolated case), we've completely lost the ability to deal with email in any sort of non-random way. There's a couple of questions I would ask myself there:
- Why am I being CC'd on so many things? (unfortunately, this can often be outside of one's control)
- Why don't I use automatic filtering and tagging?
- Why don't I unsubscribe from marketing emails?
- etc.
fwiw - As a lead engineer I tried to influence meeting formats as being "review only". The idea is to distribute ideas as wiki or markdown prior and review/comment prior to meeting. It failed spectacularly. I believe the demands of multi-tasking (meeetings, chat, meetings+chat+work at the same time) have caused a lot of people to not have the will power to sit and read. Reading is considered "not-productive" when you can just go to a call and ask the person to explain.
In short, its really hard to change bad habits.
That's part of why Amazon famously banned PowerPoint.
Been there, done that.
The popular answer was that projects change too fast and he doesn not have time to maintain docs.
However, I firmly believe it all boils down to internal competition, and a refusal to give away to team members the knowledge they had to build up with their work.
Knowledge is power, and not disclosing how things work and why they worked is the key attain and preserve value within the team. You are a big shot if the things you do are hard and no one else can pull them off, and you achieve that by not giving away the information that allows others to easily do what you do.
A much more common pattern (though still not that common) is the mentality that they’re focused on high impact work, and documentation isn’t it. Selfish, maybe, but not outright malicious.
An even more common scenario (that covers the vast majority of cases in my experience) is an internal culture that values shipping above all else, and makes engineers feel harried. Even if documentation would reduce busywork and improve productivity long term, management is too focused on the short term challenges to see it.
This is the problem I have clients will change their mind on core functionality from day to day with no understanding or consideration for how this constantly changing spec creates development hell.
I try talking to the client management but they also have no understanding of development. When I explain it to them and try to educate them they use their lack of understanding as an excuse to not try to understand.
Eventually they get the point but then just argue that its difficult to explain that to the customer and manage the customers expectations. I think yea no shit its difficult to explain to some one who doesn't understand but it is possible I just demonstrated that, now go do your job.
If they don't want to do their job they wont and no amount of polite talking to them will change their mind on that. If I eventually call them out on it, the hour I spent patiently explaining and reasoning with them is just ignored and I get called out for having a bad attitude.
At the end of the day the client management's only accountability is to the client so they just say yes to anything the client says, if that causes developer hell forever then thats the developers problem not theirs.
I sort of agree with this, but rather from the perspective that often the effort required to maintain documentation isn't in proportion to the payoff.
Naturally details differ among projects, but I find that the 20-80 rule applies to documentation, i.e. that 20% of the documentation provides 80% of the value. I find that focusing on stable architecture/properties of the system is a good approximation to the 'important' 20%.
If the system also has any especially tricky parts (e.g. a transaction coordinator) warrants documentation, but that also probably falls under the 'not subject to rapid change' 20%.
I'm assuming project internal documentation here. If you're documenting things for customers, then you'll want to document everything very thoroughly, but one would hope that people figure that out eventually when support tickets keep coming in...
EDIT: Clearer phrasing
Or maybe they're burnt out, just there for the paycheck, and want to go home (log off) ?
There's a whole spectrum of reasons.
As a programmer with ADHD, I'm actually the documenter more often than not: my memory is very volatile, and I don't want people to interrupt me, so I prevent it by giving them the information beforehand.
If so, I would be careful about coming to work thinking that many of my colleagues shouldn't have been hired. If that's actually the case, you're just in the wrong company and you should bail. Caveat: maybe you'll find your new colleagues lacking too, if you think that's widespread.
And if that's not the case, then you have to work with the colleagues that you have, regardless of how smart you think they are. And it's frustrating sometimes but only because you're thinking about the imaginary colleagues that you think you should have.
It's not uncommon to have utterly dysfunctional workplaces where the people are all very high in IQ (1), have premium academic credentials and stellar career trajectories. What matters, far more than raw intelligence, is people not behaving like assholes.
If people aren't reading and sharing beautifully prepared internal documentation, it's more likely to be about their perception of status about the author or lack of openness to new experience. A lot people are just incurious or are obsessed with their status. They tend to "punch downwards" and don't handle change well (or at all). This has little to do with IQ.
(1) We don't really know IQ do we? Unless it's measured we can only guess. When someone says that somebody has a high IQ, usually, it just means they perceive the person to be erudite or learned, acheivements, clothes, speech, vocabulary, appearance, credentials, titles-- all these things feed into that perception, but usually NEVER the score of a f-ing standard IQ test.
>have at best average IQ if not lower.
my reading of a lot is always more than 50%, which implies to me that more than half of the engineers at half of the companies have average IQ or lower - which seems unlikely.
on edit: unless of course we assume that development / engineering type careers attracted more people of average IQ or lower - but I think that will be a hard sell on HN.
If you spend on the clock.time coding, you can spend some of it reading.
Also most people simply cannot write good documentation especially for complex topics.
If you are an electrician you also label your terminals and add plans to avoid troubles for other electricians and your future self. People who don't do that are handymen, but not electricians.
Many developers are handymen, not engineers.
You can get any development project done without documentation; I don't think that's up for debate. The question is, can you make changes to this project, improve on it, explain it to another team during an acquisition or due diligence: 5+ years down the line? And if you can, will that new development timeline be accelerated if you had documentation and diagrams to work from?
What happens when a new CEO comes in, hires a new Engineering Manager, and 85% of the devs quit in protest? Will a new team be as effective as possible without that documentation?
In my experience the above scenarios are quite common in start-up and "scale-up" size companies. Where there are a lot of things in flux and nobody has a plan 5 years out. Then, lo and behold, it's 5 years later and everyone is stuck picking up the slack instead of developing new/improved products.
And you're right, it can be a case of misalignment of goals and vision; not everyone cares about the long term. But if your company isn't thinking of problems further out than 6 months then you might have a different problem to address...
It's about firm boundaries. I remember reading a story on r/TalesFromTechSupport where the OP put down his foot about an older lady not googling things before asking him simple tech-related questions. At first she was annoyed, but after learning to Google effectively before coming to him for harder question she learned a valuable skill and later thanked him for setting those boundaries.
Have a generic link in which they could find most of their answers. When they ask something that's in the docs, reply with a link. When they ask something that's not, add it to the docs, and reply the answer + "that was missing - I've just added it to the docs" to reinforce the fact that this time it was OK to ask and that they helped you improve the docs.
The more someone asks you things that were searchable, the more you delay the answer with the link. If you make it quicker to search than to ask, that'll encourage them to search.
If they still don't change the attitude, let your manager work. If that doesn't bring any other change - it may be time to move to another team/manager.
I'm working on https://www.sherdoc.co/ right now to help fix that issue.
I've had the good fortune of working with two groups of people who valued the idea of public documentation on an internal wiki. While some of the documentation was not rigorous in terms of requirements, functions, and detailed development, but it was enough to scope the issue. Each project had an operational section within the wiki which became the living maintenance plan for that part of our services. It was wonderful.
Upon selling my last company, the acquirer didn't get the concept of the Wiki and that everything was in there. Eventually one of my employees printed the wiki and created eight copies of a 4" thick binder and sent it to their office. Ten years later I'm told that their engineers love the binder and call it the "tome." My teammates and I chuckle about that, but at least it's being read.
Now I am older and wiser. My advice is don’t document. This is cultural problem that needs to be solved at much higher level. If leadership doesn’t care then nothing will change and you will get labeled as asshole. Just flow with culture and you will be much happier. Or find a new job.
You should get feedback on docs, even if just from yourself. They shouldn't be a drag to maintain. If you don't eat your own dogfood or use them to keep people hostage, they won't help others figure out their own responsibilities.
If you don't build a culture around docs, its mostly waste. Often nobody even finds them, have the access/introduction to make it meaningful, and they are not open ended or written for practical usage.
It's interesting to see someone come out and just give this advice, but there are a lot of teams where that really is the correct call. Well written documentation can be helpful, but your documentation is extremely unlikely to have much of an effect at all. It would be one thing if it was a lot of work for marginal improvement, but if there's ZERO impact, what's the point?
People will likely never know it exists, or read it once, get frustrated that the information is tough to parse, then give up, and go to a meeting. It's especially annoying, because in my role most of the information actually is in the docs. They want me to figure out what information is important, and just put that in the documentation. So they want me to create a greatest hits compilation remix of 5-10 other documents with just the important stuff... except you can't know what that is until you need it.
1) Your documentation might be long-winded and they want a guided tour or executive summary, or at least a 10,000 foot view from which to start
2) Maybe they don't know where to look for what they're looking for; if you've documented a bunch of functions but provided no curated guide for what code exists and where to look based on a use-case, it might never be found
It’s not enough to write the docs, you have to organize them too, in a Wiki, and keep organizing them. It only takes a few hours a month. You can do it when you’re blocked, or finish your tasks a little early on a day/week and it’s pointless to start something new because you’re leaving for the day in a half hour or the weekend in an hour and a half.
The on boarding docs and the latest initiatives go on the first page, but as new things are started the old ones need to be grouped by conceptual area and pushed down one level. When those areas get too big, push down again.
When I tried to describe my process to someone I realized I was essentially applying the B-tree algorithm to our wiki, with the slight modification that all out of date docs are footnotes on the newest. Eventually all of the dated documentation becomes leaf nodes where people don’t see them and mistake them for authoritative.
Your sentiment feels more like "dig a hole, it builds character!"
I like that I often only need to ask a question once, and that I can delegate answering questions to the docs (where I've published subsections for the rest of the team).
Moreover, as someone with a bachelor's degree in Cognitive Science & Computer Science, I know from the literature and experience that writing things down improves your memory.
If I'm doing it to save my time and expand my memory, then it doesn't matter who else might read it.
I only ask because, first and foremost, documentation is for you.
The quality of life on teams like that can make slightly lower pays even worth while, so always consider that your current experience isn't necessarily what all horizons look like.
Though sometimes frank conversation can build your team up better.
I love learning by reading, but most people just want to sit in a classroom and be spoonfed like you say.
I think it's also company culture, and most companies have a "let's meet and present slides" mentality. So as long as there is no meeting, there probably is no need for you to know.
To build on this, it's more than just being spoon-fed, it's being told exactly what to do, step by step.
I think this may have several causes, but one I can see is being afraid to take responsibility. "I've just followed the procedure! It's not my fault if it didn't work / brought the site down!". And this comes down to the local company culture.
Presenting a nice documentation, which is more general, although more complete, means that the reader must actually understand what the doc says. Now, of course, they may have been trained by shoddy docs that it's oftentimes an arduous, uphill battle, so they have a knee-jerk reaction to it.
But they also have to take responsibility for their actions, which, in a culture of cover-your-ass above all else, is a tough sell.
And then you expect some junior dev to just understand everything without asking. A culture where people are afraid of asking questions is worse than having the best possible documentation on everything
No doubt.
However, my answer was to someone talking about people expecting to be spoon-fed in meetings, not just asking questions about some points they don't understand / can't find specifics for / etc.
The dynamic is very different. Asking questions is active. You read, try to understand, realize you don't. You then form a question and ask it. Contrast this with someone who just expects a laundry list of actions. "Just tell me what to do [step by step]".
My answer was also from experience in companies where even people with seniority and who had been there for quite a while will expect a checklist-like procedure to do things, and hardly attempt to actually understand their tools.
I get that the mental model of some tooling is not always self-evident, to say the least. But it's clear to me when someone tries to understand it and fails, and when someone doesn't even try. And I'm talking about tools they use day in, day out. They just learn to click that button and to expect that result. When something goes wrong, they have no idea what may have happened. I suspect this may also be somewhat related with the discussion on HN the other day about error codes [0], as in they get so used to cryptic, vague or downright wrong error messages that they just don't pay attention to them anymore – because 9 times out of 10 it's a waste of time.
[0] What the Fastly outage can teach us about writing error messages https://news.ycombinator.com/item?id=27443519
Yes, true, but a culture of asking too easy or even dumb questions that the docs clearly cover is also worse than having the best possible documentation on everything.
One company I worked for got it right, IMO, and it stuck with me. My mentor told me the first day: “You must spend at least five minutes trying to answer your own question by reading the docs before you ask someone else. And you must go ask someone if it takes you more than ten minutes to find the answer. Do not ask someone without having tried to find the answer yourself, and do not get stuck on something alone.”
I often draw a parrallel with code, where once the unit tests pass, let's ship. Dear colleague, would you mind just editing yourself for your future reader or maintainer or future self. You're not that good that your first draft is enough. Edit until it's fairly understandable. Remove the hacks, reorder the text, remove all the TBD/TBC/TODO...
You need buy-in from your team lead/line manager and a critical number of team members that actually want to make a cultural shift, but for some reason cannot. Your regular team retrospectives are the place to address this and come up with an action plan how to bake it into teams processes.
One of the possible solutions is to block time in the teams calendar for dedicated "learning". That could be regular "developer forums" or "reading clubs" or what ever.
If a document is required to be read before a meeting, schedule 10min in the beginning of the meeting where all collectively read the doc.
Your last one (reserving some time in the meeting to make sure everybody's aligned) is pretty smart though. If that step is skipped, you may end up with half an hour of repeating what is in the doc already.
1. Remain disciplined & use the docs yourself.
2. Bring your doc on screen in a real-time meeting about the topic & update it with the discussion.
3. Link to the doc in emails instead of replying inline.
That said… I’m researching the balance between wiki-style docs and “generated” docs like javadoc, OpenAPI, etc. I wonder if I’m writing too much in the wiki…
Interview them on parts of the system they know well. Capture what they're saying in a document. Draw diagrams together. Write the doc together, show them how you go through the process.
It will show you value their knowledge, and that writing things down means valuing your own knowledge.
Writing documentation is always difficult. It takes a lot of understanding to be able to write.
Often times I think people find themselves in a situation where they need to understand something - but they aren't doing so to write documentation - they're doing so because they have to.
So, if you envision achieving this understanding as climbing a mountain - then documentation is the extra hill at the top you don't want to cross. By the time you're done understanding, the last thing you really want to do is write documentation.
Additionally, documentation is sometimes thankless work.
Making a ticket for documentation kinda solves both of these. 1) You can write a bunch of bullet points and have it be very messy within a ticket, and then you can use those bullet points within the ticket to make the documentation. 2) A ticket is a way of recognizing that documentation requires time and effort, and in a ticket form you have to make time for it in your sprint.
Is this a red flag? Kinda. If you have to write tickets for documents it might mean your team isn't appreciating effort towards documentation, you might have to write tickets to make people write documentation, and you team isn't making time for documentation.
On the other hand, it's a great way to get major pieces of documentation done if you have huge holes in your documentation. For example, if you have a document you need to write that will take 4+ hours of work, it might be a good idea to put that into a ticket.
Does reading your documents really create value for others, or do you want them to validate and give your "more impact"?
You have to first make people curious about your ideas, or they will simply not care.
If i were in your shoes, I would ask feedback from my colleagues: am I communicating in a way that works for my teammates? Am I too verbose? Does my doc look intimidating? Are they not interested? What would interest them and could I get to the point faster? Maybe talk about your goals? Maybe your teammates or you manager are not bought in to the idea that people should relinquish their criticality. Maybe they like being like a little sovereign on their chunk of infrastructure, and don't like wasting time learning a system that they see as not theirs, in which case there's a goal alignment problem.
I'm saying this assuming that you can expect competent and helpful feedback. It may or may not be the case, it's up to you to assess. However you sound like you're already in blaming mode, and I would encourage you not to be. Maybe you're not communicating in a way that works for them. Maybe they need to be convinced that it's worth their time in the first place. If you determine that your colleagues are a lost cause because they do not have the interest or skill, don't waste your time trying to craft the perfect comms either.
Beyond documentation it also means paying super close attention to design. The best systems I've seen were designed with the utmost clarity of purpose, about what they were and what they weren't. It was clear what the important things were and how we were measuring towards these goals. From there, the design flows naturally and the code didn't need much documentation.
I've also seen piles of hacks that made up for their shoddy, misguided, over-engineered design by abundant documentation, which was necessarily hard to understand because the design sucked. There was just no salvation possible through eloquence. Crystal clear design is something that is a lot easier to communicate and share ownership of.
That is very important. You confuse something that is basic with something that is an accessory. Document how software works is essential, writing beautiful diagrams is not. Diagrams must be drawn, just like a teacher does on a blackboard, but they don't need to be perfect.
If you demand beautiful diagrams you require designers with art skills or spending too much time on diagrams software or learning the diagrams' domain specific language.
Either way, spending too much time drawing something could be very bad idea.
If something is important you should demand it on your team, but it is a good idea that you have documented those reasons too and for people on your team to contribute too. You will be surprised how easy is for people to accept them when there are real reasons behind and it is not about another tyrant imposing his will on them with whimsical arbitrariness of autocracy.
But you need to do work too, you must be open to the possibility that it is you who is mistaken, putting your ego (or someone else's ego) to the side. Usually there is very dominant people on the team that constantly fight for dominance, being them right or not.
But that's about how to push them. Have you asked them if the documents are hard to read? What are their length - are they overly long? Have you done any testing to see if they even open and struggle with the documentation before they call you?
I do include 'Summary' paragraphs at the top that provide a TL;DR for an entire 1-ish page doc. I think people will usually open the doc for a few seconds maybe and then brush it off because the general team culture is that all important information will be passed verbally anyways so no point reading now.
Actually I guess I would like to encourage the entire team to do a bit more of this practice of writing things down. For instance, tickets are usually just ~3 word titles with no context or specifics. It's only once the team meets and verbally describes what the tickets mean, that the work can actually be done. I've noticed this sort of culture at multiple companies now actually.
As for the tickets, is it a problem that work isn't don't on them before the meeting?
For some reason "I am meeting with X to address it" sounds better than "I am reading Y to address it." Not sure why. Just something I have noticed.
So in my case it is office politics.
Reading documentation/writing documentation is not considered quite as productive work.
Wait, what? I always found reading documentation to be one of the more productive uses of my time.
If they still push for a meeting after that, schedule it so far into the future that it becomes more painful for them to wait than to put effort into understanding the docs. Make this a pattern.
If that doesn't work, get Machiavellian. Schedule the meetings, but occasionally cancel those meetings (and only those meetings) on short-notice. Don't let meetings give them confidence that they will get an easy explanation by X date - make them price in a lack of reliability. Use the same strategy businesses use - make processes you want people to avoid using, unpleasant to deal with. Maybe make it clear that you see those meetings as uniquely low-priority, so the flakiness is bounded.
They're doing it because it's easy to offload the responsibility onto you. It's easier to have you spoon-feed them than to pull their pants up. So you have to make it difficult, so it becomes easier for them to pull their pants up.
Obviously, only use this strategy with co-workers, never with people above you. And if the docs don't answer the question, be extremely reliable and make it explicit in your response: "this isn't covered in the docs, so answering this is high-priority. The foo works by barring the snee..."
Almost everyone understands the value of DRY in code, but not everyone sees the value of it in day to day processes in the same light.
Error messages? Nope. Popup boxes? Nope. Documentation? Nope. Emails? Nope. Jira descriptions and reproduction steps? Nope. Example code? Nope.
One person out of a hundred will bother to read anything. Ninety nine will click through or hurriedly scan, and then steal your time to answer questions answered in the first sentence. Or to make you Google things for them.
This being said, I am one of those technical guy having to answer to a lot of (seemingly lazy) people, which is something that often drives me crazy. The trick I come up with is to show my genuine impatience, redirect new people to the ones I've already explained the same thing, and let them milk each other for information.
Tangentially related, if someone asks a question, refer them to the documentation - finding the right docs can be harder than reading them. Teach a man to fish etc.
It may be that your coworkers are so used to the piss-poor quality of average documentation that they don't bother-- even if yours is high quality. I can't blame them.
Most documentation I've seen is some combination of:
- Inaccurate
- Verbose
- Poorly organized
When I'm handed a 20 page document consisting mostly of lengthy paragraphs, I generally opt out and just go look at the code.I'm much more likely to read further if a document leads with:
- A single-sentence summary
- A 5(ish) bullet overview
- Prerequisite knowledge
It signals that I'm in for a better-than-average read.Incidentally, the Google course[0] or the equivalent is excellent.
The culture is simply set for other priorities.
Once documentation becomes longer than a page or two, most people's brains shut down and go into TL;DR mode.
No, you just make yourself disposable.
War is peace. Freedom is slavery. Ignorance is strength.
Don’t listen to this article. It sounds like something overseers would tell their underlings.
And when you’re quitting, that’s the company’s problem, not yours.
You might be making yourself disposable specifically in the context of your original role which you are basically making redundant by documenting and automating everything - but trust me any sensible business will want to keep a staff member who massively improved their team's productivity (by enabling them to be more independent with less silo'd knowledge) and reduced the business' risk exposure (by making potentially critical knowledge more accessible and reducing single points of failure).
Employees who try to become indesposable by turning themselves into a mega-silo of knowledge that nobody else in the org has might gain some job security in the short term but they lose out on any potential job progression.
Turning yourself into a silo like this is practically blackmailing your employer into keeping you. They might keep you employed because they need to keep their systems online, but they will also not think twice about replacing you as soon as an opportunity is presented. That is making yourself disposable.
Turning yourself into a leader who improves the outcomes of various teams in a business will not only make you indespensable, it's genuinely the best (if not the only realistic) path for an engineer to work their way up into more senior or C-suite positions.
Whether sensible or not a lot of companies do not do this.
It is difficult to measure productivity increases at the best of times. Increasing your teams productivity doubly so. Increasing their productivity may even be net negative for you as it makes them look more effective compared to you.
This may be counterproductive for the company in question and seem idiotic but that doesn't stop it from being common. It's common precisely because it's a template for how most workers are treated. If you see programmers as individual resources not markedly different to Uber drivers (and SO many do) this way of thinking is completely natural.
>Turning yourself into a silo like this is practically blackmailing your employer into keeping you. They might keep you employed because they need to keep their systems online, but they will also not think twice about replacing you as soon as an opportunity is presented.
Right. But how else do you deal with a company that demonstrates repeatedly that they wouldn't think twice about replacing you no matter what? Starting from that assumption along with the restriction that you cannot easily hop jobs - what else are you supposed to do?
Plenty of tech is egalitarian and productive and not like this, but a larger unfashionable un-talked about underbelly of the industry most certainly is. The bimodal salary distribution also comes attached to bimodal working conditions.
All employer / employee relationships have this dynamic. I get paid _n_ because my employer cannot figure out an effective way to do it cheaper, but as soon as they can I will no longer be paid _n_. While I think blackmail isn't an accurate description of this, what you're describing exists in all employment situations. Making yourself more disposable is only going to give the employer more power, which might work out better or worse depending on the employer.
Wrong, no employer relies on a newly hired employee the way they rely on a senior knowledge silo'd engineer with a decade+ of domain knowledge which they are reluctant to share. In most jobs the employee is not in a position to have that kind of bargaining leverage. That leverage is only gained by an employee either intentionally and maliciously making the codebase as esoteric and unmaintainable as possible, or poor management not planning for these risks sufficiently e.g. not hiring more staff for a legacy COBOL system team as it's members leave until there's only one guy left who understands it.
> While I think blackmail isn't an accurate description of this
I'd argue it is. You know their business depends on you as a result of you actively working to make it depend on you, you use that knowledge to leverage your position in bargaining for higher pay or to never get fired from a low-effort "cruiser" job. Essentially blackmailing the business into continuing your employment under threat of losses caused by you leaving and nobody else being able to maintain the mess you created. This is not a normal employer / employee relationship dynamic at all.
Be a winner.
prob because i just read about the 1%ers avoiding paying taxes, and a thousand other much-more-horrific things, only to see the top post on HN advocating for workers to make themselves even more dispensable that they/we already are -- and i don't think it was meant as a joke. :-D
i've always done the 'obsolete yourself' routine, and still do/am -- part of it was/is always self-interest (not advancement, but getting freed from having to do stupid shit), but part of it was/is 'just doing the right thing by the company' and thereby hopefully being part of a successful operation which, if you're not doing anything too evil, would allow me to take some pride in it.
but i know that many of my improvements to products/documentation/training/etc. only help offshore myself _and_ all my co-workers, especially those of us in the US and other expensive places (and we don't even get health insurance).
if i was part of some type of co-op, all that would be taken care of.
one can dream!
I was doing interview prep and my coworker gave notice. I told my boss the range I was interviewing for, and got a comp adjustment the next day. It was a 60% raise.
If I want a promotion, there are other companies.
Highly-paid professions have cookie-cutter skill-sets taught from the same textbooks at professional schools with the same basic curricula. They are valuable because those skills are valued, not because they trap their clients in some kind of infinite treatment plan.
I don't think it's necessarily irrational.
If you're self aware enough to know that you're on the wrong side of the programmer bell curve, you're counting down the days until retirement, if you're living in a market with relatively few tech jobs - this makes sense.
Make yourself indispensable through being the person running towards danger, being helpful to your colleagues, being knowledgable and treating people with respect but only write stuff down when asked lest someone think you're replaceable by a few confluence pages.
With all due respect, it's overdramatic and ridiculous to quote Orwell. Comparing a blog post about career advice to totalitarian state propaganda is absurd.
A smart manager would start finding someone to receive that knowledge and the smart employee would volunteer to learn. Giving raises to the person with the siloed information to incentivize them to work and share information with other employees is a relatively inexpensive cost to the alternative of spending a yearly salary on someone who’s main draw is being a walking notion/confluence page
Yeah, I agree, but I think you are also meant to prepare yourself for a new or higher role in the company.
Looking at the list of what you are supposed to be achieving, it looks like the itinerary of what a manager would want from their perfect employee.
Is this a fascist dog whistle? I keep seeing it and I don't know why anyone would believe these things unless they are fascist,
I went into 2 weeks notice mode. I started getting stuff done that I put off doing. I finished stuff that were on my list of to-dos for years. I was extremely productive. Felt amazing, and that feeling has continued on and I’ve continued to be more productive than I ever have. I got out of my rut.
Force yourself into the mindset that you only have 30 days left to get things done. It may work wonders for your productivity.
I mean I don't, and I won't see this product be finished unless we suddenly get a lot more people to work on, but still.
1. Document your knowledge? Well document the right knowledge, endless documents with all the pro's / cons of every choice noted will loose the signal in all the noise.
2. Document your long-term plans? In IT long terms plans means the next 3 - 6 months. Maybe document your thoughts on where something should go, but make it brief.
3. Document your meetings? Well document meetings outcomes / actions and only very important discussion points - no one will care in a couple of weeks
4. Bring others to meetings? Maybe, only if it really adds value (for context or for education) otherwise your burning valuable time
5. Train people around you? Agreed, at appropriate times
6. Identify and train your replacement? Not sure that is all that useful unless you're actually moving on.
7. Give power to the people? If what was meant was enabling broader inclusive decision making - agreed. But otherwise, fully autonomous operating modes need to earn that trust.
8. Do not make yourself the point of contact? Depends, if you're a manager or the decision maker, you need to be the point of contact.
9. Delegate? yes, to a point see 7
10. Always be learning? Yes, of course. But not at the expense of the greater goals (personal / project / company). Nothing worse than an engineer that has not delivered because 'they were learning / wanted to try a new framework.
The only one I flat out disagree with is your clarification on #6. I do think it is useful to find an "apprentice" or "successor" that can take your role on; this is useful for a few reasons: 1) it allows you to move on (either via promotion or leaving the company) and 2) it gives you a support system (want to take a vacation? now you can!)
Many times domain knowledge is just a person who has the answers somewhat fresh in memory so you don't have to go trudging. But writing those things down each time is both futile and redundant.
If you're doing something so niche like some kind of network analysis tool, then your colleagues should already have the rfcs as a very basic reference.
Otherwise, if someone is asking very practical questions like, how to add a cname or something, then rfcs are way too theoretical.
What do you want me to write down to help someone else do that? Read all the things, just in case!
Well, that didn't take more than a single line: "please remember to check relevant RFCs and man pages for additional information. This system depends on DNS for round robin load balancing (etc)" :)
You don't have to make a big effort of it. Paste the question and answers from the emails into a text file. Make it into a FAQ email to share or paste it into a comment block the next time you mess with that code.
People - document your meetings! It takes a few minutes. And it will save your ass down the line when some inevitable squabble arises over what people "agreed to work on" but there is no paper trail to settle the argument!
One would think that this ought to be automatic these days, since we've got speech-to-text that mostly works, and ubiquitous meeting recording, and yet...
When I attend meetings I take notes. I'm willing to share those notes with anyone who needs them. I look back at my notes to recall details or find key links and figures.
This makes me a significantly better engineer and subject matter expert.
Most of my knowledge is useless or irrelevant, so taking the time to document this knowledge is a waste of time. 90% of writing a document is understanding your audience and "document your knowledge" misses that point. Littering documents and code with various tidbits is also not very helpful and probably not worth anyone's time.
Documenting long term plans is also pretty useless. Realistically, anything past 30 days is not going to happen. Documenting your strategy and decision making process may be useful, but your idealistic plans? Probably not unless it's just a few bullet points.
The most important documentation is usually the "why?", which ideally should be written before the project starts. Documentation outside of the scope of in-flight projects (which 1 & 2 seem to be encouraging) are not as important as they can be discovered with a tiny bit of effort.
If you make yourself disposable you are far far more likely to be disposed of then promoted in 9 out of 10 companies.
I would even go as far and as cynical to say that if the documentation you create is so good you will just be replaced with by cheaper staff, outsourced or freelancers/contractors.
edit: honestly, the worst advice i have ever read on HN in like 10 years. you relationship with your employer is based on leverage, if you make yourself too disposable you are skewing the balance of power against yourself.
fwiw i am always a happy to provide basic docs and support to team members but i'm not going to document or automate myself out of a job. i've seen it happen too many times.
I have a very cynical perspective of workplace dynamics because I've been (and seen others) burnt too many times for taking the initiative or being (in my opinion) too naive in their relationship with management and HR.
edit: I think i was a bit too harsh my original comment. I think it is good to make yourself disposable (to yourself) but not to the company. If that makes sense. I have lots of documentation and cmd scripts for basic automation but I avoid sharing them on internal wikis or repos. I only share them with devs on request informally.
Harsh, I know, sorry, but....look at your comment. It could literally apply to every 'controversial' article ever posted on HN.
So it's not that I think the advice is bad, but rather that most individuals would fall into one of two buckets: either they would already intuitively be applying these ideas appropriately, or else they would be unqualified to actually do so.
It deeply undermines your leverage if they want to fire you also.
I want to be the one dictating when I move.
So I would spend effort to make myself worse off.
It is in the interests of the employee to have a more defensible position, even if it increases employer risk.
A few months later, he got offered a dream job offer, and the transition went smoothly.
Gotta say it just feels nice to be able to go through a couple of those smoothly. I think that actually relieved some latent stress I've been having all this time and made me more at east even at work. Feels good to know that I'm ready when the time comes, even if not now.
Which is maybe not a bad idea, say once or twice a year? Even a loyal and supportive manager has certainly run the numbers on life with or without you on the team, and will be told to do so again at some point.
We had an issue stemming from a convoluted setup where images were being copied to a web server every night, from a document server, something went wrong with the logic in the script and we ended up with missing and out dated images on a web site.
I suggested that we just allow the document server to serve the images over http. The response was "We thought about that but decided against it."
I then asked why? Who decided that?
Nobody knew. Had the meeting been documented, we'd hopefully be able to go back and see 'Dave recommended we not do that because of X and Y...'
You want documentation as a priority, then champion it to your leadership. Show them data that documentation saves cost in long run. But writing docs by yourself is not a good strategy for long term success of your career.
This brings me to my second point, I agree with author if you replace quitting job with dying.
What if a doctor tells you that you have two weeks to live. Will you go do all the things that you always dreamt about or would you be talking with lawyers to get your will and estate in order. Do you have enough life insurance? Are you saving for your family and kids?
If you have taken care of your affairs, now if doctor tells you that you got two weeks left, are you going to rush to work and finish your project or just quit? Are you going to spend next 2 weeks with your kids or go on a long hike? Or something else? Do you do any of that right now?
Yes I want to live my life as if I am always be dying.
You see: if you do this it’s true that you might be able to make everyone’s life easier and you may advance your career, but (you knew there was a but) you also lose most of the leverage that comes with specialization and having critical knowledge. Yes, it may be harder to switch what you’re working on inside the current workplace, but it also means that passing you on promotions and rewards can lead to a lot of pain if you decide to look outside.
As always, there is a soft spot between being the perfect engineer and 100% disposable because of your impeccable “work ethic” vs just being a nightmare to work with and people not having a choice at all.
But did he get his raise?
Your value does not disappear when there is redundancy within your company. If it is a valuable skill there will always be a demand for it outside, and now you can also claim that you are also capable of coaching others in that skill. If the skill is not valuable to the outside world and is a niche to your company, I’d say you still want to move on from that skill exactly because it is not transferable to other jobs. What if your company goes bankrupt?
So, you can help people grow and keep your skill polished while you build up job security and hoard critical knowledge. I’m not saying it’s the right thing to do - just saying that I’ve seen it done and it worked for the persons doing it.
sounds like author had someone quit and now he doesn't have the knowledge around the person leaving
People say they write everything down and their colleagues don't read it.
If you document everything I imagine a huge wiki (confluence) full of irrelevant docs for the task that I'm looking to solve right now.
Instead of spending an excruciating boring day sifting through it on the chance I find what I'm looking for, offcourse I ask for a quick intro.
It reminds me of https://mobile.twitter.com/ismonkeyuser/status/1290583571284...
I think the logical think between "grow into a higher-level role" and "being disposable" is very weak if any?
The company will pay big price to promote a highly-valued employee. The task which the employee was working on will be transferred to other member/team in the company, so the promoted employee could work on more important tasks. Some company allows/requires the promoted employee to also monitor the situation to ensure the transaction of task is done correctly during/after the promotion.
On the other hand, from a company's stand point, a quitting employee should never be a big concern even if someone intentionally make themselves "indispensable".
The points in the article that I agreed with:
- "Document your meetings", I always do and call it memo
- "Give power to the people"
- "Do not make yourself the point of contact", I explain what I was doing in the comments of my code
- Not sure why the author put this in, but "Always be learning"
The point of the article is that by increasing team productivity to reduce your own tasks, you now have the chance to learn new things and grow into new roles as opposed to being stuck with the same responsibilities.
It sounds counterintuitive but i see strong logic here -- by doing those 10 things you will definitely grow, perhaps into a high-level role.
My response to executives and managers with this attitude is that they ought to care about processes beyond delivering product for the same reason that a restaurant owner ought to care about processes beyond cooking meals.
It might sound good to have your chefs do literally nothing but cook all shift, but they also need time to wash dishes, sharpen tools, organize spice racks, track inventory, maintain work stations, mop floors, etc. Neglect these things long enough, and you increase the likelihood of accidents happening and decrease the quality of the meals produced.
This drives a lot of our practices. We assume that anybody could leave the team tomorrow, and that we need to onboard their replacement on the quick.
Building teams like this isn’t easy, but the outcomes and second-order effects are amazing.
Don't be a hero, don't work every day, build redundant systems where you can make an impact but can leave without blowing everything up.
Long README for project setup is code smell. Things should "just work" with obvious commands. Best code documentation is automated tests.
I think the most important documentation should be your issue tracker. User stories should have clear AC, all work should be captured in tickets and organized in Epics/tags. My big problem with agile is that the total amount of work done for a particular feature is not captured very well. This makes it hard to make strategic decisions. You might have multiple teams re-inventing the same wheel or facing similar problems.
I get no significant equity. I just get paid a salary.
As an employee, it’s in my best interest to be indispensable to my company’s operations.
If I have made myself replaceable, I have no leverage over salary negotiations.
Obviously, the argument I’m making here is taking this concept to an extreme. Nonetheless, I think it’s a good question to be asking: why should I do this if my company doesn’t care either way?
The only reason I can think of is that I don’t want to be the point of contact for everything and be bothered off-hours.
But in every other respect, I want my company to think “we couldn’t do it without them” every time my name comes up.
This and many more of his advice are very good for companies but suck for the individual.
I would say not to follow the authors advice because it will make no one reliant on you. It is also incredible time consuming and will only weaken your position.
This article is basically saying not to drive you car so much or else it won't be fresh for the next owner. This is corporate simping.
Turns out if you're not one of those people, at review time nobody values this behaviour.
It's only "what did you deliver".
So yes, it's important to train, document, and delegate. It's valuable. You should do it.
But if you still have yet to earn trust or a reputation, and you want to actually exceed expectations and be known as the type of performer that gets things done, you have to lean in a little more into delivery and a little less into all the instructions on this page.
Moreover, the occasional job interview I go to (because why not) taught me a lot and sometimes almost led to new and valuable collaborations.
> Seth Godin describes a Linchpin as somebody in an organization who is indispensable - who simply cannot be replaced because their role is just far too unique and valuable.
https://www.forbes.com/sites/mikemyatt/2011/11/29/seth-godin...
Also I like to think of this methodology as “what if I got amnesia tomorrow?” You need to get everything out of your head onto a shared knowledgebase.
This would be ideal, but whenever someone asks me a question there is a high probability that they just don't want to take the time to read and process the documentation.
Somehow they never are as required as they imagine themselves to be.
Everybody's replaceable. Capitalist corporations will replace you at the drop of a hat if they can. The only way to safeguard yourself is to be ready for it.