How the 12 Agile principles translate into our daily work
When the Agile Manifesto was introduced in 2001, it brought a mindset shift into how software development projects are done. During the past 20 years, the Agile Manifesto found its way into other non-software development projects: marketing, operations, and leadership. Different teams were able to pick up on the shared value that the Manifesto brought and apply it to their respective fields. The Agile Manifesto became ingrained into everyday work, and tools that relied on Agile Principles helped evolve people’s work into new and more adaptable ways.
What does the Agile Manifesto say?
We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on
the right, we value the items on the left more.
The Manifesto, translated into Principles, had a tremendous impact on how we develop software, and here are our observations.
1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
Shinetech teams have an established delivery process that brings software to life quickly and efficiently. Since we always agree on how long a development sprint will last (usually 1-2 weeks), we deliver a working software iteration each week and send it over to the customer for further testing after it passes our tests. The emphasis is on iteration and constant improvement.
2. Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
During the development, customers might reconsider the features they want to include in their software. Shinetech developers understand that, and, since our work is divided into sprints, it’s not a huge problem to expand the features we need to add to the software. It comes down to helping our customers achieve and retain a competitive advantage with the software we are creating, not hindering their progress. We also pay attention to scope creep when we add new features, keeping in mind to consistently distribute the workload than allow for development processes to break down.
3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
This principle essentially says that teams need to deliver value continuously and in short time intervals. Thinking in frequent value delivery pushes development teams to look for reducing the time spent on planning the project or writing supporting documentation; instead, they focus on actively creating the software. Software development is much more than just writing code; as such, Shinetech teams try to find new ways to bring value to the customer.
4. Business people and developers must work together daily throughout the project.
To make great software, we have to understand its intended purpose thoroughly, the value it will bring, and the people that will rely on it. Agile allows Shinetech teams to collaborate with other stakeholders closely and ask questions that will help uncover the software’s unique value propositions. We have seen that cross-functional coordination between Shinetech developers and the customer facilitates improvements, delivery, knowledge exchange, and performance.
5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
In Shinetech, we have a rule – our developers choose the projects they want to work on. It is up to them to recognize how they can add value to the project. By approaching software development this way, we don’t risk having unmotivated developers join a project.
The environment we have been nourishing in Shinetech for the past 20 years today provides the best support for the developers to work, grow, and thrive. We pay extra attention to creating learning and qualification opportunities for our developers, fair and transparent compensation, and support of the whole Shinetech infrastructure. That is why our developers can focus on the task at hand and have complete trust from the company and the customers that they will get the job done!
6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
Shinetech developers apply this principle through various practices, such as standup and sprint planning meetings, frequent demonstrations (usually every Friday), and improved collaboration. We also work with our customers abroad within their headquarters, especially during critical launches. We also use collaboration tools such as online Kanban boards and Jira to allow complete transparency for our customers to track progress. For meetings, we use Skype, Zoom, Slack, and other tools that help with consistent communication, both face-to-face and in writing.
7. Working software is the primary measure of progress.
Shinetech developers measure progress and success only based on the quality of the software they produce. Everything else – hours, meetings, discussions, or research – aims to help us build better software. Of course, the hours directly translate to a developer’s wage, but the primary focus is on the effectiveness of the product we are building. This principle comes to light when we are required to build custom software; the only measure of progress we follow is how functional that software is week after week.
8. Agile processes promote sustainable development.
Since we constantly focus on creating working, functional software, our work pace needs to be sustainable. We expect our developers to be valuable contributors to the software they are building for the long term, so there are no crunch times and redundant meetings. It is the developer’s responsibility to focus on creating great software, and it’s Shinetech’s responsibility to facilitate our developers’ work processes by doing non-critical tasks.
The entire principle also mentions the following: The sponsors, developers, and users should be able to maintain a constant pace indefinitely. The development pace doesn’t only fall on the developers; all parties impacting the software being built must agree on the expectations for steady, regular delivery and value addition.
9. Continuous attention to technical excellence and good design enhances agility.
Shinetech developers follow this principle because it directly impacts the outcome of the software they are building. We always think about how we can bring a customer’s idea to life in such a way that the solution is logical and easy to understand. Later, when there is a need to change or update the code, we or anyone working on that software won’t have a problem updating it as long as they understand the logic and have the know-how to do it.
10. Simplicity is essential.
Keeping things simple is a motto among Shinetech teams. And this principle cascades into the whole mindset of how we organize meetings, use tools, set up projects, and develop software. Doing meaningless tasks for the sake of doing them is not the way we work. Instead, we focus mainly on the goal and the fundamentals that will help achieve that goal. Of course, we test the solutions and our assumptions, but we aim to keep it simple when developing software.
11. The best architectures, requirements, and designs emerge from self-organizing teams.
Self-organized and self-motivated developers are a staple of Shinetech. We have a flat team hierarchy, and team leads or project managers are developers with the most in-depth knowledge of the customer’s business and their respective industry. Shinetech developers who choose the project they want to work on are already self-motivated. The flat structure allows them to self-organize and be autonomous in their work, helping them to provide the most value.
12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
The most crucial aspect of working on a project for us is to move fast, learn fast, and get things done frequently. The things we figure out and test throughout the week are summarized in the team meeting at the start of the following week. We also discuss our learnings with the customer frequently – they either join team meetings or, if they cannot join, we provide a detailed update for what we learned and give suggestions if our findings deviate from the arranged plan too much.
As Shinetech teams learn more, each member’s efficiency and effectiveness also grow. We learn more about the target customers and markets of our customers, how to improve their processes with little to no disruptions to the business, and better understand why the software we create is so essential to the customer. There is no room for ‘we’ve always done it this way’ in Shinetech teams. Instead, we seek to provide solid support to our customers. That’s why, when customers come to Shinetech, they get a long-term partner aligned with their goals.