TLDR; I’ve created an open source project called Grimoire that serves two purposes: provide a digital companion for tabletop RPGs; and provide an exemplar for software engineering techniques that I have come to adopt over the past two decades of my career. Check it out at the github repository
A New Pet Project
Whenever someone asks how do I learn new technologies. I tell them that I take the time to implement a pet project using that technology or approach. Knowing the project inside out allows me to focus on learning the mechanics of implementing it with the new tools. Grimoire is a new pet project for me. And there are a lot of Software Engineering ( and even Software Business) concerns I want to touch on while building and discussing this application.
I don’t know where this experiment will go. Hopefully, the insights I share as I develop and discuss the project here and on social media will be useful for anyone who comes across it.
Here’s an excellent series of posts discussing how Github works. Not the website but the employees developing the website and supporting infrastructure.
He makes very excellent points in the series it’s worth a read but let me boil it down here.
Github is a distributed team, intentionally so (it helps them feel the pain of their target consumers). A traditional office environment (and in your case a Pseudo-office environment) is not very conducive to how creators work (developers are creators, just like painters, sculptors and writers we just use a different medium). Could you imagine if Michelangelo was told “you have to be here from 9-5 Monday to Friday to do your job”?
Having set hours to work stifles inspiration. I’ve had ideas bloom while taking a shower or relaxing on the couch during the weekend. Good luck having that magic moment recreate itself on Monday morning.
The “close quarters improvement” to collaboration is a lie sold by companies that wanted to save money on office space. If there is a problem that someone is having, when they’re sitting right next to you the tendency is to interrupt you. Basically what they’re doing takes precedent over your tasks. Removing proximity allows you to address another person’s needs on your schedule. In many cases the issues are resolved by the time you respond.
I’d say give a strong attempt at working in a distributed fashion. If you’re using Scrum, perhaps come together during the daily stand ups, sprint review, and sprint planning sessions. Other than that, you don’t need instant communications with each other.