
Ask HN: How to implement “office hours” as a software engineer? - elric
I suffer from frequent interrupts, and I&#x27;m finding it increasingly difficult to go back to being productive after an interrupt. Sometimes coworkers come to me with urgent problems, which is sort of OK, but often times they interrupt me for issues that could have been an email, or non urgent issues that could have been postponed.<p>I&#x27;m thinking about implementing &quot;office hours&quot; where I&#x27;d be open to interrupts. The rest of the day I&#x27;d like a &quot;no admittance except on ~~party~~ urgent business&quot; sign.<p>What are some tips to go about this, or maybe some pitfalls to avoid? Thanks.
======
inkeddeveloper
I have found that using a flag system works wonders. Luxafor makes a USB
powered light that I have attached to my station. Green means chat me up. Red
means leave me alone. I have it set to an interval of 25 minutes red to 5
minutes green. (Like pomodoro timer). Took some time to get people on board
but now its great and has expanded to not only my entire team, but other teams
in the org.

Note: not in any way involved with Luxafor. Was given their product by a
friend.

~~~
BossingAround
It's noteworthy that Luxafor supports Windows only. Mac is coming "soon", and
no mention of Linux. I'd expect a large portion of hackernews readers to be
Linux users.

~~~
Nextgrid
Could be a fun reverse-engineering project. I can't imagine there's that much
complexity in controlling a LED.

~~~
Brian_K_White
Sounds like a generic usb gpio and a couple lines of bash, maybe a cron job.
Nothing.

Maybe a few more lines of bash to do some sort of dynamic activity monitoring,
to detect a "coding" usage pattern vs a "checking email, browsing web" usage
pattern and adjust the availability automatically.

Still almost nothing.

------
cbanek
So, this happens everywhere I've been, but many times, the reasons and who
does it are different. Sometimes it helps to look at the classes of
interruptions:

1) Coworkers needing help with their thing (rubber duck, for example)

2) Coworkers needing help with your thing where you are the expert

3) Bosses asking questions about the future

etc.

Different strategies can be helpful for these things. For long term planning,
make a meeting. Say you'll think about all those things and have some great
ideas for the meeting. This takes you off the spot, and hopefully will start
some recurring thing where you get interrupted less.

Coworkers working on things is a bit harder, since you don't want them
blocked, but you don't want them interrupting your either. I've done a lot of
different things for this:

1) Is it something you can document that you are asked constantly by lots of
people? Document it!

2) Is it something you can't document or schedule? Sometimes before getting
started on something big, or before lunch, before scrum time, (when I am not
in deep work) I will proactively ask some of the people who are likely to need
me that day if they need me. Definitely ask and get a feeling at your standup
if you have one if you need to help people out.

3) Sometimes I've adjusted my hours, where I will work from home for a few
extra hours a day, where I'm harder to interrupt. Turns out if you're not in
your office, and it takes a little more effort to bother you, that people
might not, or they wait.

One of the tricky things to watch out for is when people come to you first
after having a problem, rather than trying to solve it on their own. Try to
not get in the habit of being the line of first defense. Teach them how to
fish.

------
kamerynn
Fighting for "heads down" time is a worthwhile endeavor. You will never be
able to have 100% heads down time, but even a 2-3 hour uninterrupted block in
the afternoon is a wonderful thing.

The problem I've had with trying to establish signals that I am heads down
(e.g. putting up a sign, headphones are on, hoodie is up, etc etc) is that I
will inevitably still get interrupted, and I will be angrier than usual when
it happens. An interruption can be small as folks popping their heads over
your cubicle wall to "see if you are busy". This drove me crazy, so I stopped
doing it.

Another thing I've tried with little to no success: blocking off times on your
calendar. People will figure it out and book over it.

Requesting days to work from home or a coffee shop (if possible with your job)
is a great option, and I've found that I am way less irritated at
interruptions when I regularly take days at home. People are way less likely
to pick up a phone and call you.

Another good option, if your office has the available space, is to take over a
small conference room every now and then. For this to work, you can't do it
every day. Otherwise, folks will start to treat it like an office, and knock
or peek through windows to see if you're busy.

But the best advice is to have honest and regular discussions with the
offenders. Try not to be angry about it, and try to understand their point of
view. If it works, the effect will wear off, and you'll have to remind them
every now and then, but I've found this to be the most effective strategy. I
usually ask people to Slack me, and promise them that I'll check Slack and
respond to them in at least 30 mins. Those incoming messages may break up your
heads down time, but you can at least silence them until you finish your
current code :)

Hope this helps!

------
kugelblitz
It's definitely a culture thing. I do freelance work so I've been part of 4-5
different companies in the past 2 years alone.

