Modern engineering organizations pride themselves in practicing agile software development. This innovative (though not-so-new) approach enables business to quickly respond to customer demands, to remain competitive and to recruit professional developers who want to work in an up-to-date environment. Does that sound like you or who you want to become? Then this post is for you.
In this post, we provide the ultimate checklist for engineering departments who want to accelerate their agility. It’s based on our own agile development experience - our release cycle is currently one week long. So if you’re just starting your agile development journey or you’re already knee-deep and you want to get better - this checklist will help! We hope you find it useful.
What is Agile Software Development?
An agile workflow is a software development process that prioritizes speed and bite-sized feature delivery over long-term planning and multi-feature releases. Agile workflows usually consist of “sprints”. Sprints are short-lengthed iterations (hours/weeks) where developers work on tasks, then immediately test and release. This is in contrast to the waterfall model, where planning, development, testing and release could take months and years.
The main advantage of agile development is that customer feedback is immediate and is used for planning the next sprints. In agile development workflows, bugs are fixed quicker, code quality is better and customer satisfaction is higher. As you can see, agile processes benefit organizations and their customers, and provide a more dynamic work environment for developers.
Now let’s see how to become an agile engineering team and department.
The Agile Checklist for Engineering Teams and Leaders
1. Reexamine your mindset
While this post is a checklist, we’re actually contradicting ourselves. The original Agile Manifesto values don’t talk about a set of rules to follow, but rather they propose ‘agility’ as a concept or a framework. The agile concept is all about dealing with uncertainty and prioritizing collaboration and responding to change, over lengthy processes and sticking to rigid plans.
Therefore item #1 on our checklist is to make sure you understand that. So, while you will have a plan and tools and a process to follow, you need to stay open to the mindset of change, flexibility and spontaneity. Deal?
2. Decide on Your Agile Method
With agility being the concept, different methods were developed to implement it. There are a number of types of agile methods, including Scrum, Kanban, XP, FDD, and more. All these methodologies are based on the same agility principles, with slight differences. Many times engineering teams flow between different methodologies according to the requirements.
Scrum is the most popular agile methodology. In fact, people often use “agile” and “scrum” interchangeably. The reason scrum is the most popular methodology is its simplicity and effectiveness in developing complex products.
Before choosing, research the different methods and decide which one is right for your teams, based on your structure, business requirements and personal preferences.
3. Plan the Development Cycle
The agile method you choose will determine the development process you implement, which in turn will dictate what your week will look like. Overall, the agile lifecycle consist of:
- Concept - Selecting and prioritizing projects
- Inception - Determining requirements, allocating resources, deciding on responsibilities and schedules
- Construction/Iteration - Development and UX design within the framework of the sprint.
- Release - QA testing, debugging, preparing internal technical documentation, and releasing.
- Production - Ongoing support for the release.
- Retirement - End-of-life and removing the system from production
The different agile methods have different internal steps for each phase. For example, XP (extreme programming) includes daily standups, FDD (Feature-driven development) focuses on documentation, Scrum has sprint planning meetings, etc.
Build a new development cycle schedule and align all stakeholders on how they should work and what they should expect from now on.
4. Determine the Agile Roles
The development team will be restructured based on the agile method you choose. For example, in scrum, work is divided into sprints. The features in each sprint are assigned to the team’s developers, with clear tasks and goals. Therefore, when choosing scrum, the engineering team will be divided into sprint teams.
So after choosing your method, assign the required roles to the right people in your department. Continuing with the scrum example, you will need three major roles:
- Product owner - this person identifies and prioritizes product features, represents the end-user, writes user stories, manages the backlog and is responsible for ROI.
- Scrum master - this person supports the development team and the product owner to facilitate agile work.
- Development - the team that builds, tests and designs the product. Includes developers, engineers, UX, etc.
Together, these roles comprise the scrum team.
5. Evaluate Your Tools
While the manifesto for agile software development and its 12 principles prioritize individuals and interactions over tools, you will still need tools to develop and deliver. Choose tools for the following processes:
- CI/CD - the ongoing automation of the integration, delivery and deployment stages of software and app development.
- Testing - Continuously checking the quality of the software to eliminate regressions. Includes unit testing, performance testing, and more.
- Source control - for tracking code changes, like Git.
- Team management - for managing project tasks and development, like ClickUp (which we use and love).
- Automation - try to to automate any process that you can, to shorten timeframes and keep your developers focused on more advanced work (and also because no one likes to perform these mundane tasks).
6. Decide on Metrics
The data-driven world we live in enables us to improve through KPIs, and agile processes are no different. To choose the metrics you want to track, think of what will bring you value and help you achieve your goals. If you’re not sure what these goals are, brainstorm with the business leaders of your organization.
Metrics you can track:
- Cycle time
- Code coverage
- Number of bugs and regressions
- Number of support tickets opened
- Number of tasks completed
- Number of features delivered
- And more
Write them down and create a dashboard for tracking them. You should visit this dashboard at the end of every sprint, at the very least.
7. Run and Optimize
Once your infrastructure is all set, you have your goals and metrics, your team is restructured and everyone is aligned, you can start working in an agile manner. It is recommended to start out with one project while slowly easing your developers (and your customers) in, until they get used to this new culture.
In addition to development scrum meetings, also hold daily meetings to provide and hear feedback. And above all - be prepared to be flexible and make changes based on your specific teams - after all, developing in an agile process means you should be agile as well.
Spotlight: Agile Documentation
Continuous documentation of code is essential for software development agility. Good documentation ensures projects are never slowed down because of outdated information, new developers onboarding or project switching. As a result, updated documentation helps ship code faster and within the sprint timeframes.
But like we said, no one enjoys the mundane tasks of code documentation. The solution? Automation.
To make your documentation automated and streamline it as part of your agile development process, you can use Swimm. Swimm integrates with the IDE and CI pipelines, making it easy to document on the fly. Beta access is now available here.