If you ever dabbled in sports, then you probably are accustomed to the following phrase, or at least some version of it:
“It’s all about fundamentals!”
“It’s all about fundamentals!”
The same rule applies when attempting to embrace Agile software development; success is achieved by constant and efficient re-application of core methodology fundamentals, thus never losing track of principles which lie at the core.
The Agile Manifesto is compromised of 12 principles which along with its four core values form the foundation of Agile software development as we know it today.
Agile can work for a team of any size, and if you’re struggling after making the switch to Agile from waterfall-based methodologies, then it just means that you need to go back to the basics – work on those fundamentals!
We went over each of the 12 principles and what they mean to our software development division:
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software
Software is not developed for the sake of it being developed. We develop it so that it can aid and assist end-users; to perform tasks which would be otherwise impossible, to solve problems, to enhance the end user’s abilities or allow for tasks to be completed in a more efficient manner. Unfortunately, the pivotal aspect as to why we develop software is often lost amongst the dev-cycle noise, almost forgotten.
How can you re-align your software team with this principle?
Plan for less change (at a time), thus shortening requirement and feedback gathering processes. Which will enable you to take full control of the software development process, and steer it in the right direction – one suitable for the client.
Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
Changes can be applied at any time, at the start of the process or quite late into the development process and even NOW – don’t be afraid to make changes, especially, if the change implements an essential feature-set.
Don’t wait for the next system iteration or build update.
Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
Waterfall development methods are plagued by several issues and often times products will ship with an overabundance of documentation; under the guise of completing 100% of the requirements required. Unfortunately, once the development cycle has ended and the software has already shipped, all you had was a lot of documentation with little else to show for it – apart from owning the software in question.
Agile project management excels at shortening the process, mainly its planning and delivery phases by focusing on developing software instead of just planning for it or around its feature-set.
Thus allowing your software development team, and clients by proxy, to improve effectiveness and efficiency with virtually no downside.
Business people and developers must work together daily throughout the project.
Despite being obvious and essential to developing successful software, this principle doesn’t receive the recognition it should. Agile methodology’s pivotal point is centred around improving co-operation between business people and software developer; co-location is the best approach as it helps both sides to better understand one another (as well as which challenges each party faces), thus leading to more productive work.
Remote workers can use communication tools to get around limitations and essentially “be there” with the core team, thanks to the wonders of modern technology.
Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
Micromanagement has no place in Agile based project management as a team needs to be self-reliant and self-directed by design. Ensure that your software development team will be able to deliver on schedule whilst also having completed all project objectives.
The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
Co-location and remote work are the cornerstones of Agile project management.
However, instant communication is essential to your success, as it shortens the time between a question and its answer.
Teams need to be a part of the same environment, as it makes communication easier; most notably making suggestions, asking questions and looking for guidance.
Working software is the primary measure of progress.
The only metric an Agile software development team should be judged by is pretty simple – is it working as intended?
If a particular piece of software doesn’t work as intended, then it doesn’t matter how many lines of code it contains, nor how many bugs QA has found and fixed and let’s not to mention how many work-hours have been clocked – for the sake of all parties involved.
Software needs to work, plain and simple, everything else is quite frankly irrelevant. To spot a quality software development team just apply this simple rule – are they capable of continually delivering working software?
Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
Unfortunately, burn out is a common problem among software development teams, mostly due to industry specifics but crunch time also plays a part in this rather unwanted phenomenon.
Prevent this (or limit its impact) by limiting excessive overtime, it can’t continue infinitely without having a negative effect on quality – focus your efforts on bursts of productivity instead.
Adjust the pace your Agile team operates at by maintaining a balance between tiredness and satisfaction.
Continuous attention to technical excellence and good design enhances agility.
Code needs to be better with each iteration, therefore, cleaning up redundant or confusing code is a software developer’s most important responsibility.
Teams should focus on reviewing code whilst working on a project, rather than cleaning it up at a later time. It’s more efficient, plus “later” in this regards is also synonymous with “never”.
Simplicity — the art of maximizing the amount of work not done — is essential.
The KISS (Keep it simple, stupid) design principle, which has been first introduced by the US NAVY, can also be applied here. It shortens the time between comprehension and completion.
Avoid focusing on tasks which do not add value to your processes and are unsubstantial in the long run; “busy work” corporate culture adds no value and will only complicate things as far as goal completion is concerned.
The best architectures, requirements, and designs emerge from self-organizing teams.
Agile software development teams are your tech equivalents of specialized task-force units; self-sufficient and require next to no hand-holding. Challenges are dealt with by applying proper tools and coming up with ingenious tactics even against overwhelming odds.
However, a clear sign that the team doesn’t operate at full capacity is when a project manager is required to step in and micromanage – it’s huge red flag and teams cohesion should be reviewed, scrutinized and resolved.
A successful Agile team uses their own ambition as a driver for success.
At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Agile project management’s biggest selling point is the aptitude to self-reflect, review and adapts as necessary.
A well documented and tested solution, one which has been used for a long time doesn’t necessarily have to be the best one to use now or in the future – code becomes redundant and so do features and tools.
Back to the basics
Agile software development methodology provides enterprises with solutions to project management woes, however, it does come with its own fair share of perils; even an experienced project manager will get lost in this fast-paced and ever-changing environment.
Which is why it’s essential to keep Agile fundamentals in sight, as these core principles shape the entire methodology and can be used a safety-net in dire times.
If your efforts fail, simply go back to the basics and work on those fundamentals.