Custom Development Methods to Madness In the custom development world, project management (PM) matters. It matters so much, it can truly make or break the cadence and success of a development project. Additionally, having an established, developed methodology that can then be tracked in a PM software platform, such as Monday.com, Basecamp or Asana is equally important if not paramount to project tracking and management. Here, we’re going to break down the main types of methodologies you’ll encounter in the custom development world: Agile and Waterfall. And if you’re a business owner evaluating dev firms for your next mobile app or enterprise software project, it may behoove you to become knowledgeable in both approaches so you know the appropriate questions to ask when it’s time to hire your next development partner. What is the Waterfall Methodology? The waterfall methodology is a linear project management approach, where stakeholder and client requirements are gathered at the beginning of the project, and then a sequential project plan is created to accommodate those requirements. The waterfall method is so named because each phase of the project cascades into the next, flowing steadily down like a waterfall. This approach is a thorough, structured methodology and one that’s been around for a long time because it’s incredibly effective. We’re referencing this method in the context of software development here, but other industries that use this approach include construction and IT. The Phases of Waterfall Requirements: The key principle of waterfall is that all customer requirements are gathered prior to the start of the project, allowing every other phase to be planned without further customer correspondence until the product is complete. Design: This phase is usually divided into two subphases: logical design and physical design. The logical subphase is when solutions are ideated and theorized. The physical subphase is when those theoretical ideas and frameworks are made into substantial specifications. Implementation: This phase is when programmers incorporate the requirements and specifications from the previous phases and produce authentic code. Verification: During this phase, the client reviews the product to make sure that it meets the requirements laid out at the beginning of the project. The completed project is usually released to the client at this stage. Maintenance: During this phase, the client is regularly using the product, discovering bugs, inadequate features and other errors that occurred during production. The production team applies these fixes as necessary until the customer is satisfied. Pros and Cons of Waterfall Dev firms choose to use the waterfall model for many reasons; here are a few benefits: ⬬ Project requirements are agreed upon in phase 1, so planning and scheduling is simple and clear. ⬬ With a fully laid out project schedule, dev firms can give accurate estimates for your project cost, resources and deadlines. ⬬ It’s easy to measure progress as you move through the phases and hit milestones. ⬬ Clients can’t perpetually add new requirements to the project, which can delay production. You’ll also find that waterfall has its own set of limitations; here are a few drawbacks: ⬬ It can be difficult for clients to articulate all of their needs at the beginning of the project. ⬬ If the customer is dissatisfied with the product in the verification phase, it can be very costly to go back and design the code again. ⬬ A linear project plan is rigid, and lacks flexibility for adapting to unexpected events. Although it has its drawbacks, a waterfall project management plan is very effective in situations where you are encountering a familiar scenario with several knowns, or in situations where your customer knows exactly what they want at the onset. What is the Agile Methodology? The agile software development life cycle is dominated by an iterative process. Each iteration results in the next piece of the software development puzzle until the final product is complete. Each iteration is usually two to four weeks in length and has a fixed completion time. Due to its time-bound nature, the iteration process is methodical and the scope of each iteration is only as broad as the allotted time allows. Multiple iterations will take place in the agile model and each follows its own workflow. During an iteration, it is important that the clients and business stakeholders provide feedback to ensure that the features meet their needs. The agile model was established in the 1990s, but was solidified when seventeen software developers got together and established the Manifesto for Agile Software Development, which was written to encapsulate all the new agile approaches under one umbrella. They did this to “uncover better ways of developing software by doing it and helping others do it.” There are four core values outlined in the Agile Manifesto: 1. Individuals and interactions over processes and tools 2. Working software over comprehensive documentation 3. Client collaboration over contract negotiation 4. Responding to change over following a plan The 12 Principles of Agile Methodology To help teams stay true to these core values, the manifesto developers defined12 principles for managing projects within an agile framework: Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. Business people and developers must work together daily throughout the project. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation. Working software is the primary measure of progress. Agile processes promote sustainable development. The sponsors, developers and users should be able to maintain a constant pace indefinitely. Continuous attention to technical excellence and good design enhances agility. Simplicity—the art of maximizing the amount of work not done—is essential. The best architectures, requirements and designs emerge from self-organizing teams. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly. These principles are merely a baseline; most agile project management proponents agree with this nugget of agile understanding. However, as the process grows, so does dissension. The truth is that agile as a framework is not prescriptive. There is no rigid system to follow, like with waterfall project management. Agile is more of a philosophy of working. Many times, you’ll see dev firms using a variation of this model to create a hybrid method. The Phases of Agile These phases are the foundation of an agile model, but these can be applied to one of many agile systems listed at the bottom of this section. Concept: Projects and viability are envisioned and prioritized. Inception: Team members are identified, funding is put in place, and initial environments and requirements are discussed and decided. Iteration/Construction: The development team works to deliver working software based on iteration requirements and feedback. This step repeats as necessary to get all specifications in working order. Release: Quality Assurance testing, internal and external training, documentation development, and final release of the iteration into production. Production: Ongoing support and optimization of the software. Retirement: End-of-life activities, including customer notification, migration and sign off. These phases can be applied into one of the following systems of agile development: ⬬ Disciplined Agile Delivery (DAD) ⬬ Adaptive Software Development ⬬ Agile Modeling ⬬ Kanban ⬬ Scrum ⬬ Scrumban ⬬ Extreme Programming (XP) ⬬ Dynamic Systems Development (DSDM) ⬬ Feature Driven Development ⬬ Lean Software Development The overall goal of each agile method is to adapt to change and deliver working software as quickly as possible. However, each methodology has slight variations in the way it defines the phases of software development. Additionally, even though the goal is the same, each team’s process flow may vary depending on the specific project or situation. (At Shift3, we borrow effective techniques from multiple named methodologies to create our own hybrid which we’ve aptly named “Bruce Lee style.”) Pros and Cons of Agile Dev firms choose to use the agile model for many reasons; here are a few benefits: ⬬ Agile promotes some of the best practices found in development environments. Some of the risk in a project should be reduced as the output of developers is reviewed early and constantly during development. ⬬ When projects are genuinely new they usually require creativity. Requirements can then emerge as understanding matures and grows. ⬬ Flexibility can be higher than traditional methods, although this is not guaranteed. Changes (e.g. in prioritization) can be introduced at almost any stage. ⬬ Agile encourages or requires frequent communication between developers and those who will ultimately accept and use the deliverable. Frequent feedback can be incorporated into future iterations as increments are delivered and reviewed by users or a product owner or both. ⬬ Agile helps reduce the ‘silos’ that too often exist within project teams; something that always damages projects (as it should result in a collaborative style of working). ⬬ It should result in far less re-work on projects as issues and changes should be picked up much earlier. ⬬ Collaboration is usually much higher with agile. Although not guaranteed, this can result in more successful development environments, in terms of product quality (i.e. fit for purpose). You’ll also find that agile has its drawbacks; here are some limitations: ⬬ Agile is simple to understand in principle but hard to do well in practice. It requires real commitment and first attempts are not likely to go very well. ⬬ Agile requires high levels of collaboration and very regular communication between developers and product owners. This is always desirable, but may not always be feasible and requires continual commitment and time from the client and developers. ⬬ There can be less of a blueprint of what the final deliverable will be. This can make it harder to gain commitment to the project by stakeholders at the early stage. ⬬ Agile can be challenging when there is a supplier-customer relationship. Clients typically want to know what they are getting for their money as early as possible. It can be far harder to estimate timescales and costs as there is less ‘definition’ on which to base estimates. ⬬ Agile can be very challenging on much larger projects or where co-location is not possible (between developers and the client). Agile Vs. Waterfall Agile differs greatly from waterfall in two major ways; namely in regards to linear action and customer involvement. Agile is a nimble and iterative process, where the product is delivered in stages to the customer for them to review and provide feedback. In the waterfall model, everything is mapped out ahead of time, and clients interact only at the beginning and end of the project. Every custom development firm has their own set of methodologies in addition to specific project management formats. When consulting with a software solutions partner, be sure to ask questions about their project management styles and consider how much you’d like to be involved in the development of your vision. Their method should fit with your expectations and vice versa. Allow Us to Develop Your Vision Do you have any questions about the management of your upcoming project? How can we help? For a free consultation about your idea or project, click this link: Let’s Talk. Prepare for your consultation with this handy dandy guide or check out Five Easy Ways to Avoid Custom Software Stalls. This post was written by Celeste A. Barron, Content Development Manager at Shift3 Technologies. You can find her nodding off fifteen minutes into playing Animal Crossing.