How to Manage Modern Software Projects: Waterfall vs. Agile

Always interesting to read a pro/con analysis between Waterfall & Agile methodologies.

Waterfall Pros

It is easy to understand and manage as stages are clearly defined.
Meticulous record keeping and documentation.
Client knows what to expect. Client will have an idea of the size, cost and timeline for the project. The client will have a definite idea of what their product will do in the end.
In the case of employee turnover, waterfall’s strong documentation allows for minimal project impact

Waterfall Cons
It often becomes rigid and resistant to change.
It relies heavily on initial requirements. However if these requirements are faulty in any manner, the project is doomed.
The whole product is only tested at the end. If errors are discovered late in the process, their existence may have affected the rest of the project.
The plan does not take into account a client’s evolving needs throughout the project cycle.

Agile Pros
It allows for changes to be made after the initial planning stage. It follows client’s requirements changes.
It is easier to add features that will keep the product up to date with the latest developments in the industry.
At the end of each sprint, project priorities are evaluated. This allows clients to add their feedback, so that they ultimately get the product they desire.
The testing at the end of each sprint ensures that the errors are caught in each cycle.

Agile Cons
This dynamic methodology is not suitable for processes that require a complex decision making of formal planning such as construction, manufacturing, military, health care system among others.
As the initial project does not have a definitive plan, the final product can be grossly different that what was initially intended.

Author = Liz Parody (Moove-it, via Medium)

https://medium.com/@lizparody/waterfall-vs-agile-methodology-in-software-development-1e19ef168cf6

Differences between TDD, ATDD and BDD

They are not the same. Article covers:

TDD = Test-driven development = a technique of using automated unit tests to drive the design of software and force decoupling of dependencies.

ATDD = Acceptance Test Driven Development,
aka STDD = Storytest Driven Development = a technique used to bring customers into the test design process before coding has begun. It is a collaborative practice where users, testers, and developers define automated acceptance criteria.

BDD = Behavior-Driven Development = combines the general techniques and principles of TDD with ideas from domain-driven design. BDD is a design activity where you build pieces of functionality incrementally guided by the expected behavior.

Article also discusses Differences.

Author = Gabo Esquivel

https://gaboesquivel.com/blog/2014/differences-between-tdd-atdd-and-bdd/

Test Automation Tips and Best Practices

Article covers: Top Tips for Test Automation

Manual vs Automated – Testing vs Checking
Automate Regression Tests
Design Tests Before Automating Them
Remove Uncertainty from Automated Tests
Review Automated Tests for Validity
Don’t Automate Unstable Functionality
Don’t Expect Magic From Test Automation
Don’t Rely Solely on Automation – Beware of Passing Tests
Aim for Fast Feedback
Understand the Context
Don’t Automate Every Test
Use Test Techniques in Test Automation
Don’t Automate Chaos

Author = Amir Ghahrai (Testing Excellence)

https://www.testingexcellence.com/test-automation-tips-best-practices/

Best Practices for Continuous Testing in Agile

Article Covers:
What is Continuous Testing? In Agile, where we frequently release software to production, we need to ensure that software is of high quality throughout the development. We need to test early and we need to test often. We need to make sure that we get correct requirements to begin with, and to ensure that we test throughout development and not leave testing just before release.

A set of best practices that we can follow to implement and improve testing throughout the development lifecycle:

  1. Lean Testing
  2. Collaborate With Business
  3. Implement a QA Practice
  4. Automate Testing
  5. Automate Deployments

Author = Amir Ghahrai (Testing Excellence)

https://www.testingexcellence.com/best-practices-for-continuous-testing-in-agile/

Agile Test Strategy Example Template

Article covers: Agile Test Strategy

Test Levels
Unit Testing
API / Service Testing
Acceptance Testing
System Testing / Regression Testing / UAT
Product Backlog
Story Workshops / Sprint Planning
Development
Developer Testing
Automated Acceptance Tests and Non-functional Testing
Regression Testing
UAT and Exploratory Testing
Done Criteria

Author = Amir Ghahrai (Testing Excellence)

https://www.testingexcellence.com/agile-test-strategy-example-template/

The Pros and Cons of Pair Programming

Pair programming = a software development practice in which two programmers collaborate on a single workstation at the same time. This collaboration can be done either in person or remotely, in which case you’ll need software for screen sharing and real-time editing.

The Pros of Pair Programming

  1. Fewer mistakes and bugs
  2. Greater resiliency
  3. Increased code quality
  4. Faster training
  5. Improved team morale

The Cons of Pair Programming

  1. Higher costs
  2. Sustainability

Conclusion = Pair programming isn’t new; it’s been around the software development industry for decades. As a practice, pair programming originates from the extreme programming (XP) methodology, which prioritizes high software quality and frequent tests and releases.
For some organizations, pair programming simply isn’t the right fit for their situation. However, a growing number of companies are finding that pair programming has a variety of benefits, including saved development time, higher-quality code, and better training and onboarding. As a result, everyone on the team is working together to build the most successful, best version of the product possible.

Author = Sam McDavid (Medium)

https://www.verypossible.com/blog/pros-and-cons-of-pair-programming