Stop using Slack


Confession – this is a flashy title to attract an attention. Slack is a great tool and you should use it. But, please, STOP abusing it.

Let me explain my point of view. It’s a great tool to have a conversation with your team members. But it should not be used to preserve the knowledge. What knowledge? Anything that related to your work like discussions about product features, roadmaps, decision points and so on that you may need to reference back in the future.

Let’s say you have to discuss a specific feature of your product. I assume that you already have it tracked in one of the applications like Trello or Asana. It’s so tempting to just jump into one of the Slack rooms and start the discussion there. But unless you have a room for each features, bug, task don’t do it. And, no, I don’t advocate to have a room for each working item you have to discuss. Instead of going to Slack, find this item in the tracking system that you use and discuss it there. Your discussion is the knowledge that you would like to preserve. It can be useful for you in a couple of months or for your teammates when they will need it later. One item – one place to store everything important about it. It makes much easier and faster to find information when you need it.

Have you ever came back from vacation to find your Slack room full of unread messages? No? Well, I guess you don’t use Slack then :). How can you get up to speed with any decisions that were made about a particular task? Search? Read all the messages in a particular room? But it has discussions about 10 other items, all “shuffled” and polluted with totally unrelated chatty messages. But if that discussion is kept with an item itself in the tracking system, then you will get what you need right away.

Are you a manager? Then you have to track all work items of your team. But you don’t have to track ALL of them right away. Some need your attention right away, but some – can wait. You know that there is a discussion going on, but you don’t care about it right now. You will deal with it later. But when the time will come, you want to get up to speed fast.

So, do use Slack. But keep your knowledge where it belongs – with your work items. A small effort to put the information where it really belongs will go a long way when you will need it.

Urgent vs delayed

Another disadvantage of Slack comparing to email + IM is no explicit sense of urgency. In most cases, when we receive email, we know that we can reply later (unless it’s stamped as urgent). But when somebody pings you via IM, it means that there is a need for an immediate reply. Well, this is how it is in most cases. And this is not very clear with Slack. Unless you read the message, you don’t know whether a response is expected right away or it can wait.

This is not a big deal, because it can be easily fixed with some tag or “stamp” of the post. Just agree with your team what it will be.

And remember, a tool only as good as the user.

Happy collaboration!

Better TODO comment

Here is a simple trick that makes TODO comments more efficient. You have seen TODO comment like this all over the code:
//TODO: convert to prepared statement.
var query = 'SELECT processedDateTime FROM ProcessedEvents WHERE hash = ?'
Yes, it’s good to have it. This is a way to track a technical debt. And here is how it can be much more useful:
//TODO: vvs p2 convert to prepared statement.
var query = 'SELECT processedDateTime FROM ProcessedEvents WHERE hash = ?'
Just 2 small pieces are added:
vvs – your initials,
p2 – priority (p1, p2, p3)
Now, you can search the whole code base for your own TODOs (or TODOs created by a specific person). And when you see a comment like this there is no need to go to Annotate or Blame to find out who has left it (save time).
When you leave a TODO comment you are in the best state to analyze the impact of the incomplete work. That’s why putting a priority at that moment is so crucial.
It’s a simple trick that can save you tons of time, especially when you manage a team and do daily reviews of all commits.

Effective multitasking tip

I’ve been working on multiple projects recently. I’ve been managing multiple work projects effectively for a long time. I’m talking about working on multiple projects outside of my job. I am pretty busy at my work. In addition I do an open source development project. I’ve started this blog. And I’m developing one more application that is very important for me.

My normal day goes like such: wake up early, do some development for one of my personal projects, work on a personal project during commute to work, do my job, commute home and work on one of my projects again and may be some coding after dinner. I love my personal projects a lot and it gives me enough enthusiasm to keep this schedule.

Juggling job and personal projects was challenging for me at first. And that’s where I’ve developed this process that I would like to share:

Every time I’m going to stop working on one project and work on another I record what I was doing and (even more important) what I have to do when I resume working on the same project.

E.g.: fixed 80% of the bug #347. Finish bug fixing and update unit tests.

Simple? Yes. But it makes switching from one project to another less painful and increases productivity dramatically. It helps to get into the interrupted project much faster.

I’ve also realized that the same trick can be used in the office as well: if my development activity is going to be interrupted by a meeting I write down: was doing this, start with this after the meeting.

Try it and maybe it will help you too. Or maybe not. It depends.


oDesk is a great time-saver. You know what oDesk is, right? It’s a site where you can hire somebody to do some job for you. Some job that can be done remotely, like code writing, web site creation, QA-ing your code, editing your blog post. Go to their website and learn more about what kind of help you can get.

But, why would I hire somebody when I can do it my self?. I can edit my blog post. I can create web site. I can test my application“. It’s a question that doesn’t have a single answer: what is going to be – time or money? Sometime it’s money, and in this case you test your application yourself before launching it to your customers. But, sometime it’s “cheaper” to pay somebody to test it so that you can concentrate on something more important. I’ve just recently read a comment about a person who was gladly hiring somebody to do a job that would take him only an hour to do, even it would take a hired person 8 hours, because at the end of the day it was “cheaper” in a long run. So, sometime you can “delegate” something to somebody else and this way free your self for more important tasks (including spending more time with you family or exercising more, or just doing nothing and recovering after a tough day/week/month).

I’ve first heard about oDesk site in a book about Micro ISV. So, when I needed to build a team for a startup (with limited resources), I’ve turned to oDesk. And it was very successful experience. Not without challenges, but successful. Not only I’ve had people from around the world helping me to build a new product, but I was paying a fraction of what it would cost me to have a local team.

Ok, I hear you: “Another advertisement of a cheap offshore job market. Give me brake. You don’t know what your are talking about”. Well, as a matter of fact, I do know. Because I did it, with success. And I’ll follow up with what helped me to use offshore team effectively. Note that, offshore teams may not be an option for you – one of my friend who is CEO and founder of his company told me that in some cases (when the software will be used in a high-level security areas) it’s not possible to hire people outside of US. But I think it’s more an exception than a rule.

So, does it mean that the only way to use oDesk is in case of a business? Not at all. You can use it for some personal projects as well. Just remember that you pay you $$$ for your time, time that you can spend with your family, grow you skills or just relax. You can always make some $$$, but you can never buy some extra time. Unfortunately.

And here is how I’ve used oDesk for my personal need. I’ve had this WordPress-based blog hosted with another provider. It was free with my domain hosting, but I was not happy with the performance. I know, that it doesn’t really matter because nobody reads my blog :), but still I was unhappy. So, when Microsoft introduces WordPress hosting on Azure (I was doing a lot of development on Azure that time), I’ve decided to switch (BTW, the performance is much much better on Azure). So, did I know how to transfer my WordPress blog from one provider to another? Of course, not :). Can I do it myself? Absolutely. I can learn easily (there are tons of blogs about how this can be done). But, before moving on, I’ve decided to check what it would cost me if somebody else do it for me. After a quick search on oDesk I’ve found a nice guy in India who can do it for me under $50. So, what’s it going to be: $50 or a day of my life? It was a very easy choice for me (your mileage may vary :)). A few days later I’ve had my blog transferred to Azure. Yes, I’ve spent a little bit of my time to help the guy (just sharing some details, providing credentials for him and doing some securing clean up after the transfer), but it was much less time if I would do it myself.

So, next time when you need something get done, may be oDesk is you friend 🙂