How to setup efficient development process

In highly agile teams it's more than significant to be able to move forward fast without breaking things and onboard new developers fast without unnecessary tedious tasks. Let me share with you a step-by-step way how to efficiently set up whole development process from A to Z which can be applied both for new projects or incorporated in your current active project workflows.

This methodology is highly useful for lead developers or team leaders on the projects who are responsible for both technological side of the project and for meeting the deadline, keeping the project within a budget and making sure the project continuously maintain adequate code quality.

Let’s say a new project is about to start and you are assigned as a lead developer for the project.

Gather all necessary information, materials and specification

The first step that should happen is to get briefed by the project analyst about the project criteria and characteristics which mainly are:

  • project specification - a comprehensive document describing every aspect of the project in very detail, both business-wise and technical-wise to make sure you know what you will be doing,
  • wireframes or UI designs - necessary if you’re working on an application with a UI,
  • hard deadline for the project and it’s milestones (typically defined in the official project contract),
  • project budget,
  • what team will be working on the project.

Outline a technological design for the project

After you went through the project specification it’s time to come up with technological design of the project which includes what technologies, patterns, methodologies, libraries will be utilised. Based upon that you will come up with a high level technological architecture of the project resulting in a tech documentation describing how the desired end result will be converted into code.

The documentation will commonly describe a domain model and it’s representation into individual classes, breakdown of the application into several modules and how these modules communicate with each other, 3rd party integrations, etc. What shouldn’t be also missing are UML diagrams and DB structure design.

Prepare a project WBS and a roadmap

To be able to start working on the project a delegating tasks to the dev team, the project specification needs to be broken down into a WBS (Work Breakdown Structure) which is a list of all actionable items that can then be assigned to team members. WBS defines what needs to be completed.

After a WBS is prepared, you also need to know when a certain body of work needs to be completed. That’s when a roadmap comes to help. It’s a visualised long-term plan of how the individual parts of projects are placed on a time line. It's typically structured into several milestones. Think of milestones as checkpoints on your way towards finishing the project.

WBS and roadmap is like your guide throughout the entire journey of working on the project, it helps you:

  • to stay on the defined path - you’re not deviating from the specification,
  • to meet the deadline and individual milestones,
  • to keep the project in budget.

How to prepare an effective WBS

Firstly determine which larger blocks or areas the projects consists of (top down approach). These blocks are in the agile terminology called epics. You can think of epics as larger body of work that contain individual user stories or tasks. User stories or tasks are the smallest units of work and these will also be assigned to the developers directly.

If you come up with a conclusion that there are more epics dealing with a common area, you can encapsulate them into an initiative. Initiative is an even larger piece of work that ties together epics.

The higher granularity of the WBS the smoother the development process tends to be. The dev teams can then work on the user stories in parallel and also it is much easier to review and test individual user stories than a very large bulk of a task.

Successful software project checklist

  • do a kick off meeting with the team
  • prepare a fine grained WBS with outlined milestones
  • arrange continuous delivery schedule (agile vs FTFP)
  • arrange regular meetings with stakeholders
  • automate as much as possible (implement CI/CD)
  • implement automated deployments and have strategy for rollbacks
  • setup code review process
  • monitor project progress (deadline and budget wise, decide how to act on deviancies)
  • setup project error alerting (e.g. via Sentry)
  • setup daily standups (organise live or async standups based on what suits your needs)
  • make sure to have a complete release plan and a rollback plan if things go wrong
  • have test scenarios written down for manual testing
  • continuously cover the code with automated tests if it’s beneficial from the long-term standpoint