Over the past four years at Metro we have delivered one replatform, four redesigns, multiple native apps and built and sold an online casino. From these experiences we have iteratively built a process and environment that aids product development. An Agile mindset has helped the development team achieve a consistent output. This coupled with Lean thinking delivered growth that convinced the business to fully embrace our process. The below are 21 product development tips that were hewn in the trenches of failure we call learning.
1: Ensure everyone has a clear vision of the end goal
This needs to be concise, measurable and most importantly achievable. A strong reason behind why that goal was chosen will help motivation. Everyone should be clear on what they can do to affect the goal. This should be the main job of leadership.
2: Use small cross functional, self organising teams
Should have as much autonomy as possible in how they affect their goal. This is key to enabling faster decision making which increases learning velocity. Proximity is the best hack to maximise face to face communication. This is the most effective way to ensure a common understanding.
3: Timing is everything
The biggest challenge is building the right product/feature, at the right time, using the right technology. The biggest waste is building things that people don’t want or need now.
4: Focus on figuring out the next releasable step that takes you closer to your goal
Ensure it is small, releasable and gets you both closer to your goal and provides valuable feedback.
5: Prototypes are a great way to improve early and ongoing feedback
Paper/whiteboards are a great place to start as they allow the quickest iteration. Later prototypes are most effective when viewed in the medium they will be delivered in e.g. In browser/device.
6: Project plans should as high level as possible
They are great for making a high level view of major deliverables visible. If they constantly need updating they are too granular.
7: UX/Design should be 2-4 weeks ahead of development
Designing and building prototypes with a goal of getting as much feedback as possible before development begins.
8: What is designed and what is built are two separate things
Both should inform the other but there is no master due to constraints on both sides.
9: Just in time is the best approach to detailed planning
Any earlier can be wasteful due to risk of new data from earlier releases or prototypes. Pair up on ticket writing using face to face communication and attach any prototypes/mockups/wireframes.
10: Less is more with process once you have a mature team
An agile journey must start somewhere and a fixed process like Scrum/Kanban is a great place to begin. However as the team and process matures your aim should be to reduce this to the minimum possible for your environment.
11: Centralised communication is best done outside of email
12: Evolutionary architectural approach works best, complexity shows where work is needed
The simpler you start the quicker you can get real feedback. Avoiding over architecture allows you to combat scaling issues when required, usually by following established patterns. This avoids adding unnecessary complexity early on which can seriously hamper your ability to learn fast.
13: Micro services are a great pattern for a service based architecture
The ability to pick up, modify and release a service with complete confidence that it won’t impact anything else helps you move faster. They also allow you to prototype new technologies in a production environment. Focus on automation up front to minimise overheads of running multiple services.
The less we build the better we build what we do. Cognitive overload of working on multiple things at a time has a huge impact on quality.
15: Limiting work in progress is the best way to speed up delivery
Queues are very ineffective, the more queues you have and the more items they contain the worse they perform.
16: Product feedback should happen on a regular basis and have all stakeholders attend
Feedback should be constructive, open and honest. As we release everyday we have two demos a week and our Slack channel is constantly open for feedback. This is where work is prioritised, discussed and tweaked.
17: Data wins arguments
It’s ok to loose a battle based on opinion to come back and win the war with data. Make sure you are measuring the right things, this takes time but is worth the investment. Then look for anomalies or what I call “data smells”. Following these to their cause will give you great insight into your product.
18: Innovation needs time and space to happen which initially needs to be forced
Hacks days/afternoons are a great way to kick start this process. Give people the a fixed time with a clear direction and see what they come up with.
19: Beware of the curse of knowledge
Don’t get frustrated, embrace the fact that some people aren’t as far along the journey as you and help them take those next steps.
20: People should have strong opinions that are weakly held
An opinion is always useful to speed up the ideation phase. Logic around environmental constraints should shape the final decision.
21: Embrace your constraints
Each environment has a unique set of constraints. Use these to aid quick decision making. This should give you time to focus on what you need to change long term to be most effective.
During my time at Metro the only constant was change. We were able to embrace this and use it to our advantage. Iterative learning based approaches helped us maintain consistent growth. Delaying every decision until we had the best data possible kept our failures small and valuable. Building great products is about forming a team around an achievable goal and iterating based on the best feedback available at each stage.
Evolution of the Metro.co.uk homepage over the past four years