How to manage software development projects using Notion
I’m a really Notion fan. Until I don’t want to glorify any application, Notion is one of the most flexible tools that I have used, feeling comfortable with him at all times. In my first Medium post, I want to teach you how to put in practice some tips for managing software development projects using this tool. But, why use Notion when exists some applications that are more specific for these purposes? Here are some advantages:
- If you use Notion for other purposes, you can have all the information in on single place.
- You can invite other users easily, e.g. clients. This allows them to keep updated on the development status.
- Publish specific pages, like software docs, to be easily found by other users.
- Flexibility to create your own development processes. Do you develop with Scrum, XP or waterfall? All the methodologies are compatibles with Notion.
Don’t put the car before the horse
After all, we need to know all the specifications of the project on which we are going to start. There are some important characteristics such as team size, technologies that we are going to use, department protocols, company philosophy, …
It is also important to know the phases of the software life cycle. They can be resumed in 5 stages:
- Analysis. In this stage, we need to know all the information about the project. It’s so important to avoid doubtfulness and to make the idea as clear as possible.
- Design. When we know all the information about the project, we will design the firsts prototypes and mockups. These will implement a part of the design and functionality of the final product.
- Development. No description is needed!
- Test. This stage is so important. However, some team leaders o product managers choose to omit it if resources are limited (spoiler: goes wrong).
- Maintenance. The last phase. Once the system has been deployed and all tests have been passed correctly, it must be maintained (solve bugs, add new features, update libraries, …).
In the past, this software life cycle was applied in the waterfall model. Over time, it became clear that this development methodology was incompatible with some large projects. This is due to some analysis errors were not identified until the implementation stage, which made their solution extremely costly. On the other hand, new methodologies emerged, such as agile methodologies, which were adapted to other kinds of projects.
Once you know the most important information about the project, now you can decide whether or not to use Notion as a project management tool.
In this post, I am going to use my personal website as an example of a software development project. In my project, I am both the client and the developer and I opt for an agile and informal methodology, dispensing with unnecessary formalities and bureaucracy.
I usually have a column in my project dashboard with pages that contains important data about the project. These pages should be different according to the project, although you can take as an example some of the pages that I have:
- Information. General information about the project such as a description, deadline, problem to solve, …
- Featured links. Webpages, docs or articles that may be of interest for development.
- Requirements. Project requirements are conditions or tasks that must be completed to ensure the success of the project.
- API Keys. Notion is a very secure tool, but be careful of annotating secret API keys. Be sure that only the right team members have access to this page.
- Technologies. Information about technologies or frameworks that are used in the project development.
- Docs. Our software documentation. This page could be shared with the client.
- FAQ. Some Frequently Asked Questions that would be of interest to the product owner, stakeholders or developer team.
In the middle of the page, I usually set up a Notion table. This table contains information about the project versions, although it can be replaced by Scrum sprints or any other unit into which the work can be divided.
The properties of the table also depend on the characteristics of the project or the methodology that we are going to use. For example, if we are going to use Scrum as an agile method, we can add properties such as sprint name, state of the sprint, deadline, demo date, … Otherwise, if we are going to divide the work into versions, the properties of the table could be version name, version number, the main change of the version, the development status, …
Versioning and features management
In Notion, the table rows are independent pages. As we have seen in the previous section, these rows or pages could be versions, sprints or another way to divide the work.
In these pages, I like to add, first of all, the features of this version or sprint. For example: Add favourite book section. Also, I add a type property to know the importance of the feature (Is it a bug fix or a big characteristic?). This feature list could be implemented using Notion lists.
In the methodology that I use to develop my personal webpage, each feature could be divided into some tasks. These tasks should have a property called status which will be used to know if the task is under development, under test or completed. To implement this tasks list, I recommend use Notion boards.
If you find out something better, buy it!
Most of the projects I have worked on have been personal and in most of them, I did not have to meet deadlines, protocols or standards that might be required in bigger projects. The methodology presented here is only the best I have found for this kind of project, although the main feature of using Notion is that we can be as flexible as we want.
There are thousands of ways to develop software, although many teams insist on always using the same one. Studying the characteristics of the project and understanding what is going to be done is crucial to choose one methodology or another and Notion offers us the flexibility that few other tools can.
Did you like this article? Then you might like this one about the future of development.