Responding to rapid alterations in the project requirements in a smooth and efficient manner is what every business organization aspires for. Agile development methodology can bring that efficacy in the web development for an enterprise. Together with Drupal 8, going agile can pay dividends in handling development processes.
Sprint planning, swift feedback, and shorter release cycles ensure more visibility into the project development. That is why agile methodologies can be a great option for the business enterprises trying to incorporate best practices into their project management.
But what was the evolution of this methodology like?
How did Agile development come into being?
Continuous delivery of software product to the customers is what every organization aspires to achieve through best software development practices and better customer retention policies.
Delving into the origins of Agile and how the software development has evolved over the years will help us understand how it came into existence.
Application development crisis
The time taken from initial stages of application development to its actual deployment was huge during the 1990s. That was the time when the PC computing was gaining ground in the enterprise sector. It almost used to take about three years to get an application development to the deployment stage. Such a colossal lag led to a monumental application development crisis.
This was considered a crisis because businesses did not move at the same pace as the application development did. Business requirements or their complete business setup may change in three years. So either the projects got canceled midway or they were rendered ineffective even after completion. Completed projects did meet the objectives and goals that were initiated at the start of the project but the organization’s needs changed during that long period of time.
This frustrated the business leaders and the need for dramatic transformation was mooted.
Birth of Agile
The frustration of thought leaders from the business world paved way for the Snowbird meeting in Utah in 2001. Those who shared the common thoughts on the need to change the way software development activities discussed in that meeting. And this was not the first time these people have gathered together. They also met at the Rogue River Lodge in Oregon in 2000.
Agile, as a term, was not even a part of the discussion. It revolved more around ‘light’ and ‘lightweight’.
Snowbird meeting had representatives from Extreme Programming, Scrum, DSDM, Adaptive Software Development, Crystal, Feature-Driven Development, Pragmatic programming and others who wanted to bring a change. This led to the birth of a manifesto for agile software development.
Continuous delivery was the aim of the discussion. They wanted a software development method that helps in quickly building a software product and delivering it to the user. A quick delivery approach had a couple of meritorious factors. First of all, it allowed users to reap the business benefits of the newly deployed software faster. Secondly, they could give quick feedback on the software functioning and its scope.
State of different software development practices
Waterfall
From 1970 to 1990, most of the evolution of software engineering practices and their theories shaped up. This called for equating software engineering with physical engineering. An idea like this led to the development of a methodology called the waterfall.
Waterfall approach had a crystal clear definition of project workflow from requirements to deployment. It stipulated that once the first step of the project development - requirements - is complete, only then next step - functional design - can be worked upon. If the functional design has been framed, then you can head to detailed design and so on. So, like a waterfall, which can’t go uphill, project development can seldom go back to an earlier stage for modifications.
This approach instilled a sense of organization and engineering practice to software development. For instance, Civil engineering and mechanical projects seldom change over the period of decade or more. Designing a skyscraper or a flyover bridge won’t require changes in a year or two.
The original purpose of the waterfall was to permit whatever the changes and modifications are required to be made in a project and also allow going back to the previous stages to reconsider few things as per the latest business model. Constraints like budget and schedule made it difficult to reconsider previous stages and stay on track with the original idea.
But such a heavy-weight approach was high in praise among the software development groups. More time spent during the planning of project was considered to be leading to less time in its execution.
Problem with heavy-weight planning
Firstly, defining the software precisely is not the same as other engineering practices. You can describe your business requirement and the workflow and want a software to enable those business needs. But you can’t accurately let the software designers know what features and functionalities can be inducted and how they should work.
Secondly, mistakes do transpire, even after heavy-weight planning, when you are trying to convert your requirements into specifications and then implementing them.
Alternative software development proposals
Waterfall model apparently dominated the period from the 1980s to 1990s. But the industry leaders were trying to look for alternative approaches to meet the fast pace at which the businesses were growing.
Rapid application development (RAD) was mooted to minimize the time taken during preparation stages and quickly get on to development stage so that the working prototype could be seen in just a few days or weeks.
Also, iterative software development, which has its roots in at least 1960s, began blossoming in the 1980s. Its working principle revolved around incremental improvement where you start working on the project, scan it for any improvements, make modifications, and then scan it again for improvements.
Most important work on iterative software development was the spiral model. In this, the project kicked off with a very few features and functionalities. Eventually, as the project work got bigger and bigger, more capabilities are added.
In the 1990s, scrum process was propounded. Its core concept was that intricate project development should be given to a small pool of team with only objectives and not specific assignments for best results. Complete freedom should be given to the team to find the best ways of fulfilling those objectives. Also, it followed the iterative software development cycle to deliver software prototype quickly.
Agile Manifesto was the best that came out of all these efforts from the thought leaders with its clear and succinct principles laid out for software development.
The Agile Manifesto
A question on Quora reads - “What is an Agile software development methodology, in layman’s term?”. Agile development methodology is a software development practice. Instead of the sequential waterfall-like approach, it uses iterative and incremental approach to manage project development. Agile handles uncertainties in project requirements and provides a working model in sprints.
When thought leaders established The Agile Alliance, they formulated its key principles.
Responding to changes and not following a set plan
- Unlike waterfall approach, where the long planning process might lead to ambiguities in a later stage, agile approach scales with business growth and enterprise challenges.
- It responds to alterations so that every member of the team is aware of the proceedings in a project and are very clear about its progress.
- It divides the tasks of application development into short time frames called iterations or sprints. These sprints typically true one to four weeks of project development and consists of all the stages involved. It comprises of stages like planning, project requirements, functional designing, coding, and testing. After each sprint, the working model of the project is presented to the stakeholders or product owners so that the next iteration can be performed.
- Such flexibility permits it to have a short-term planning in place and implement the most significant functionalities first. So, apparently, it does not remove the planning process altogether and just becomes more adaptable to the alterations to mitigate the risk of project failure.
Meeting the demands of the customer rapidly
- It's important to stay in the present and not think about too far in the future. The state of the market is volatile. You won't know what solution customer might need in the future for sure.
- Being adaptable, it can help you incorporate the feedback collected from customers on a regular basis after each sprint.
- No matter whether it complies with what your product owner had in their mind, you will get an idea of what your customers are looking for. To meet the demands of the customer and product owner, this methodology lets you adapt to the changes at any stage of development.
- User stories and use cases are integrated into the software development. Scenarios that users follow to attain their objectives comes under user stories and the ways they use to accomplish that goal using the product comes under the user cases. Clearly, it places the customer in the epicenter of the development process.
Developing a working prototype
- Planning, preparation, and proper documentation are very important in agile methodology as well. But it is pointless if it does not lead to any substantial result. To makes things more visible to the users, developing small working prototypes of the product can pay dividends.
- Here, documentation becomes key to your project. You need to clearly mention what counts as the working model of your product before the commencement because it differs from project to project.
- Efficacy in continuous delivery of the product is measured by the speed at which it is delivered. Again, documentation plays an important role here. Jotting down only the most useful information in the documentation stage which will be used shortly after it is documented is of utmost importance.
Focussing on effective communication
- Emphasizing on people and interactions does a lot of betterment to your team performance. Agile methodologies stress more on interactive sessions like stand-up meetings and pair programming.
- Having an encouraging and supportive environment and a strong leadership brings out the best from a team. Agile practices strive to build trust among the team members, promote transparency, create common objectives, mutual respect within the team, and encourage commitment to the product development.
What are the different agile frameworks available?
There are several agile project management frameworks being used for efficiently and rapidly delivering projects.
Scrum
This is considered the most important implementation of this methodology. It provides control, direction and, structure to the teams working on a project. Three main roles of the scrum teams include product owner, scrum master and a cross-functional development team. Product owner takes the complete responsibility for the effective delivery of the iterations and its success. But the scrum master is an integral part of Scrum and ensures the best practices and continuous delivery is incorporated.
The daily stand-up scrum meetings are one of the most influential aspects of Scrum. It is a brief meet where the members talk about their yesterday’s work, their today’s goal and the arduous tasks that they need to overcome to finish their tasks. It makes them aware what each person on the team is up to and how can they work things out collaboratively. There are also periodic meetings for planning each iteration, their demos, and addressing limitations.
Kanban
Like scrum, its main concept is based on incremental development but is different scrum management. Kanban does not offer a predefined role to the team members. It working principle states that you can start off your product development with what you have and change how you function accordingly. Unlike Scrum, there is no set of actionable items for iterations given to developers.
Kanban lets the developers frame a project workflow of the development that helps them to pull out a single action item. This makes sure that work-in-progress is limited to the single action item for all the team members. This makes sure that continuous delivery of software is maintained without having to wait until the iteration drop. Furthermore, developers can dynamically improve code on a daily basis.
Scrumban
As the name suggests, it is the amalgamation of Scrum and Kanban. It uses the prescriptive nature of Scrum and improves the project workflow using Kanban. It is most commonly used on development and maintenance projects. Teams wanting to minimize the batching of work and adopt a pull-based system can benefit from Scrumban.
It gives the teams the flexibility to adapt to the changes in a project development meeting the stakeholders’ and production needs. It was created as a means of transitioning from Scrum to Kanban. For software development teams, immediate shift to Kanban can be difficult. Scrumban offers the best of both worlds via continuous improvement in Kanban without abandoning the structure of Scrum.
Extreme Programming
It is sort of an offshoot of Scrum. This methodology improves the quality of code that will be delivered by the team. It encourages sprint planning and frequent verifications in the form of pair programming and code reviewing.
While code reviewing involves frequent cross-testing, validation of code quality and the best practices, pair programming promotes team collaboration and effective communication between the members.
Lean Development
A lean approach to software development encourages in creating a minimum viable product(MVP), that is, a product that is ready to be released to the market. So, delivery speed of a product is an important factor of this approach. More speed ensures that fewer mistakes are committed and fewer resources are spent.
It follows an iterative and incremental approach. The whole process is divided into sprints where each of the sprints will include discovering new ideas and proposing assumptions to be verified by the clients. Once agreed by the clients, then they move on to the designing of MVP in short time frames and set the scope definition for designers, developers, and QA professionals.
Feature-driven Development
A pragmatic software process, feature-driven development is architecture-centric and emphasizes on achieving the objectives of the client. Features are a significant aspect of this methodology and act as the primary source of input in the project requirements and its planning.
It supports multiple teams working in parallel and every aspect of a project is tracked, designed and built by a feature. It is highly scalable in a large team or a big project and requires the services of a project manager or a chief architect.
How do we benefit from agile methodology?
- Project development process starts quickly and yields a working prototype within a few sprints. So, the product reached the market quicker which results in the faster return on investment.
- Customer collaboration is the key feature of agile methodologies. It makes sure that users are satisfied with the end product and reduces project failure. The interaction between the team members builds mutual trust, enhances transparency and ensures that first functionalities that are to be implemented are the ones with the biggest value for the business.
- Project requirements are converted into user stories and test cases which help in better understanding and deployment of product meeting the product owner’s vision.
- The limited time duration of sprints helps in precisely predicting the business costs and this helps in precisely predicting the next scope of work.
- To provide a finished product with the highest quality, it uses several testing techniques so that it can be improved and upscaled with least effort.
- Most importantly, it avoids using long-term planning, preparation and documentation bringing in more business value and making the software development efficacious.
How can Drupal development adopt this astonishing methodology? Let’s find out.
Case studies: Drupal development using the Agile development methodology
Pantheon, a website hosting company, assisted an agency in building a groundbreaking Drupal 8 site within 4 months of developmental efforts using agile methodologies.
The agency’s site had a lot of structured content with a huge metadata associated with it. They realized that Drupal 8 would be the best fit for their site’s needs and future growth. So, to finish its enormous redesign upgrade to Drupal 8 within a short period of time and adhering to a strict budget, they chose Pantheon. Using their Multidev environments for supporting Agile development methodologies, they were able to complete most of the restructuring process within six 2-week iterations and the finished it off in 4 months.
Drupal also played a vital role in the development of Service NSW platform for Australian Government.
Through agile development methodologies, it was built in a short period of time and could be iteratively improved since its launch.
Service NSW portal was an initiative established by the NSW Premier to offer a centralized point of transaction for the citizens with government agencies. Drupal was deemed great for such a complex site with its amazing track record with the governmental agencies. Coupled with Agile methodology, the Drupal development of the portal was completed within the timeline of 6 months set before the project started.
Best agile processes for Drupal development
Understand your business objectives
Having a full understanding the business objectives and metrics for the project is significant before moving onto the designing or development stages.
Constructing the application architecture beforehand
Drafting the Drupal content model and the application architecture helps immensely in the project development. Modifications can be made once the project commences, but having the end product in mind helps in avoiding rework.
Perform iterations with user stories
Use the sprint planning to check that, for each user story planned for the sprint, the product owner agreeing to the acceptance criteria and the development team constructed and estimated the implementation approach. The acceptance criteria act as the standard of quality for the user stories.
Enable coding standards
This is one of the best practices where the coding standards are enforced in local environments of the developer. This produces some errors before full integration is performed. Code consistency is also established leading to quicker code reviews and efficacy in debugging.
Manual review of the code
Every project needs a Drupal professional for taking care of the technical solution. Reviewing the feature code manually, automated test code, and manual testing helps in architecting the technical solution for each user story. Code review process is done before full integration with the main codebase.
Automation of code integration
Automation is an integral part of agile development. Automating the code integration, testing and deployment would be beneficial for quality control.
Demo of finished user stories
Demonstration of completed user stories should be conducted in the same hosting environment where the product owner will be testing them. This makes sure that the environmental issues are rectified before the demo.
Testing individual user stories by product owners
Just a small demo won’t satisfy the product owners. Several days should be given to them after the iteration to properly review the user stories. This gives them ample time to assess the product and give their comments while the team is working on next iteration of user stories parallelly.
Performance and security auditing
Independently performing security and performance auditing helps in evaluating the completed application to decide whether it is for the production. Drupal comes with a lot of built-in security features. As the custom code, configuration and the content is incorporated into the application, independently audit has to be performed to ensure high-quality standards.
Ticking off the checklists for product deployment
Ensure that strict checklist is adhered to for pre-launch and launch activities for avoiding discrepancies during the final deployment. Collaboratively preparing and following checklists during the launch phases prevents any human error that might creep in.
Limitations of agile software processes
Developers and project managers are finding it difficult to review the appropriateness of agile development methodologies to their environments. There are many limitations of agile processes in certain areas.
- It is difficult for the developers to quantify the full extent of efforts required for the project development. This becomes more prominent during the beginning of the project of large products. Those new to agile processes often have the fear of the unknown and leads to poorer practices.
- It is important to have effective interaction between the developers, testers and the customers. Face-to-face communication is considered best for better cooperation during the development cycles. Teams physically distributed across the globe may find it troublesome. This calls for more time, energy and commitment towards the project.
- Close collaboration and extensive user involvement are required. Clients have to go through rigorous training to assist in product development. Lack of client participation impacts severely on the project quality and reflects the development company in the wrong light.
- Documentation is not a detailed compilation of the project requirements and its development. Software requirements are clarified just in time so that the development can be set in motion. So, when the new members join the team, they are oblivious to the complete picture of software development.
- Little planning is involved before the commencement and it assumes that customer’s needs are always changing. Thus, if the customer’s feedback or their requirement is not clear, it may lead the developer to the wrong areas of development.
Summary
Agile development methodologies are definitely the best you can get to induct best industry practices for software development. With an iterative approach, user feedback and faster release, agile processes can be astronomical for your project management.
Business leaders were reeling under the pressure of heavyweight planning process of software development practices like Waterfall which deemed the finished product ineffective. Their meeting led to the birth of Agile. This paved the way for the formulation of key principles of Agile.
Scrum, Kanban and, Extreme programming are some of the popular Agile frameworks.
From customer collaboration to faster delivery of projects, Agile processes are very meritorious.
The Drupal fraternity has been reaping the full benefits of agile development methodologies by using best agile processes.
Agile processes do come with some limitations which have to be considered to see if it fits your organization.
Contact us at [email protected] to explore more about Agile processes and understand if it is the right fit for your software development needs.
Subscribe
Related Blogs
In conversation with Danish Usmani, CEO, OpenSense Labs
In a year-end interview, CEO Danish Usmani showcases OpenSense Labs' achievements, emphasising new client partnerships and…
Why should you prioritize lean digital in your company?
We are living in an era where the change and innovation rate is just so high. If you want your organization to reach new…
How to measure your open source program’s success?
Along with active participation, it is very important to look after the ROI of open-source projects, programs, and…