Tech Tuesday: 9 Ways Utilising Components Could Skyrocket Your Agile Team
20 June 2017 |
Lou Bichard | About a 4 minute read
Refining your processes is only part of the journey towards agile. The very nature of processes mean that they are visible. They’re on most of our walls as kanban or scrum boards. As a result, they draw lots of attention. Yet, to be agile – we must also invest in our technology and it’s architecture.
- Agility is the ability to change direction, to respond to change.
- Acknowledging change can be be fruitless if we do not have the capacity to respond to it.
- Inability to respond to change can be caused by rigid technical architectures.
- A popular agile way of structuring your application is with a “component-based approach”.
- This approach is akin to building with lego blocks. Small and simple pieces of functionality.
- Building with components is at the core of most modern frameworks (React, Angular, Vue.js).
- Browsers are also adopting these ideas into native functionality.
However, regardless of the specifics of your approach – building in a component fashion has some significant benefits for constructing architecture that compliments your agile processes.
Why is a component based approach so beneficial?
- Hypothesis Lead Development – A page built of components is trivial to restructure. This allows faster changes when performing validation such as UX or A/B testing.
- Flexibility – Component based architectures adopt change better. e.g. You have an interface list of users: When you click a user, it takes you to a full page explaining about that user. What if you wanted to test different designs? Such as the page showing in a popover? With components, these changes are simple.
- Behavioural Driven Development (BDD) Friendly – Adhering to BDD is easy with components. You can store BDD files in markdown alongside the other files in your component folder. This makes the code easier to change by detailing it’s exact behaviours.
- Self Documenting – Components work with application programming interfaces (API, for short). API’s make components easier to understand for developers. API’s declare the instructions for component operation such as the data required.
- Agile Friendly – Building in components creates small, release-ready chunks. This promotes frequent deployments which fits well with a short agile sprint.
- Reduction In Complexity – Components encourage small files and small functions. This means easier: testing, reading and updating.
- Small Files Are More Searchable – We spend more time updating code than writing it. Finding code is essential to speeding up development time. Components are usually easier to identify with a quick search for file name.
- Easier Removal – It’s common you’ll need to delete code. When we delete code, we often forget to delete all the relevant counterparts, too. Components usually have grouped files, which are easier to delete. This leaves less code debris that can confuse future developers.
- Low Dependencies – Each component should act in as much isolation as possible. This reduces interdependencies within an application, making it simpler. A component should know as little about the world around it. By doing so, you increase reuse and lower complexity.
… and this is only the beginning!
As always, it’s different strokes for different folks. A component based approach might not be the perfect fit for your product.
Yet, it could be a big leap towards reaching agile nirvana.
Read More From This Author
Senior Full Stack Developer (London)
Champion software quality and technical vision for AND and our clients, work on large-scale projects and help junior and mid developers grow in their roles.I'm Interested
Full Stack Developer (London)
Put your development expertise to work, building remarkable, digital products in Agile environments using a variety of languages and frameworks.I'm Interested
Tech Lead (Reading)
Bring your expert tech knowledge to the table to influence the direction of projects, whilst coaching and your team through engineering best practices.I'm Interested