Skip to main content

Project planning in a text file

Whenever you work on a project it is important to be able to plan it ahead of time. This holds true for small and big project, from planning a trip to the spa to building a spaceship. The small project plans can be maintained in you thoughts while bigger ones require tools to help you see the big-picture of the project and manage task at a lower level. There are projects which start with a fully prepared plan and projects which pivot overnight, thus invalidating any original plan. For the latter flexibility is very important, and tools like Trello offer a great solution because they can be adjusted to fit your project.

However, it may happen sometimes that the project starts adjusting to the tool or that you still want to maintain a bigger picture of the main points of the project. You may also need to produce a rough development schedule to serve as a long term road-map.

I have prototyped a tool (and defined a workflow) which allows you to plan such projects.

To better understand how it came to be, let's look at how it started. When I initially joined a project as a developer, I joined a Trello board with lists: TODO, Doing, Done. It was fine to get started, easy to understand and allowed me to move quickly.

Over time, the TODO list started growing. This was due to new ideas emerging and breaking up larger cards into smaller ones to tackle them more easily. Eventually, the TODO list had over 50 cards and it became very difficult to prioritize them. Moreover, then big picture was not available -- the project was just a continuum of cards and achieving goals was difficult.

We broke up the TODO list into a separate board called Planning, which contained lists for each quarter of the year. The idea with this board was to be able to plan the work over time, and achieve goals set for each quarter. Each weekly the upcoming cards would be moved to the Development board and tackled.

This worked fine for some time but had a critical flaw: planning the work for a quarter requires knowing how long each card is going to take. Trello does not offer any way to track duration of tasks. The result was that all the apparently important cards (and what doesn't seem important?) were moved to the list for the upcoming month/quarter, which grew quickly. Eventually, tasks from this lists were moved to later lists, and the workflow was one of continuously moving tasks between lists, instead of focusing on the development.

At this time the project grew and tasks could be groupped into separate components (e.g. marketing work, B2B product development, B2C product development, internal tooling, etc). It would be possible to split such tasks into different boards, but that would only hide the big picture, and more importantly, we didn't have a team to focus on each such component. A single team has to work on all of them, and be able to prioritize them effectively to achieve the business goals.

This is where the prototyped solutions starts coming to life.

The Planning board was reorganized into lists of disparate components (marketing work, B2B product dev, internal tooling, etc). Each list contains high level cards, such as (development of "B2B Android application"), which were holistic units with meaningful results aligned with the business goals. Inside each card checklists and descriptions were used to split the task into small, tractable work units. More urgent tasks were placed higher in lists, and less important moved towards the bottom. Because the cards now present major business results, there were now many fewer cards on the board which makes it easy to see all of them at the same time, and see the big picture.

After the reorganization, the Planning board was split into focus areas, each containing a list of cards.


Planning work for the following sprint required:

Example project planning file.
The sections Summary and Effort
planning are created/updated automatically
by the plugin after the file is saved.
1. Regularly reviewing the Planning board, and possibly re-prioritizing some tasks.
2. Select the cards to be work-on by the team. this was usually done by taking some of the top-most cards from some lists.
3. Review the cards, create smaller tractable work units using checklists.
4. Create cards for the small units of work, place them in the Development board and let the team take care of them (using a simple TODO, Doing, Done system of lists).

This change greatly increased the ability to see the big picture, but it made it harder to plan long-term work and create a road-map to share with high level leadership.

I set forth to augment this workflow with a longer term planning feature. And this is how I created a Sublime Text plugin called Project Planner.

The plugin works on a single file which contains sections with tasks. Tasks can be given duration (e.g. 2 weeks), tags (Design, Tony, Java), deadlines and flags (e.g. optional). It allows setting "work day" duration for each tag (for example, if a designer is available for 4 hours a day, set the limit of time spend on the Design tag to 4 hours).  When the file is saved, it computes a schedule with all the tasks according to their deadlines and duration. It produces graphs helping you to plan the work over months, and lists the upcoming tasks. Moreover, the tools allows to set higher weight to lists which matter more at a given time (e.g. B2B product development > internal tooling).

Because the tool works on a plain text file formatted with Markdown, it can be compiled to HTML to produce a pretty report which can be shared with others. Because the entire schedule is computed each time the file is saved it allows very rapid prototyping and organizing of tasks. Because it is a plain text file, it has a similar effect than working on paper: it just feels great.

Moreover, the plugin is able to sync with Trello. In Trello, set the duration on checklist items (smaller work units) instead of cards, thus mitigating the problem of defining the duration of non-trivial tasks.

Each card has a checklists which splits the task into manageable work units. This screenshot fails to show that each item contains some metadata like [Bac 3d] which is aggregated by the plugin and inserted into the planning file.

Although this tool was developed to accommodate the project planning the needs of Sentinel, I have released the plugin as open source and distribute it through the Package Control to make it easy to install from Sublime Text. This plugin may be useful to students struggling to juggle between school work, side projects and hobbies, and anyone working on different projects simultaneously.

If it sounds like something you could use, give it a go. You can find the plugin here. All in all, this plugin is just one more project planning tool out there, but it is one which serves us well at the current state of Sentinel. Maybe it will help you too.

Note: I have developed this plugin in my free time to automate some of the managerial aspects of my role at Sentinel, giving me more time to focus on things that matter and that I enjoy more.

Comments

  1. Thank you for the nice article here. Really nice and keep update to explore more gaming tips and ideas.

    AR/VR Game Testing

    Gameplay Testing Services

    Video Game Testing Company

    Video Game Testing Company

    ReplyDelete
  2. I am reading your post from the beginning, it was so interesting to read & I feel thanks to you for posting such a good blog, keep updates regularly.
    Project Management Apps

    ReplyDelete

Post a Comment

Popular posts from this blog

Basic cell counting and segmentation in Matlab

Counting cells manually is a tedious error prone process for humans. Given a large data set of microscopy images this task can be achieved much faster by means of basic computer vision techniques. In this tutorial we will segment cells from an image following a method similar to the one presented by Yongming Chen in 1999. The method uses basic morphological operations and the watershed algorithm to segment the cells. Nowadays better methods for cell segmentation exist. This method was chosen for its simplicity and ease of implementation.

We start with an image of cell-like structures by Anna-Katerina Hadjantonakis and Virginia E Papaioannou.

A = imread('cells.jpg');
We convert the image to grayscale:
I = rgb2gray(A);

To be able to extract the dimmer cells, it is necessary to perform some local contrast adjustments
I = adapthisteq(I);


Objects on the borders can be caused by noise and other artifacts. We can eliminate objects on the borders of the image like this:
I = imclearborder(…

A more confusing Internet with .brand TLDs

A few months ago, I wrote a post proposing to remove top level domains from the internet, as many people don't understand why we need TLDs. At the time I didn't know either.
Removing TLDs would simplify browsing an possibly increase security by reducing phishing sites that make use of URL similarity to gain visits to potentially dangerous websites, or sites filled with ads.
The ICANN, the body that manages Internet names, has for years been preparing something different but that produces a slightly similar effect than removing TLDs: allowing brands to register their own TLDs. The proposal may soon be approvedhas been approved.
Brands would therefore be able to register their own TLDs. Google could register .google a potentially powerful TLD for their services, like Google Maps: maps.google instead of maps.google.com.
Brand TLD don't improve short urls like google.com, but seem to be effective for use in subdomains.
Registering a .<brand-name> TLD will cost $185K, wh…