Part 1 covered project rationale and Part 2 outlined my project set-up workflow. Today's post covers my use of GitHub Projects.
GitHub Projects
I like using GitHub Projects to plan and guide the development process. I originally came across GitHub Projects during my time in the PyBites PDM program and have been using it for projects ever since (Thank you to Robin Beer and Bob Belderbos for putting the training video together). I can't link the training video but here's a link to an article by Robin on the topic. GitHub Projects has had an update since the article was published but it still gives a good overview of the functionality.
Using GitHub Projects offers me the advantage of gaining a visual overview of project status and significantly reduces the mental burden by having all project planning mapped out in a single space. At a glance I can quickly see what issues are prioritised and the progress I've made. I find it extremely motivating to see issues move into the 'Done' column.
Additionally, the ability to link project cards with issues allows me to capture and document my thought process throughout the development of the project. I originally came across this idea after watching Simon Willison's fantastic DjangoCon 2022 talk Coping strategies for the serial project hoarder and have seen a similar approach recommended in 'Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman' under the 'Record What You Learn' pattern and in the 'Pragmatic Engineer' in 'Topic 22: Engineering Daybooks'.
In Simon's talk he discusses how he uses the approach to support developer productivity (09:58 in the video) or as he calls it "Issue-driven Development". As Simon mentions, it is basically a conversation with yourself as you capture new thoughts, ideas and pieces of inspiration related to the project. It also serves as an excellent future reference when continuing work on an issue or revisiting a topic at a later date. I've found it useful to capture information I've found in articles or blog posts that I think will be useful for the project at a later date.
Project Board Example
Here's my current project board. I know, a little empty! But this will soon have more cards as I spend more time on the project.
Issue-driven Development Example
And here's the start of my thought process regarding the implementation of the esd #1
card in the 'Todo' column of the project board:
And the continuation of the development conversation with myself by drafting a first implementation of the AtheteProfile class: