Im a mess. That isn’t just a report on my current mental state as I enter the third module of my coding bootcamp, it's a fact that has been true my entire life. Organization has never come easily to me, despite many many may efforts to the contrary. Because of this, I have learned that, in order to survive in the working world I have to develop strategies. Well, “learned” might be going a little too far. Let’s just say that Im mostly aware that mental strategies exist and sometimes I remember to use them. It is eternally tempting to dive into a project head first without taking the time to plan it out, and then get lost within it. After experiencing major organizational difficulties on my second software engineering project, I began research into what methods professional software engineers used to keep themselves organized. lt just so happens that these organizational issues aren’t isolated to me, but are fairly common in tech. Many software engineers use a system designed to help with
Kanban, in Japanese translates to visual signal. It is a system first developed for engineers at Toyota in the 1940s to help control the allocation of resources within the company. Toyota met with great success from this system and it was eventually adopted by many American companies. Software development teams have especially embraced Kanban as a way to efficiently improve communication and manage workflow.
One of the issues that I dealt with on my Mod 2 project was that I allowed the scope of the project to get out of control as I enthusiastically added features and user stories to it throughout development. While my intentions were good, all of these different tasks quickly become overwhelming. Kanban helps with this by giving us a simple concrete way to track tasks within a project, this is known as the Kanban board.
A Kanban board can be drawn on some paper, a whiteboard, or anywhere where you can put some sticky notes. On it you create columns which represent what is called your work flow. The work flow represents the stages your work goes through as you are completing it. Work flow is a very personal thing, and can be different for anyone. So far, my personal workflow columns are: “Backlogged,” “Today,” “In Progress,” “Stuck,” and “Done.” These are likely to change as I learn and adapt to the system. Inside of the columns go my Kanban cards, which I put on sticky notes. Each card represents a task that I need to finish as I work towards completing my project. While writing this blog, my Kanban cards had titles like “Find a blog topic,” “Research Kanban,” “Create visual aids,” etc.. For software development, cards often contain a single user story.
When beginning a project, the first task is to write out all of the Kanban cards that I can think of and place them in the Backlog conlum. This allows me to partake in the first principal of Kanban, “Visualize your work.” Once all of the cards are laid out in front of me I can begin to get an idea of the scope of the project. I can begin to prioritize features and tasks, and to put them into an order to allow for the most efficient completion of the project as a whole. Having all of the facets of a project laid out in front of me like this makes it easy to make decisions about how advisable it would be to add in “just a few extra features.”
Once I have built, edited, and ordered my backlog, the next step is to “check out” the cards that represent tasks that I can reasonably expect to complete that day and move them to the “Today” column. If working in a team, then multiple people would put their checked out cards in the today column so that the entire team could know what the rest of the team is working on
Once I’m ready to start working on my first task, the second major principal of Kanban comes into play: “Limit work in progress.” The theory is (And I can confirm this with many personal anecdotes) If you are working on too many things at one time, your attention will be spread out too thin to create work of quality. It is with that in mind, that the Kanban board introduces card limits in some of its columns. For my personal board, I limit my in progress column to two cards at a time.
My next column is called “stuck” and it is reserved for exactly what it sounds like. Sometimes it is good to put aside something that I am working on when I find myself unable to make progress, this allows me to stew on it for a little while and hopefully come to a solution via divine intervention. That said, the stuck column has a card limit of one and cards can only travel in one direction on the board, so if I find myself stuck on another in progress item, that means that it is time for me to really dive into my stuck item so that I can clear that space.
The final column on my board is the best one, it is simply titled “Done.” When working on a large project, it can be easy to get lost in the weeds and feel like you are making no progress towards your goal Having a done column lets you see in real time what you are achieving.
Software engineering teams around the world constantly drive towards the feeling they get watching Kanban cards migrate from left to right on their boards and, in my short time using one, I am starting to see why. Im looking forward to putting this too into use as I create further projects here at flatiron.
Top comments (0)