In one team with 8 team members at a midsize company consisting of mostly
junior devs and the CTO being a scrum/agile supporter, we would have
discussions constantly, and features development would be consensus-based and
tasks would be broken into tiny parts. One of the juniors had complained that
they have too many meetings and suggested a meeting to address this issue (oh,
the irony).

In another team, we're 5 people, all seniors with different skill sets. We do
some agile planning with a simple scrum board, but everyone trusts the others
to do their job. There have been days where I was in the office with 2 other
devs in the room and I spoke maybe 10 words (I mean that literally) in the
whole work day.

It could also be a symptom of "nice guy syndrome". I used to be that person.
People would not just ask me about project stuff, but maybe the printer is
broken. Or WiFi is slow. Or coffee machine needs cleaning. I couldn't do
project stuff anymore. With each passing project, I learn how to be less of
"that nice guy" towards more of a "that expert guy who will help if it helps
the team". And if it's a junior team and everyone keeps asking me tech stuff,
I will talk to the tech lead and ask whether or not it would be more sensible
to reduce the number of tickets assigned to me and use me more as a coach,
doing small workshops and doing pair programming.

~~~
maps7
> I couldn't do project stuff anymore

Did you have to move to a new company?

------
origamirobot
Sounds like you need a buffer. A person who's job it is to keep everyone away
from you while that person records what everyone needs and presents it to you
at specific times.

~~~
KoenDG
That, and proper internal documentation. And if that exists, encourage people
to use it.

Usually when a single person is swamped with questions by co-workers, this
will be because the information isn't properly documented in some sort of
internal repository.

Wouldn't be the first time I've heard it argued that this takes too much time
to implement.

I'd argue that it takes far less time than fielding all those questions
manually.

~~~
elric
That's actually a really good point. Internal documentation is severely
lacking. Encouraging people to submit more questions by mail/chat would
probably make it easier to build up an internal knowledge base (in the sense
that I can copy/paste those questions & answers as a starting point).

~~~
KoenDG
Kindof like a private stackoverflow... or something else...

I've tried Confluence but without strict adherence to a set of internal rules,
that can easily become a mess.

------
rjkennedy98
It has to be part of the company culture. All our engineers have company
scheduled "flow time". This is 5 hours that is blocked off on Tuesdays and
Thursdays. If someone wants to add the same on another day I'm sure people
would respect it as well.

~~~
fargle
This would be _awesome_!

------
digitalsushi
I can't trust people to do what I need, so I invert - if you can find me, you
can have me.

And then I pamper myself with work from home days and firewall the access,
either with tech or with good habits. Close the email, slack. Boss has a phone
number, bosses make good default routes to get to me.

I don't do the pamper thing a lot, because I want to be available. I budget
20% of my week for heads down, inaccessible. I prefer it in 4 or 8 hour chunks
because it can take me 2 hours to get into the zone. Once I'm there, I'm
getting the majority of my output done in a week.

On the weeks where I do 50% heads down or more, I find I start hurting myself.
I can do it for a few weeks, maybe a month or two, but if I run in the red
zone for an entire quarter, I took too much and now I'm going to have a bad
next quarter. I'm not a 10xer, I need to pace myself to get my 100% in and
have something left over to help everyone else out, too.

------
jason_slack
I have a reputation for telling co-workers to leave me alone. I've had co-
workers wave their hand in my face or come and tap me on the shoulder when I'm
wearing headphones or send me e-mails marked as urgent and a variety of other
ways to get my attention.

I'm nice, especially if I am new to the company.

I ask that if something isn't urgent that they send me an e-mail and I'll
review it later, often at home in the evening.

I also would be open to a chat during lunch time, but not over a meal. Come to
my cube and let's chat while we eat. I'm eating, you can choose not to do so.
Eating is the priority, this isn't a hands on show me the code and get my
keyboard all grease and food.

If something is urgent and it's my job, by all means come stick your hand in
my face.

If something is urgent and it's not my job and you think I can fix it, please
come stick your hand in my face but please don't do this often if it turns out
you just want any geek at the company.

During the day I don't answer e-mail except for first thing in the morning and
during the evening. I don't have notifications on.

Please don't stick a post-it note on my screen! I'm sure I have an inbox or a
mailbox someplace you can deposit things in.

All of this being said, I try to be flexible with everyone, over and over,
until I have to insist that I get my projects done. I like completing work
that makes everyone say "Wow". This means my full attention to details and
general awesomeness.

~~~
maps7
My personality leads me to feel extremely guilty if I behave this way. I'm not
saying you should feel guilty - your post makes complete sense.

------
thefantasma
Software engineering and building products is a social activity. Embrace it
and take pride in helping others. Its part of the role too.

I understand that to you, as an individual, it may seem detrimental and even a
waste of time but realize that overall it’s a positive thing for everyone.

