Ever had a developer take a long time to produce something and then you find out it isn't right and contains lots of bugs? We've all been there. Agile software development is a way of producing software that makes this much less likely to happen.
Software produced in an agile way leads to better quality software, delivered faster and how you want it.
How do you adopt an agile development method for your Shopify store? Let's look at the agile principles and see how each applies to Shopify software development.
Customer satisfaction by early and continuous delivery of valuable software
Take your requirements and chop them up into small, self-contained pieces. Rather than a whole site redesign delivered at once, for example, break it down into each page type (homepage, product, collection etc.). And then chop it even further down into components on the page like the slideshow, new in products and search bar.
Get your developer to deliver each of these pieces individually. Ideally published to your live shop but if that isn't possible, a test shop.
By delivering small changes, frequently, you won't run into large delays or big problems with misunderstanding requirements.
Welcome changing requirements, even in late development
Truth be told, I hated this bit as a developer. Giving a nice piece of software to a client only for them to change their mind about what they wanted!
Agile accepts this as normal and expected. The good news is this means that you as a client get to change your mind!
This piece is important because until you see and use a design or feature on shop you don't know if it is going to work well. Coupled with delivering small and often, changing requirements are not a problem.
Working software is delivered frequently (weeks rather than months)
The time it takes to get from your requirements to a working piece of software is called the 'development cycle'. Long development cycles are death for growing businesses so do your best to set a pace of frequent delivery from your developer.
You can help your developer achieve this by agreeing that there may be a long list of things that you want them to do but you'll be happiest if they tackle one at once and give you small releases to live every X days or so.
Close, daily cooperation between business people and developers
If your developer is working full-time for you, a daily brief meeting called a 'stand up' is a great way of keeping your project on track.
This is not a normal meeting: there are some rules for the stand up so that it is a good use of everyone's time. Generally:
- the whole development team gathers along with stakeholders
- the stand up is held at the same time and place every day
- everyone on the team individually briefly says a) what they were working on yesterday b) what they're working on today and c) anything preventing their work from being done
- the meeting isn't a discussion, so anyone who has questions for anyone else notes them and asks them after the meeting
- it's called a stand up because you should stand up to keep the meeting brief
Try a daily stand up on your next project: I've found it to be very effective at keeping everyone close and cooperating.
Projects are built around motivated individuals, who should be trusted
It is your role as shop owner to hire talented Shopify experts and motivate them to do a good job. Smart people are quickly demotivated by micromanagement and pointless tasks.
As a non-technical shop owner it may be easy to look at things like how many lines of code are written or how fast they reply to your messages as a measurement of productivity. But they're poor proxies. Software development can be hard, so unexpected problems can happen where just writing one line of code takes hours. Developers often need to get 'in the zone', blocking out all distractions to focus on your task rather than replying to your messages.
Trust is key. Agile means you'll build this up through regular delivery of working code rather than micromanagement.
Face-to-face conversation is the best form of communication (co-location)
Your team is more likely than not remote. Tools like Slack aim to bring the co-location vibe to remote teams but have their own issues of distraction.
Instead a daily stand up plus video messaging afterwards between individuals with questions can bridge remote teams somewhat.
Working software is the principal measure of progress
Measure how your project is going by this along. In our case, working software is a change made to your live shop. Progress is not primarily planning or mockups, it's when you've been able to deliver something end-to-end.
Sustainable development, able to maintain a constant pace
Delays happen for perfectly good reasons where you or your developer are behind on something. Take care not to make this a frequent occurrence though. Whenever the pace slows, look at what was blocking and what you can do in future to remove that block as quickly as possible.
Continuous attention to technical excellence and good design
This one is tricky if you aren't technical. You can't judge the quality of code if you can't code yourself.
However you can influence how code is written. If you say to your developer that speed is what you value over everything else and pressure them to deliver faster than their estimates you're going to get poor quality code with corners cut.
But stress that you can wait for good code and balancing quality with speed is what matters to you.
Simplicity—the art of maximizing the amount of work not done—is essential
My favourite point of the manifesto! I was once working at a startup where a marketing manager came and asked us to build a fancy tool for managing Adwords to replace her spreadsheet.
As we were gathering the requirements I decided to see what other software was already out there to manage Adwords and found one. This software did 90% of what she needed and I came up with a workaround for the remaining 10%.
Not a single line of code written and $20k saved. A successful software project indeed!
For Shopify store owners there are many opportunities to do the same. Why spend thousands of dollars on some features where an app from the Shopify App Store will suffice.
The best developers re-use code from others, look for non-software solutions and alternative software rather than blindly churning out code as a solution to everything.
Best architectures, requirements, and designs emerge from self-organizing teams
If your team grows to more than a couple it is tempting to put into place a management structure and procedures: or should that be 'dictate'! :)
Instead it is much better to let your team self-organize. You've hire smart, responsible people who want to get the job done so they will naturally mould into a structure that lets them achieve that.
Regularly, the team reflects on how to become more effective, and adjusts accordingly
Especially when you start out with the agile method it can be tough to adjust. The principles here in the manifesto have been put into practice in lots of different ways and even formalised into other development methodologies.
Find the implementation that works best for you and your team to keep everyone motivated and delivering software little and often.
As the client we ultimately set the terms for how we want our team to work. It's rare to find developers who haven't heard of agile, but there can be the inclination to drift towards being less agile depending on how you want to run the project.
Agile projects just don't run into the problems of very late delivery of software that's wrong and full of bugs. Agile empowers you to gradually improve your shop to make it convert better.