I have used many different project management tools but I have to say that I have not yet found one which really makes me 100% happy to use it.
I have played with many tools and used some of them extensively and I was growing a bit frustrated about this. In the good old times I have also hacked a couple of tools myself. Now that I am older (and maybe wiser) I decided to sit down and thing about this problem.
Activities involving a project management tool
First of all I tried to examine for which activities I feel I need a project management tool. Here it is the list:
- Planning sessions: I brainstorm ideas, review existing tickets and plan work for the week while talking over Skype with other people. To be efficient during planning sessions I need an easy way to identify tickets (“ok, so I am going to close X-123, right?”, “Y-34 is urgent”) and it helps to have the possibility to quickly create tasks, without having to go through one dialog box (or more) for each new ticket.
- Scheduling sessions: at the beginning of the day or the week, alone or talking with others, I want to take a look at my open tickets and decide in which order I am going to work on them. I want to be able to assign due dates and priority levels. Ideally I would like also to be able to order the tickets.
- Coding sessions: while coding I want to open my tickets and. add comments. Possibly I want to assign the ticket to someone else if I need his comments to move on. I need an identifier to be used in branches and commits. It helps also to be able to quickly mark the ticket as done and see on what else I need to work. During the coding sessions I should not do any scheduling, that should be done upfront.
Features I am looking for
The right project management tool is partially a question of feeling: you want something with an easy to use interface, sometimes responsive and intuitive. However I tried to identify a short list of features that matter to me:
- (Critical) Issues should have a short ID, something that can be used when discussing about them and to tag commits. It may seem a minor thing but for me this basic feature is fundamental
- It should be possible to quickly create a list of tasks, from one single screen. This is important during planning sessions to be able to sketch a list of tasks without having to go through several pages.
- It should be possible to specify due dates. It should be also possible to sort tasks by that due date and in general to see which tasks are about to expire.
- It should be possible to specify priority levels. Not all tasks are created equal. It is true that ordering issues is a partial substitute for that but I think that the possibility to assign priority levels help when planning.
- The number of fields of an issue should be limited. I do not want to have to find the useful information in a sea of useless fields. And I do not want absolutely to have to fill fields which are irrelevant to me.
- It should be possible to assign tickets to project members. Basic stuff
- It should be possible to comment tickets. Other really basic stuff
- (Optional) It should be possible to find all the open issues for a project. Creating issues is part of process but querying, filtering and examine issues list is another very important activity.
- (Optional) It should be possible to order issues. I would like to define an order for issues, so that when I am working I can just pick the issue on top and keep crunching issues and move forward.
- (Optional) It should be easy to get a list of closed tasks
Now let’s take a look at a few candidates.
I have used Jira while working at several companies.
One thing that can be said about Jira is that it is complete.
Another thing that can be said is that it is bloated.
Did you ever have the feeling Jira asks you to go through screens which are completely irrelevant? Have you ever had the feeling there are just too many fields?
Now, it is true that it can be heavily configured but this seems not to be a trivial task. I have seen several people who have used Jira for years being regularly confused by it and wasting a lot of time finding the screens which they did not use daily. When I was working at a certain company (in Ireland) we had to ask our Jira administrator (in Germany) to configure Jira for us. I think this was a very clever way to add even more red tape. Useless to say: we wasted several days just to have Jira configured for each project. No good.
Now, Trello is fun to use and very good to get started. I am using it and I have found a plugin to show the short-ID of cards. It is not perfect: you need to refresh the page after inserting the card: it is a bit annoying but not a deal-breaker.
It is very easy and fun to quickly add a few cards and there is no red-tape at all. It is absolutely a pleasure to use while planning. It becomes less nice when you need to examine what you have done in previous weeks. Do you archive the lists of tasks done last week? Do you keep a huge list of “Done” tasks?
Also, you cannot add priorities to tasks and while you can insert due dates I could not find a way to easily see tasks which are about to expire or to get a notification that a task is expired. I just feel that the tool is not helping while managing, everything is up to my goodwill and attention.
Redmine is the open-source competitor. The default interface seems reasonable but a bit ugly. However you can add a lot of plugins and the easyredmine large plugin seems to produce a very nice product. It remains a bit slow and sluggish but I think it has all the feature I would be looking for.
The only hosting I found for redmine starts at 29 Euro per month (and only for the annual billing).
Asana is to me something in between Trello and Jira. It seems good but in my opinion it fails to deliver. It is very easy to create a list of tasks and you can assign due dates. However it feels not very structured. It seems unstructured like Trello with an interface similar to Jira.
Wrike and Azendoo seem similar to Asana.
While these tools are interesting they are not contendant to me because they miss simple IDs for items. Some of them have long UUIDs associated to tasks, but this is not something I could use to mark commits or discuss about tasks. I tried doing without IDs but it just complicates things. I also tried assigning IDs manually, writing them in the title of the issue but this is rather awkward and you can end up having duplicates.
There are other contenders like Taiga (it seems very rigid to me) and Basecamp (I did not spend too much tome on it). For now I have focused on Jira, Trello and Redmine. Asana, Wrike and Azendoo have been excluded because they do not assign human readable IDs to task.
|Feature 1: IDs||Yes||Yes||Yes|
|Feature 2: quick tasks creation||No||Yes||Yes|
|Feature 3: due dates||Yes||Partial||Yes|
|Feature 4: priority levels||Yes||No||Yes|
|Feature 5: few fields||No||Yes||Yes|
|Feature 6: assign tickets||Yes||Yes||Yes|
|Feature 7: comment tickets||Yes||Yes||Yes|
|Feature 8: filter tickets||Yes||No||Yes|
|Feature 9: order tickets||Partial||Yes||No|
|Feature 10: history||Yes||No||Yes|
My totals are:
- Jira: 7.5
- Trello: 6.5
- Redmine: 9
When I say Redmine I actually mean Easyredmine or Redmine with some plugins like AgileDwarf.
Jira is not perfect and sometimes I hate it. I think everyone hates it a little bit. However it is something that works. It has a good hosting offer and it has a nice REST Api which I could use to implement quick creation of issues for planning sessions. It has also a CLI based on that REST API (this CLI comes with an additional plugin which is not free of charge).
I like also Redmine and I think that with a few additions I could get something rather good. What I do not like is the lack of hosting options.
I plan to focus on Jira and Redmine and see what kind of workarounds I can find for their problems. After that I will need to think about the deployment: use something from the cloud? Host it on my servers?
And you? What tools do you use to stay on top of your activities?
Download the guide with 68 resources on Creating Programming Languages
Receive the guide to your inbox to read it on all your devices when you have time