Why I don’t assign deadlines by date


Think about the last time you came from a working meeting. If it was a productive one, you came out with an action, who is to do it and a delivery date attached to it.

This is of course by now what is de facto in business on what it means to have a good meeting.

This is great and by doing so you would be ahead of most other organisations which run meetings like some form of social engagement.

Once you start implementing you are guaranteed to run into a new problem, how do you keep track of all those dates?

Think about it for a second, if you have 2 meetings per day for 5 days each with 5 actions, then by the end of the week you will have about 100 actions to track.

Modern day tools will keep track of the dates but in most cases, they just exacerbate the problem. You will likely end up with a whole lot of overdue tasks highlighted in a bright red. This constant reminder of missed deadlines is guaranteed to stress up any project manager.

There is a better way, consider assigning tasks to a week instead of a date.

In this way of thinking, instead of assigning tasks: task1, task2 and task3 to say 6th, 8th, 9th Dec respectively. You instead say task1, task2 and task3 need to be completed by the Tuesday of 10th Dec. Here the assumption is you do your weekly check-in on Tuesdays.

Now if you have more tasks you simply bucket them to another week say the week ending 17th Dec (another Tuesday).

In the example here, we have a fictional person planning a trip to the coast, in a discussion with the wife, they come up with several actions they want to be done, the actions are then piled up into buckets with each bucket indicating the final day the work should have been done.


So what is to be gained by using this kind of structure? Let’s explore.

Establish a rhythm

At the base of any complex system is some few basic concepts.

Salsa dance has the mambo

Genetic material has 4 nitrogenous bases: Adenine (A), Guanine (G), Cytosine (C) and Thymine (T)

Project management has the timebox

By chunking the work into weeks, it’s time-boxed. This comes with all the goodness brought in by them. In this case, a nice rhythm.

You now know every week, there will be something to celebrate as done.

You can easily tell when overcommitted

This is the starting verse of a song by Billy Joel.

Slow down you crazy child You’re so ambitious for a juvenile But then if you’re so smart tell me, Why are you still so afraid? (mmmmm)

Where’s the fire, what’s the hurry about? You better cool it off before you burn it out You got so much to do and only So many hours in a day (Ay)

In the age where what you are is what you produce, it helps to get a reminder to slow down every other while. The question then becomes, how do you know when you have over-committed yourself?

The method I propose here makes it very clear, if in the past 4 weeks you have been having a list consisting of 4-5 tasks, then you note this week you have 10 tasks, something is wrong.

Given the very visual nature of the structure, you will note the difference just by seeing the different sizes of the list.

Longer term planning becomes easier

Human memory is surprisingly feeble. When you walk into the office in the morning, its very easy to make sense of the situation, navigate yourself in such a way as to ensure you are not hitting any furniture on the way and definitely passing all the usual pleasantries. Yet if I was to ask you right now to close your eyes and then tell me exactly what you saw, most likely you forgot most of the details of the morning.

Despite this limitation of memory, we have evolved an ingenious technique of dealing with it, chunking.

Chunking in psychology is a process by which individual pieces of information are bound together into a meaningful whole

By having your work in weekly lists, it’s now easier to think about the week as a chunk as opposed to multiple disparate action items. The psychological relief once you start practising this technique will be worth it.

How do you organize your tasks? Talk to me in the comment section below or on my twitter @jchex




Working with heavy documentation requirements


In a previous entry, we looked at how to work with minimum specifications. Unfortunately, in practice, this is not always possible.

Let’s suppose you have won a contract to build software to manage medical records. The software would be used by the government to collate records and process relevant statistics. How satisfied do you think the taxpayers’ representatives would be with some minimal documentation and criterion for “it works”?

While even in this cases unnecessarily long form documentation is still useless, I have come to accept it’s also part of the constraints you must live with in order to practice software development.

All is not lost, in this entry, we will be looking at how to build software when heavy documentation is a must-have.

Consider documentation as a story in the backlog

For teams still struggling to adopt a technical practice such as unit testing, the advise I give is simply put it in your backlog and then have an acceptance test for it. This practice will hopefully nudge the team to using it consistently.

In the same way, it helps to acknowledge that documentation is work, thus have it as an item in your backlog. Not only will you be tickled to remember it, it also makes the cost of writing the documentation clear to everyone.

Use continuous integration tools

One of the riskiest parts of your application is in its deployment. Thus the running jokes on the idiot who chose to deploy the update on Friday 5 pm have in effect committed the team to work the entire weekend. Organizations have evolved documentation to help derisk this activity as much as possible. This includes documentation on how to stage, set up environments and deploy the application.

Thankfully, a lot of this work can be automated away by using CI/CD tools. By carefully setting up your environment so that not only is it replicable but a bot can do it for you, then you eliminate the need for documentation related to it.

Even if you are not familiar with CI as a technical practice, I would still encourage you to consider adopting a Platform as a Service Tool such as the ones provided by Google Cloud or Heroku. It will cost you more but the savings in development time and headache will be worth it.

