Or "Avoiding death by a thousand cuts". With your productivity being the victim.
The cheapest way to kill a programmers productivity, is to get him on a company Slack team, include him on all the channels, and give everyone free reign to poke, ping and prod him at will. The onslaught of dings, popups and push notifications will tire him out pretty quickly.
Just as humanity hasn't yet evolved to deal with online social networks, so too programmers are still a few generations away from fully figuring out how to survive instant messaging. And not just programmers, this includes any profession that needs to stay focussed for hours at a time to get meaningful work done.
Slack might cost only $5 per user, but if you take into account the lost productivity I bet that figure becomes just a rounding error on your balance sheet. That is, if you're not using Slack correctly.
Ok, so here's the thing. We've been blaming Slack for concentration-genocide ever since it became the de facto chat tool. Companies love it, clients love it, but programmers only tolerate it. I'm going to argue that we've just been using it wrong.
Think about the forums of old. You would leave a well thought out message, hoping to get an answer, and go about your day. You would either return a lot later, or once you've received the (pretty slow to arrive) email notification of a reply.
You would be greeted by a similarly well thought out message. Not 10 sentence fragments spread out across a line each, and certainly not someone’s incoherent train of thought, the point of which was lost mid way.
Somewhere along the way...
is an acceptable way to communicate.
Not only does it vibrate my phone off the table, it breaks up a single message into a dozen interruptions. It's also hard to read, and a lot of the time the point of the message changes by the time the "thread" unravels.
Type out a single coherent paragraph of text. Break it up into multiple sentences or lines if you want, but keep it in a single message. That way you're minimizing clutter and noise. If you want to send 20 screen-shots, zip them up. Nobody wants to scroll through 3 screen-space-heights worth of vertical phone backgrounds.
As a bonus, as you're writing out these long messages, you might answer your own question. This happens to me daily. By the time I'm on my 3rd line of the message, I realize that I can either figure it out myself or that the answer was simpler than I thought.
Can we burn this one onto the Slack sidebar or something? If your company is already using a project management tool like Trello, Jira or Redmine, there is zero reason to report an issue straight into chat. You've got the right tool for the job, use it.
Yes, something may not be clear. Yes, you might not be sure it's an actual issue. Yes, you want it done quickly. But you still want your other projects to keep moving. "Slack tasks" quickly bury a team in "minor urgent sidetracking" to the point where the issue tracker loses it's purpose. Anything worth reporting is worth reporting in the issue tracker, and discussed, elaborated or closed there.
Here's a little exercise for your. It has to do with timing. The next time you need to "discuss something real quick", take note of the timestamps of the first and last message once it's done. I bet you that you're looking at something like 8 sentences spread out over 10 minutes, or about "1 sentence per minute".
And during all of this you can't get anything done. Or maybe you can, but you risk messing up, due to lack of concentration. You're effectively blocked for that time, until the conversation wraps up. Compare this with a call in which you could get the point across in 2 minutes, and take the spare 8 minutes to provide more needed information. And once you hang up you're not left wondering if you're going to get another message before you go back to your code editor.
Chat is asynchronous and should be used as such. The problem arises with the default Slack settings and behaviours. You hear the notification and you run to see what's up on the off chance that it's important. 99% of the time, it's not.
And if you have those browser pop-up notifications enabled, I wonder how you get anything done during the day. Unless your attention is needed right this very instant then it's not worth the interruption.
Also, when did this become the norm:
"Hey, I just sent you an email, let me know once you read it."
10 times out of 10 it's not urgent enough to warrant that message. They'll see it when they see it. And they'll respond once they have a response ready. At least email doesn't have any pretence of being real-time.
Now that I'm done complaining, here's a list of ways for your to minimize interruptions.
First things first, update all the channel notification preferences to "mentions only". There's no reason for you to be notified for every message in there.
Also, since you can't really do this for private messages, teach your team/company to use public channels more often than private messages. Also, teach them to not tag you unless it requires immediate attention - you'll see it when you see it.
Oh, and disable the browser pop-up notification, that thing shouldn't exist in the first place.
There are a few very simple rules you can share with your Slack team to minimize interruptions:
- Try and group your chat messages into fewer bigger messages, to reduce notifications.
- Don't @ someone in a public channel unless it's urgent.
- If you're replying with an "Ok." or "Thanks!" a few minutes later or more, use the emoji reactions instead, to acknowledge the message.
- Again, use public channels more often than private ones.
- If you have more than 2 questions, best schedule a short call.
Ok, this ones my personal favourite. There's a DnD mode in Slack, which Snoozes your notifications - even the private message ones - and it's awesome. In the event that the building is on fire, the sender can "break through" your DnD mode to get the message to you, but most of the time they won't feel the need to.
Now, to not be constantly in DnD mode, as the company probably needs you available and reading chat from time to time, you should establish certain "Zen" chunks of time.
Here at Pathway, we do a single Zen Day per week, but you might be able to get away with multiple ones. Or maybe do 3 Zen Hours each day.
What this means is that your DnD mode is on, and everyone knows not to send you Slack messages at that time, unless it's important. This works better with company buy-in, but in reality, you can get away with just using DnD for bigger chunks of time anyway. Your brain will still have you checking Slack from time to time, but now it's on your terms instead of it being an interruption.
Slack is not a bad tool, but we as a society are still not sure what a proper Slack etiquette is. We don't understand what our message does on the other end, nor do we understand the cost of interruptions. As more is done on the topic, and we get saner chat defaults, things are going to get better, but until then: Snooze your Slack.
Learning to code products doesn't take as long as you think - more precisely, 300 hours to learn, build, and launch. Learn about the history and misconceptions of development preventing you from even starting and then hop on that tech bus.