Once you know what it is that you want to build with your software project the excitement to get those features built often overshadows some project realisms. We understand that it’s a journey to begin development.
There are several steps that WorkingMouse clients progress through before any human written code is developed; from aligning on a problem at Brief to validating a solution in scope. One of the realisms I am eluding to is getting the project setup correctly before the first development iteration begins. At WorkingMouse we call this Iteration 0.
Iteration 0 is an estimated iteration that allows the development team to complete a comprehensive handover from the scoping team and get setup for success. It’s a vital part of the software development lifecycle as investing the time upfront mitigates risks or blockers to the project in development.
It is variable depending on the project platforms and complexities. For example, if there is no Mobile Application, then App store credentials are not relevant. Iteration 0 usually takes the development team between 3-5 days to complete.
Personally, I used to think this was a significant amount of time that was lost in feature development and would get frustrated with the time spent. However, I changed my tune when one of our projects became blocked by a third-party Application Programming Interface (API). It became a blocker for the development team and prevented them from completing a development milestone. Since then, I've ensured that all learnings are constantly fed back into our checklist. This checklist is delivered to our clients at the end of the iteration and the team can quickly reference back to it at any time.
Here’s our Iteration 0 checklist that we use at present. I have edited the checklist to remove links to our internal knowledge base and given an explanation of the links where possible in italics.
Iteration 0 Checklist
Iteration 0 is the setup iteration for each project. This is the time a development team has set aside to prepare for Iteration 1. It is important to make sure that all items are ticked off to minimise the risk of not achieving your Iteration 1 commitments.
|Account Setup Setup accounts and access to: JIRA (this is the issue and project tracking software we use created by Atlassian, an awesome Aussie company) Confluence (this is an editable Wiki that we use for project notes and documentation)|
|Update Partner URL's page Depends on "Account Setup" Add Application entry to Partner URLs|
|Design Handover Product success has presented their kitchen sink (Design Language artefacts eg. Buttons, fonts to use etc) and prototype for the project Development team has access to kitchen sink and design standards|
|Email Setup Depends on "Account Setup" Setup email account for sending emails from an application Record email account details in Application Partner Details page. Required Details: Email Host Port Username Password Protocol|
|Mailtrap Setup Create a mailtrap inbox for the project (if application) Invite the client(s) to the inbox (this is a fake SMTP email server we use to test system email sending in development)|
|Backlog Review Review the backlog created during scope for possible changes: Behaviours Model Entity Attributes Model Properties It's best to identify these issues early and get on top of them.|
|Backlog into JIRA Depends on "Backlog Review" Import Scope backlog (from estimations) into JIRA Includes Estimates (with risk, without allocation) Includes Priorities Includes Risk Ensure notes taken during estimations are visible on the issues We save our scope backlog in our estimations sheet: see our estimations article here|
|Codebots Customer Setup Customer with Codebots (eg. "|
|Codebots Application Depends on "Codebots Customer" Create the Application(s) Do a build (to setup the repositories)|
|Entity Model (this is where we model the Application information architecture) Depends on "Codebots Application" Create model (if it doesn't already exist) Review model (created during scope) for: Validation on attributes Validation on associations New behaviours released or updated since scoping|
|View Model (this is where we model the Client side Applications views link to the entity diagram) Depends on "Codebots Application" Create model (if not already exists) Review model (created during scope) for: Breakup of Pages/Tiles|
|Environment and Operations Setup Beta / Prod Environment (with SSL) Note any additional details for considerations or customisations Setup a BitWarden (Open source password manager) Group for Customer To do this, submit an internal support ticket Internal Ticket Details Title:|
|App Store Accounts Setup Apple Developer account Setup Google Play Store account Enrolled in the "Apple Developer Program Enrolment" This is recommend, even if not building an app, just to reserve the name of the company and app.|
|Apple Bundle Certificates Depends on "App Store Accounts" Setup Bundle IDs for iOS apps Once you've received access to the Apple Development Program, be sure to visit the Apple Connect account and add a new account. You will receive the following message: You have no eligible Bundle IDs for iOS apps... Follow the prompts to complete.|
|DUNS Number (DUNS and Bradstreet number required for corporations to release IS applications) Depends on "App Store Accounts" Customer has registered a DUNS number|
|Clone Repositories Depends on "Codebots Application" Clone the application repositories on all team member machines This is our GIT versioning. Read about GIT here.|
|Development Environment (via Docker) (effectively a way to efficiently run apps that are in development locally) Depends on "Clone Repositories" On all team member machines: Install Docker (Do not use Docker Toolbox if possible) Windows - Direct Download - Docker Desktop Mac - Direct Download - Docker Desktop Check installed and working Run `docker ps` Get development containers running In application dir, run `docker-compose up -d` Check URL SpringBot - "localhost:8000" C#Bot - "localhost:8001"|
|Development Testing Depends on "Development Environment (via Docker)" Get bot written tests running and passing locally on all team member machines Get tests running on Jenkins (Automation server for testing) Setup Application on Jenkins Wallboard|
|Development Debugging Depends on "Development Environment (via Docker)" Setup application debugging on all team member machines|
There are a few additional steps that we look out for when setting the project up. These are especially important in the latter stages of development and when releasing.
|Repository Initial Setup Depends on "Clone Repositories", "Email Setup" Initial theme setup Favicon Logos Email config DNS settings|
|Development Mobile App Depends on "Clone Repositories" On all team member machines: Setup Mobile App Get Mobile App running in the Android Emulator|
|Setup Sonaqube (helps write cleaner and safer code) Depends on "Codebots Application" Setup application static analysis on Sonaqube|
|Traceability Matrix Depends on "Codebots Application" Setup and configure Traceability Matrix Use one of the following options: Codebots Platform (CSV import) Jenkins (JIRA Integration) Manual Spreadsheet|
|Security Page (how we control user access and security via the codebots model) Depends on "Account Setup", "Codebots Application" Setup / update the Security page in Confluence Note all key security requirements Note key API allowances Note key API access limitations|
|Testing Third Party APIs (enables us to link the application with any other services Eg. Twilio for SMS sending) Document Third Party API details Test/Verify API access is working|
|Testing API Depends on "Development Environment (via Docker)" Validate that Application APIs are accessible and working via Postman|
|API Reference (our applications API) Depends on "Codebots Application" Validate that Library Reference documentation in Codebots is built / working|
In reviewing, I am sure you'll agree, its complex and there's a lot of moving parts! We're always improving our processes, but we hope you find this information useful for understanding everything that will need to go into your project.
If this list is a little to technically daunting, don't worry that's exactly why we're here to help!