This blog post builds upon the two previous blog posts:
- Managing App Development discusses the strategy and process of developing an app.
- My Software Development Process discusses the tactics of developing an app.
This article discusses the roles and responsibilities expected of both myself and the entrepreneurs who hire me.
Agile Scrum is the software development framework that is my go-to guide on how to approach the development of software as a freelance programmer. The Scrum framework generally assumes a large team in an enterprise company. It requires modification to apply to freelance work and very small teams.
For example, this is a great summary article on Scrum roles and responsibilities. It identifies three primary roles:
- Product Owner
- Scrum Master
- Scrum Team
I'll describe those same roles in this article, but adapt them to the scope of a small, freelance team. The 'team' is usually made up of only me and the entrepreneur hiring me. In this case, I am both the 'Scrum Master' and 'Scrum Team' and they are the 'Product Owner'. The Product Owner has more responsibility than simply writing checks or getting a weekly status update. I wrote this article to communicate the responsibilities that are expected of them when they hire me.
Product Owner Responsibilitiesโ
To quickly summarize, here are the expectations I have for each client who hires me:
- We meet over Zoom at least once per week, or once every-other week. More often or less often interferes with the output of work.
- There are two primary focuses of our meetings:
- We work together to write down and document Use Cases, which describe what they want me to build for them.
- We review the Implementation Status sections of the Specification documents, so that they understand what the current state of development is for their project.
- There are two primary focuses of our meetings:
- They interact with the app in-between meetings, and use the meeting to give feedback on what they like and dislike. This is essentially 'quality assurance', and in small teams only the Product Owner can provide this feedback, since it is their vision that we're trying to manifest into reality.
- We work together in each meeting to create tasks, and to prioritize which tasks will be worked on before the next meeting. Prioritizing tasks is another critical role that can only be performed by the Product Owner.
Scrum Master Responsibilitiesโ
As the self-appointed 'Scrum Master', here are the primary responsibilities for that role within the scope of a small freelance team:
- I capture the Product Owner's vision of what the product should 'do', by writing a high-level, non-technical description of what they want and putting that into a Use Case document. This ensures we stay aligned on the high-level vision of the product.
- I export the ideas in the Use Case document into a series of Specification documents. These are low-level, technical descriptions of how the product will achieve the high level goals in the Use Case documents.
- I then generate tasks from the Specification document and assign them to the members of the Scrum Team.
- As the Development Team finishes tasks, I update the 'Implementation Status' section of the Specification documents to reflect how closely reality matches the specifications.
Scrum Team Responsibilitiesโ
In the case of a small project where I am the only freelance developer, I make up the whole Scrum Team. But the beauty of Scrum is that it expands to teams of any size. The members of the Scrum Team are the people with the specific skills to build what is needed. Scrum is used to help the team self-organize.
So when I am a one-man team, I am the one responsible for executing the tasks on the task board. If there are more people on the team, then the tasks will be assigned to different people. Other than that, the process does not change. People can be added or removed from the team at any time, as needed. It's common to add specialists such as graphic designers, front end developers, etc.