I get needing time without distractions - but when your work is used / others are dependent on it, how do you tradeoff that support?
Other jobs, like receptionist and office managers, for instance, are interrupt-driven. Receptionists add value by responding quickly and handling a continuous stream requests.
Now let's talk about engineering managers. Being an engineering manager is IMHO, an interrupt-driven job. The job of an engineering manager is to tell you where to find answers to your questions, or on a good day, actually answer the question. The friction comes when an engineering manager does not understand that the interrupt-driven nature of his/her job is not reciprocal. A good manager will handle interrupts quickly, but only very judiciously use the power to interrupt.
Another source of confusion is dev/ops. Anything operational will tend to be interrupt driven. An engineering manager that has been running a high-functioning dev/ops team that is a team of crack fire-fighters might be a very disruptive force in a design engineering team if that manager expects a constant volley of chat messages among the team.
Maybe what we need is a system where instant messages are allowed, but it imposes a cost of some kind to the person initiating it, so that it won't be used frivolously. Like the proof-of-work antispam captchas, except it should take ~30 seconds and be just once per conversation (defined as ending when 5 minutes go by without message; first replies are free).
We could also add a social cost by displaying how often each user has used this feature in the past 24 hours, next to their username.
As a startup founder, by far my two biggest tasks are customer acquisition and development. The former is interrupt-driven while the latter is emphatically deep work.
Right now, I try to address this by blocking off 4 hours a day for deep work and the rest of the time is available for sales and general operations. It's working okay but the big problem is that I have an added stress of worrying what important customer messages I might be missing during my deep work time.
That, plus simply being mindful of the meaning of “deep work” and people working in roles that need that kind of concentration.
I don't need an app for this.
A reasonable model.
> Maybe what we need is...
I think Cal Newport belongs to the "intermittent hermit" school of thought...
Thank you for helping me understand this dynamic.
If engineering/qa/architecture is the question, xp may help.
Since you're new there, you might not have the assignments and/or enough responsibility to know what else needs to be done. But that should happen soon, and there is no reason not to proactively talk to your boss about secondary goals to focus on when you're blocked waiting on communication.
I think it's just good management to convey the bigger picture to everyone. Between the steady stream of tickets assigned to me and other existing responsibility I haven't had to ask my boss "what do I work on now?" in... like... 3 or 4 years.
Is the loss in time spent on high priority items worth fewer quick distractions to the rest of the team?
It all depends on the tasks and your particular work environment. It's going to vary from place to place, so I don't have anything specific to tell you other than this kind of prioritization is the kind of conversation you should be comfortable having with your lead. Or at a status meeting or standup, if your process makes that the better place to ask.
However we are also an almost entirely engineering team so there is no resource for getting unblocked that isn't bugging another developer who then drops his mind balls.
It is just the reality of it though, we have tickets and tasks to complete and we can work toward being more efficient, making sure we aren't going to get blocked befor getting started on a ticket and such. It's all a balancing act and it's important to be aware of it, but I no longer get my knickers in a knot over it.
I've worked remotely for many years and this was never a problem. Need some company? Just read and follow a few channels. Want to get work done? Ignore client and code. If someone needs me, a notification + sound will pop up. Works fine with IRC, really.
But really: doesn't working remotely mean that, when blocked, you can just leave the computer and do some life stuff, then come back a few hours later and continue from there?
That's one reason why I like the idea of taking forced breaks; they give you a scheduled time to handle brief interruptions, and if you're fairly regular people can tune in to your schedule(e.g. if you're always "working" the first 50 mins of an hour and "resting" the last 10 mins, it's easy to know whether you'd be able to quickly answer a question). Of course, the forced breaks are another form of an interruption from flow; it's still a trade-off.
Technically yes. In practice though, this only blurs the boundaries between work and leisure, as you find yourself working in evenings and weekends to make up for those down-times during the week when your team members were unreachable.
1. Maybe documentation is scarce, be it code comments or business requirements specs, user stories, epics, etc.
2. Maybe your tasks are ill defined, and you accepted your assignments without asking enough questions upfront...
3. Maybe you don't get enough workload (if you had many tasks to choose from it would be harder to get blocked on all of them)
4. maybe you lack some technical knowledge or other competencies needed to make the decisions yourself instead of asking others.
You have an organizational problem there.
Any reasonably complex codebase I have worked in has at least parts that only a few people understood. Even if n=3, you could still very easily be blocked when trying to find someone in the know...
https://en.wikipedia.org/wiki/Bus_factor
You have a problem. Disagreeing with me won't fix it. It's a common problem, but also a fixable one.
1) Do you know of a way to document a significantly-sized application in such a way that it is not massively more efficient to ask a colleague for help than to go source-diving? Say we are talking about a rails app that has been maintained for 5 years and with a reasonably complete test suite.
2) Does a fresh-from-uni or perhaps 2-years-out-of-uni junior developer teach themselves how to ask just enough questions up-front that they don't need to ask more to unblock themselves?
4) How does one gain this technical knowledge if you are on a project and need to apply it but don't yet have it yourself?
Re 2: Often tasks are even meant to be exploratory, where those questions can't be asked upon receiving the task, but only once enough investigation has been done and implementation questions are run into. Rather than a quick back and forth that keeps me progressing, I have to context-switch to something else, and spend time re-familiarizing myself with what I had done the day(s) before again.
Do you know of a way to document a significantly-sized application in such a
way that it is not massively more efficient to ask a colleague for help than
to go source-diving? Say we are talking about a rails app that has been
maintained for 5 years and with a reasonably complete test suite.
Yes. You can draw architectural diagrams. You can create a wiki where people document problems and solutions. You can have broader design reviews where people talk about the ways in which they solved various problems and what considerations they took into account when coming up with those solutions. I agree with the other posters in this thread: if you're truly blocked (i.e. literally unable to work) because someone can't respond to your question, there is something deeply wrong with your codebase, or in the way in which your team communicates. Personally, I would expect anyone who's been on the team for more than few months to be largely self-sufficient when it comes to actually coding. Of course, there will be questions when there are multiple possible approaches to solve a given problem, and I would expect someone to raise a flag and ask about the relevant considerations. But in the absence of a reply, you should be able to pick an approach and push forward with it. Does a fresh-from-uni or perhaps 2-years-out-of-uni junior developer teach
themselves how to ask just enough questions up-front that they don't need to
ask more to unblock themselves?
Honestly, at some point, you have to learn your team's codebase. You say that it's massively more efficient for you to ask questions of colleagues than it is to go source diving. That, to me, indicates that you don't actually know your codebase very well. Again, this is a sign of a problem on the team. Either the source is so tangled that no one can hope to understand all of it, or people are becoming siloed - specializing in particular areas of the codebase in ways that leaves them unable to fix problems in other areas. It's all right to be better at one part of the code than another. For example, I'm better at some of the middle-tier/business-logic code than I am at UI work. But, in a pinch, I can jump in and help with UI if it's necessary. How does one gain this technical knowledge if you are on a project and need
to apply it but don't yet have it yourself?
I'll be honest. It's rough. You have to learn, and you have to realize that outside of university there aren't going to be TAs and professors to point you in the right direction. You will make mistakes. But that's the only way forward. Keep trying. Keep writing code. If you do something and it doesn't work, have a meeting in which you go over what you did, why it didn't work, and what you could have done better.2. Yes, often my tasks are exploratory rather than implementation of a particular feature. Often the goal is to explore and then discuss my findings. When I can't just go up to someone's desk in person and ask them when they are free to discuss, Slack is a good resource to set up a meeting.
3. I definitely am not blocked on all, but the context switching hurts my productivity as well - to me, a quick response would have large benefits for me and a minimal distraction for my colleague.
Then check the wiki before you ask a question. Query driven documentation.
But that doesn't matter, I can work with the subset.
Sometimes the questions resolve themselves, sometimes I just write another email, it really depends.
Suggestions welcome.
Our addiction to instant and easy answers can be very problematic. It is the only way. Some of the time when I feel the urge for distractions or chat or email I just sit with one or two apps open (Editor and music) and I sit there until the boredom wins and the task becomes more appealing. Once that hurdle is overcome things are great.
Bingo. The rub between not wanting to reinvent the wheel and being forced to think through it on your own is a very real tension. However, I really like what you say here. The notion of instant information and instant gratification has made us primarily information consumers. There's a very real benefit, in my opinion, to thinking through the situation without the external information inputs.
Both are good, but my sense (from anecdotal evidence, primarily) is that we're losing the thinking/reasoning our way through things in favor of "collaboration" which we cheapen as "information sharing."
When I am hacking on Go or Python I will often launch pydoc or godoc and not visit the Internet at large for hours. Some times I end up implemeting something un-idiomatic or sub optimal. I think it is alright. You get a feel for when something should go to a Parking Lot that you can clear out in a bit. It may seem counterintuitive but it does not mess up Flow. Just whack a comment or placeholder and move on. I often find my brain was working on it in the background anyhow.
It is a sort of freedom. A rare sort these days.
You can, however, configure slack to not notify you unless you are @'d specifically. This + minimizing slack is pretty effective. Most of our office works with this set up (so some people need to be pinged directly to get immediate responses)
People might need to know, but I think that the word spreads fast. For non-urgent stuff, talk in the channel. For urgent things, @ someone, or DM them.
The only thing you need then is the self control to not look at Slack every 30 seconds.
It can be hard when that is not an option because then someone has to let Slack occupy some amount of their brain space, just in case.
spotlight and a fast machine make it a few keystrokes to come back.
I have been on this agenda of simplifying my computing over the last couple of years and it has really made a difference. I don't need a special app for TODOs. I don't need yet another status bar agent pestering me to update itself. I don't need an IM client begging for my attention. We are builders and problem solvers, and we are paid to think really hard. Our computers and phones are devices that have a default mode that guides us toward content consumption and a bunch of "least bad" technologies.
Personally, I use mutt + mbsync. I have bound key 0 to call mbsync from mutt. I try to check email only twice per day [1].
I'm in the process of switching to gnus + mbsync. This has the additional advantage of gnus being close to a news reader, which is optimized for an inbox-zero way of reading.
Since my email often carries stressful news, I love having my inbox "paused". I pull emails. They are not pushed to me. Way saner.
[1] http://pmarchive.com/guide_to_personal_productivity.html
Unless the shop is burning down, nothing needs my attention immediately. If it does, call my cell. Some things deserve purposeful friction.
Seems we've now given up on that and the new working model is just to blurt out questions in some push system, bugging everyone in the process, and then hope that someone blurts back an answer.
Tangent: It has been 7 years since their founding. How does Quora make money?
Or maybe they are, but they can't be found. I've noticed this before, but you can't google for something like "SaaS version of Quora" because all you'll get is results - in Quora - about SaaS. Same for "in-house Quora". So maybe someone does offer a Quora-like product for the enterprise, but they're consigned to invisibility.
[1]: https://askbot.com/ [2]: https://ask.fedoraproject.org/ [3]: https://ask.libreoffice.org/
Documentation in a Wiki is way preferable.
If you're a team lead, or someone with significant business or technical knowledge, helping other people on slack might increase their productivity, and the productivity of the team. That may be more important than your own productivity, or it may even be your responsibility. In this case, not being available is unfair to your team.
I use the slack app which displays a notification icon in the task bar. When I get personal messages (which usually require immediate attention) the icon shows a red dot (I also get a notification). If people chat in public rooms the icon shows a blue dot (and I don't get a notification). I don't check slack, I just glance at color of the dot. Interrupts are pretty rare, and I'm always available if someone needs me. I'm not, however, a central member of the team, so people don't often come to me for technical or business advice. If I were, however, I wouldn't shut down their line of communication because "screw you, I need to work".
(replied to the top thread, but it's applicable to everyone in this sub-threaD)
"Productive" in what sense? In my experience that's a good way to spend hours writing some gnarly logic that will feel very satisfying to write... but not actually be what the user wanted.
I think all the communication options we have make people anxious if we aren't communicating. It's like cell phones. People lose their minds if their phone breaks and people can't contact them immediately, but people survived for tens of thousands of years without that ability.
My phone's in for repair at the moment, so I'm very conscious of how much difference it makes to my life. Waiting is a lot more boring without it. I've had some good times that I wouldn't have been able to without modern communications (last-minute parties that I'd've missed if I hadn't been so easy to contact). And fundamentally I like talking to my friends (interestingly this is something that has changed as I've got older - when I was 20 or so I was much more content spending days at a time on my own).
I would certainly advise pruning any communication sources that don't bring you joy, KonMari-style. But don't throw the baby out with the bathwater.
It's not just an issue for cities. One of my best friends is a high school teacher, and she said that kids told her they felt less lonely after a cell phone ban came in to effect. Before the ban kids would text their friends who weren't there if they didn't know anybody. After the ban they started making new friends at lunch, since they wouldn't choose a convenient spot and stare at their phone the entire time.
It's not like the city is a new construct.
The older I get I have to sigh and skip over more and more of what's on HN.
If they're bullshit, how come you lack the discipline to abstain from checking them?
> HN is not banned (yet), since SNR is not zero here.
I might be misjudging, but you make it sound as if you're pretentious about the content you consume when actually you're placing external constraints trying to prevent yourself from consuming bullshit. In that case, more discipline would be the healthier solution.
All of these conversations, be it open-office/email/slack/etc are a rehashing of something we all know: fewer distractions leads to increased productivity. The trick is to balance that with collaboration and help channels, so the product and collective productivity of a team is improved, not just an individual's.