Instead of having some engineer waste hours struggling to solve a problem,
just get them unstuck and go back to whatever you were doing.

My attitude is that when I’m in the office, it’s all office hours. I’m there
to collaborate. If I’m not in a meeting, then I’m available for questions.
With that said, it’s ok to say please wait or I’ll get back to you on that.

Please don’t take it the wrong way but I’ve always been bothered by engineers
who have this attitude. Very often these are the same engineers that can
somehow focus on writing code and watching Netflix on the side. A large
portion of what we do isn’t very complicated and it doesn’t really require
100% concentration (hence netflix on the side). IMO, this is just an excuse we
engineers use to pump our chest about how important our work is and to be
anti-social.

Some tips

\- make sure you have good documentation

\- create a slack room where team members can ask for help and encourage them
to use that instead of asking you directly. Other team members can pitch in
too

\- be proactive and get to know the engineers you work with. Ask them if they
need any help or if they are blocked by something

\- figure out the weakness of your team and hold internal trainings to fill in
the gaps

\- have some empathy for your fellow coworkers

~~~
fargle
I _very_ much disagree. To characterize engineering as a social activity
implies that this is the foremost characteristic. It is not. It is very much a
personal art. It is a science, and it is math. It is you vs. the machine. The
engineering part is done alone, between you and the universe. It is you vs.
you. It is _not_ about people.

Do not misunderstand me, helping your peers and all manner of social skills
are used, and are all necessary. There are other parts to this career and it
requires balance and diverse skills.

But don't say that "engineering is a social activity". Nope. Bollocks. Staying
employed as an engineer is a bit of social challenge we need to learn to deal
with. Writing good code is not a social thing. Architecting good systems is
not a social thing. The right answer is apolitical almost magically unfies
people automatically. Mediocre answers are the domain for arguing and
politics.