Insist on requirements as a point of discussion

Unless you are reading for leisure, any other kind of reading is hard work. Furthermore, most books out there are just not worth reading. Now, if authors whose primary work is to produce reading material are not doing a very good job of it, what about developers who don’t consider themselves authors?

It’s then better to remind yourself and the organization you work with the point of documentation is to enable discussion between the various stakeholders not necessarily to get a comprehensive view of the workings of this system.

This slight change in wording means whoever is writing the documentation writes it with a particular person in mind and keeps it short enough to support a discussion without getting bogged down in details.

Work to understand the goals of the documentation

Rather than viewing documentation as another drudgery you have to go through, try to inquire why the organization cares so much about having such heavy documentation.

Sometimes, it may be an auditor who insists on a certain quality level. In such situations, having a one on one discussion with them would help you understand what their goals and for your team to work on how to meet the goals in an agile manner.

Follow your own process

Scrum and agile in general works but just like any other process, if you don’t abide by its principles, the results may vary. Thus in your quest to reduce unnecessary documentation load, ensure you are delivering working software, talking with stakeholders, in general, being a good scrum team.

In this way, over time, you will be able to make the case just because your process is remarkably different, you are still able to achieve the goals of the organization.

How have you worked with heavy documentation requirements in the past? Talk to me in the comment section below or on my twitter @jchex



A case for simpler project management tools


Today, there is a tool for everything. Furthermore, they are becoming, even more, fun and sophisticated. For a software engineer, this is very good news, after all, whatever you can automate should be automated. As software engineers, we are in the business of reducing as much manual work as possible.

Yet, I would argue for human relationships, more automation is not necessarily a good thing.

Project management tools come in various levels of sophistication. As an example, JIRA would be a highly sophisticated tool, Trello would be mid-range, pen and paper is as simple as you can get.

In this entry, we will be looking at why sophistication is not always for the best.

Brevity is key

Documentation is awesome. I certainly must admit there is something I find alluring about huge academic texts. It just makes the person pouring through them seem smarter than the rest of us mere mortals. Not to mention, there is some comfort to know its all captured.

However, over the years, I have come to learn the value of big documents ends there. In practice, no one reads the manual!

By definition, more sophisticated tools capture more data. For example, if you write your requirements in Jira, the story is likely to have much more detail than the same story in Trello. Even the structure and the relationships are likely to be more complex simply because Jira can do it!

Now when using the simple tool, all the richness will likely be lost but the final requirements will be much more accessible to human beings. Even better the analysts will be forced to more clearly write their requirements and open themselves up for discussion to elucidate on the missing details. Such face to face communication should be higher priced than any document you can conjure up.

You deal with inert information

When I worked at the UXLab, our boss used to say:

Constraints are awesome!

The fertility of this concept is amazing. Every single design challenge I have ever come across seems to become much clearer when some sensible constraints are imposed on it.

Modern tools fight this concept by appealing to an even more powerful mental feature, loss aversion. Loss aversion is the idea that we respond more strongly to losses than to gains. In this context then, faced with the possibility of either having all our old data which we can’t find meaning for or a clean slate to work with, we almost always chose the option in which nothing gets lost.

Inert information consists of facts about the state of the world which are no longer discernible. Think about the todo captured in a meeting three months ago of which today you have no idea what to make of it.

Simpler tools force you to think through this problem. For example, if your release board is literally a physical board with sticky notes, then as development continues, you must renegotiate what you wrote there purging out what is no longer needed. However, if you have a super-powered tool that can handle it all, then you are more likely to leave the stories which as a team you decided will not be executed for one reason or another.

Encourage everyone to participate

No one wants to look like an idiot. A sufficiently complex tool is likely to make anyone feel as such. The project manager probably has gotten past this through experience with the tool. Unfortunately, the rest of the team has not, especially for tools with a steep learning curve.

In a complex project such as software development, you want as much mental horsepower as is available to you actively contributing. A simple tool enables everyone not only to verbalize their ideas but also directly put them on the tool, thus building a sense of ownership.

Specialist tools can generate beautiful reports but will remain the purview of business analysts with little relation to the people who are actually building the product.

Resistance to change

Deep in our culture lies the doctrine:

More work = More virtue = More value

This doctrine skews us to value what we have put much effort into even when everything else in our environment is screaming at us how useless it is.

Don’t fool yourself, no one is immune it, whatever you have worked hard for, you will also work hard to protect.

Simple tools help mitigate the problem before it even becomes a problem. By its very definition, simple tools are easy to use and the artefacts generated thereof can as easily be recreated as they can be disposed of. This feature enables you to be more nimble with your tool and change it to reflect reality when its warranted without the extra burden of feeling you are destroying “work”.

Which tool do you use to manage your own projects? Talk to me in the comment section below or on my twitter @jchex