Think of building software like constructing a skyscraper. In the past, construction was a slow, linear process. You'd lay the foundation, build the walls, then the floors, and so on. If there is a problem on the 30th floor, it could mean tearing down everything below it to fix it!
Modern engineering practices are like bringing in new tools and techniques that make building that skyscraper faster, safer, and more efficient. Instead of building floor by floor, you might prefabricate components, use cranes and robots, and constantly check for quality along the way.
So what are these modern engineering practices? There are many practices but lets explore some of the key once;
Agile Development: This is like having flexible blueprints for your skyscraper. Instead of rigidly sticking to the original plan, we can adapt the feedback quickly and make changes. Agile emphasises collaboration, iterative progress, and frequent delivery of working software.
Key idea: Break work into smaller chunks, get feedback often, and be flexible to change.
Benefits: You can adapt to surprises, learn from mistakes quickly, and deliver things people actually want
DevOps: This is like having the construction crew and the building maintenance team work closely together from the start. DevOps bridges the gap between development and operations teams, promoting automation, continuous delivery, and shared responsibility.
Key idea: Development and operations teams work closely together, automating and streamlining the process of getting software "out the door."
Benefits: Faster delivery, fewer errors, and smoother transitions from development to real-world use.
Continuous Integration/Continuous Delivery (CI/CD): Imagine having a system that automatically checks each new building block for quality and fits it into the skyscraper as soon as it's ready. CI/CD automates the process of building, testing, and deploying software, allowing for frequent releases and faster feedback loops.
Key idea: Automate the building, testing, and releasing of software.
Benefits: Catch errors early, release updates frequently, and get feedback faster.
Test-Driven Development (TDD): This is like testing the strength of each building material before you even start constructing. In TDD, you write automated tests before writing the code, ensuring that your code meets the requirements from the get-go.
Key idea: Write automated tests before writing the code itself.
Benefits: Ensure your code does what it's supposed to do, reduce bugs, and make it easier to change code later on.
At least to start with, if above mentioned practices are implemented then it will lead to;