I sometimes explain the concept of mental health days being the same as sick days.

“If you wake up sneezing your face off, don’t come to the office. If you wake up and you feel poorly in an equivalent way, don’t come into the office”

There are different kinds of “not feeling well”. If you need to run to the bathroom every five minutes, you will be both:

  1. not able to do a large percentage of the amount of work that you usually do and,
  2. unpleasant or unhealthy for your coworkers to be near.

In my opinion, either of the two is a valid reason to not work. (If your team is doing a “death march” or “crunch” then, uh, if you don’t quit because that is usually bullshit, then you might have to come in anyway)

Here is an anecdote which some people might find helpful:

“As a woman, if I wake up with really bad period cramps, I might call in sick. I wouldn’t nececcarily say what my problem was, just that I wasn’t feeling well and wouldn’t be working that day, that I might log on in the afternoon and work from home if I was feeling better.”

There’s no rule (at most modern software development workplaces) that you have to say what kind of sickness you have- whether you’re sneezing or have food poisoning or whatever. I once had a boss who called off in order to take his dog to the vet, which is very reasonable! Good teams have a focus on “are we getting it done” not on “were you in this building for all the same minutes as your boss”.

Sometimes you want to say why you’re out or ill in order to get sympathy or because you like being open with your coworkers, or if you’re feeling guilty about not working and want your coworkers to say “that sounds terrible, definitely stay home” as a form of emotional and professional validation.

It’s also okay to not do that. If your pet died and you need to take some time off to cope with logistics and emotions, you might not be in a good place to go into work that day, and you might not be emotionally ready to say what your problem is to your coworkers- you might prefer to say “I’m not feeling well and I have some things to take care of, I can’t come in today.”

As engineers, we have a lot of power and freedom and you can almost always get away with this. If you do it a lot, your manager might talk to you about whether you’re meeting your goals in general. If your manager is still learning how to manage, they might give you guff phrased as “you’re been out a lot” rather than phrased as “you haven’t been completing your work.” This inexperienced-manager methods-over-results approach is a problem which can be solved by switching workplaces or educating your manager (the former is usually much easier; if they wanted to know, they would do their own reading.)

If you have a chronic illness or you are a caretaker of a relative and you have ongoing problems which mean you’re missing a lot of work, you know more than I do about how to handle that. I believe the general advice is to talk to your manager and make sure they understand that you will be out sometimes but plan to get your work done regardless, and/or arrange a reduced amount of work where possible.

Software development as a profession is pleasantly results-focused (even though not being in the office often means you miss a lot of office politics.)

If you are working remotely but your team has expectations of synchronicity during certain working hours, always say (usually in slack or your equivalent team tool) when you will not be working during times that people would otherwise expect to be able to get ahold of you.

There are other team structures without out this problem. If you are on a fully asynchronous team (like most open source projects and highly-distributed remote companies), this problem will never come up.