Personal projects and "agile" working
Methodologies around workflow are a lot less cool and exciting than actual coding, but I've recently come to realise that they can have a big impact on how much I am able to achieve.
I honestly think one of the most important things I've learned while training to be a software developer is how to structure my workflow. This has allowed me to approach projects in a more systematic way. What's more, it really helps with co-ordination when I've worked in a team, allowing us to pull together, resulting in a far more coherent group dynamic.
Understanding and implementing an "agile" approach to my work has allowed me to develop skills that I anticipate will be very useful in my future career. Here's what I've learned, and how it can be applied by those of us in the early stages of our careers.
Start as you mean to go on, right??
Agile software development
The 2001 Manifesto for Agile Software Development outlined the values and principles of agile working. It places value on working in a dynamic, collaborative and reflexive manner, with an emphasis on producing software that works and satisfies clients.
For me, agile working is typified by an iterative development process, with goals set and evaluated in the short term in order to achieve an overall result in the longer term.
Linked to this is the Scrum framework, in which a project is broken down into its constituent tasks (known as the "Product Backlog"). These tasks are then addressed in a series of work periods called Sprints. At the end of a Sprint, the team reflects on the results, and then the next Sprint begins.
These ideas were created with professional software development in mind, and focus on a business context, but I've found that they apply to much smaller, personal projects. By breaking projects down, the agile approach makes complex projects much less daunting, as they become simply a series of objectives to achieve. It is a systematic approach to achieving the end result.
We have adopted this methodology in my software development bootcamp, and I've noticed a productivity boost and better co-ordination in the collaborative work we are doing.
Small agile projects
Through this experience I have come to realise that we can and should adopt these approaches, even on smaller individual projects done in our spare time. The best part is that it is very simple, thanks to GitHub's "Projects" functionality.
GitHub Projects allows us to organise the issues within a repository in a clean and easy to use fashion. Simply navigate to your repository, and click "Projects". Hit "Link a project" and select "New Project". You can then choose a view for your project. My favourite is the "Board" view, which takes the form of a Kanban - a very visual way of organising tasks. I recommend you have a play around and see which works for you.
Once your project is created, you can start adding tasks (or "items") to the project, which are effectively the product backlog - all the things you need to do to complete the project. I really like that in "Board" view you can drag and drop tasks into columns, making it clear which tasks are part of your current Sprint, which are still to do, and which have been completed.
I have found this to be an extremely helpful way of conceptualising my projects, and it has helped me keep my work on track.
If you've not encountered this way of working before, have a go! When you start your next project, break it down into a backlog of tasks and try to group them together into achievable Sprints. You may well find that it helps you tackle your work in a more structured way, and make your projects feel that bit more achievable!