People are not the solution. Citing Dilbert:
[https://dilbert.com/strip/2015-04-24](https://dilbert.com/strip/2015-04-24)
\- people are the problem.

Help? Learning? Asking for help is fine, giving and receiving help is fine.
This should be viewed as a mentoring or apprenticing and learning relation.
But you _really_ need to figure things out _yourself_ or it doesn't count.
After the hint, or the explanation, what do you do? You go home, alone, and
try to do it _yourself_.

Engineering is a life of learning to DIY. If you can't DIY, then you should,
very much, not be giving advice, nor continuing this career. So by its very
nature, the core of this field is a very solitary venture.

All good tips, btw. I concur with all of them. But I'm just _immediately_
suspicious, on purpose, on principle, of people taking the line social first,
maths second.

Having drinks with friends is a social activity. It doesn't pay as well.

~~~
buttscicles
Professional software development is very much a team sport, even when it
comes down to the code. If you're not writing the code with the humans reading
it in mind then in most cases I would say your priorities are off.

------
ameixaseca
Had the same problem. Not just me, all sw engineers, but it was more of a
problem for the ones that actually were working on bigger projects involving a
lot of coding.

A coworker tried using an availability light but.. good luck trying to get
people to respect it. Either people will miss it, forget it, or ignore it
(specially if they are above you on the org chart).

I tried mufflers a few times, but it didn't work that well. Same issue as
availability light, plus the fact that everyone looks weirdly at you and
initiate conversations when you have the mufflers on..

So what I did was push working from home more and more until I went to working
1-2 days from the office per week. Now I have a much better productivity,
ability to focus throughout the day, etc, besides all the advantages of not
having to commute 5 days per week.

------
j45
Interruption is the enemy of productivity.

Usually unintentional.. when people burst in on your maker time, they’re
saying in action what they have is far more important than anything you could
be working on. This isn’t true, so it’s ok to at first gently nudge people to
set some healthier boundaries so people know how best to get your help.

If you have a helpful nature (very good quality) there’s better ways to not
end up a path of least resistance where people can ask you before looking into
it themselves.

You can decide if it is best to put up a sign, send an email, or verbally tell
anyone who interrupts you to help you help them in one of the following ways:

\- Use Calendly to block out available times. use these for overflows of
conversations and solving problems. 30 minute slots.

\- Answering things via email quicker than than in person. Batch the
communication. Save in person for dedicated problem solving.

\- Consider starting a lunch and learn on Monday’s to help people share what
kinds of problems they helped someone out with that others might have too.
People learn to help each other.

\- If these are your direct reports you can ask them what they tried before
coming to you, not give th,e the answer and work through it with them,

\- Use headphones to indicate you shouldn’t be interrupted, ask ppl to respect
it. I know someone who would flinch a little when he was interrupted.

\- When someone interrupts you, before replying, you can say I’m in the middle
of something and have a minutes now if we need more time we can schedule
something later in the day. They won’t get all the help they need and will
focus on how to best get that, worst case.

\- Start using the phrase “I don’t like interrupting you, can we talk when you
reach a good stopping point” in your correspondence when requesting time of
others. It sinks in over time.

\- There is a busy light you can buy that can sit on top of your monitor and
is red, yellow or green to be approached. I forget what it’s called but they
look interesting.

------
EliRivers
What has gone wrong such that they can't do things without having to
frequently get your take on it? Why don't they already know how to do these
things, or if they do know, why do they need to hear it from you as well?

That's the problem here. You being interrupted frequently is just a symptom,
and unless you're hoping that making yourself unavailable will force them to
rise and no longer need you in some kind of "sink or swim" situation, that's
quite a risk. Don't mask the symptoms; cure the disease.

~~~
redisman
You'll need to prepare the team for when you get sick/go on vacation anyway so
better start on that now.

------
pkrotich
Office hours is the wrong approach or terminology - I would recommend focus
hours. The later is more about your block of time to do deep work and less
about them but serves the same purpose.

------
akuji1993
This is one of those issues where you need your boss to resolvec it. I'd
request a meeting with your boss, explain how and why these interruptions cost
the company money, because you need to refocus after every interruption. Give
examples when this happened.

If however, you have a boss that will interpret this as "Yeah, I haven't
really worked much because I constantly talk to my colleagues.", it's going to
be hard to introduce these quiet hours now. Highly depends on if your boss
wants to support this.

~~~
muttled
Completely agree. You have to present the situation to your boss and let them
decide how they want to handle it. Either they respect your assessment of the
situation and help you, or they decline to assist or place the onus on you. In
the second situation you then have to clarify if they're okay with the
decreased work output this situation causes, or if they still expect you to
produce at the uninterrupted level at your own personal cost of time and
exhaustion. Finally, you'll have to decide if you are okay with the outcome of
that conversation.

------
sys_64738
Come in earlier before the others arrive or come in later/leave later. No
matter what scheme you use there will always be a means to interrupt you. The
longer the overlap between you and others then the higher probability of
interruption as it gives more opportunity to be interrupted. If you reduce the
overlap then you squeeze interruptions into a smaller time slice, and you'll
get more done.

------
jrs235
Schedule personal meetings with yourself on your calendar that aren't any
different from ones with teams and others. This is time to get stuff done.
Just like a meeting with your boss, a report, or a team it is not to be
interrupted unless someone is crying or dying. Set boundaries, set
expectations, stick to them.

~~~
time0ut
I did this for a long time. I had random looking recurring meetings on my
calendar called things like "Backlog Grooming" and "JIRA Ticket XYZ-1923". It
cut down on the bullshit meetings for a while, but people eventually figured
it out and scheduled on top of it. It also did nothing to stop the people who
just walk up and demand attention.

------
Ididntdothis
If things aren’t urgent tell them you don’t have time right now but if they
send an email you will respond when you have time. Make sure to actually
respond. If you do this consistently for a while people will learn.

There is nothing wrong with telling people politely that you don’t have time
right now. They will respect that.

------
pc86
"Office hours" as an individual contributor developer will never happen. But
for the sake of argument..

1) Do you have the organizational and political clout (and skill) to institute
this?

You can say "no admittance!" all you like, but if you're a mid-level dev and
your lead needs something, you're going to get interrupted. Like it or not
this sounds like a big culture change and it's not something even most senior
devs have the organizational power to implement.

2) Are you prepared for the objections and potential backlash?

Whether we like it or not software has gotten written for decades with the
devs fighting against constant interruptions from peers, managers, and other
random coworkers.

3) Do you really need this?

Sort of building off #2, what makes your project or your work so special that
you need to be available for only certain specific times of the day?

4) Are you prepared to push back?

So let's say you actually get this implemented. Then your boss's boss's boss
comes up to your desk in the middle of your working time and asks to talk to
you. Are you going to tell them no in front of all your peers? Are you
prepared for them to get upset with you? There's no way your "no admittance"
time would be on their radar unless it was a team-wide change (and even then,
maybe not).

\--

In reality, most of us are not working on anything so complicated and
important that the occasional interruption is a terrible thing. The same way
99% of companies do _not_ need to hire the best rockstar developer they can
find, most developers are good-not-great at their jobs and realistically being
interrupted is not going to cause us to miss deadlines or put out terrible
code.

------
bobobob420
I always chat a higher up or coworker asking if they have a minute for a chat
before I go seem them. The fact that this is not common courtesy is annoying.

------
closeparen
A personal office hours might come off as arrogant, but pooling with others
who support the same topic area / technology can work wonders.

------
stuff4ben
I've found that hiding in a meeting room or even working in a different
building works for me. Coffee shops, coworking spaces, etc.

------
marsrover
There is no solution, you'll always be interrupted.

