DevOps teams manage and complete tasks. The way by which these teams plan and execute we call methodologies. They can be formal structures or patches from various systems. The alternative is to use whips and chains with sacrifices to Molech, but most insurance refuses to cover it.
☑ Linear development where tasks 'waterfall' down.
☑ Like assembly lines and is often the default way to process a task.
☑ What other newer methodologies fallback to.
▼ 6 Phases of Waterfall:
1.Requirements for the software are written into documents.
2.Analysis creates the coding structure of models, schema, and so on, as well as the business needs.
3.Design how to implement the actual architecture.
4.Coding develops, proves, and integrates software.
5.Testing analyzes feedback and the code is redesigned and iterated or debugged as needed.
6.Operations installs, migrates, supports and provides maintenance.
Agile:
▼ What is it?
☑ Non-linear development, so the team works on tasks in various stages and the output is aggregated and assembled as it goes.
☑ Like a professional kitchen where they cook, prepare, and assemble meals out of order, but meet a constant and rapid pace of delivery.
▼ 12 Principles of Agile:
1.Continuous development to satisfy customers early and regularly.
2.Welcome change for the customer's edge, even late in development.
3.Deliver frequently, preferring a shorter timescale.
4.Daily integration between management and developers.
5.Support and trust the motivated to complete.
6.Face-to-Face is the best and most efficient form of communication.
7.Progress is working software and the best measure.
8.Maintain a constant pace indefinitely.
9.Attention to quality and design enhances agility.
10.Simplifying to max progress is essential.
11.Self-organized teams have the best solutions.
12.Regularly reflect and fine tune.
Lean:
▼ What is it?
☑ An agile manufacturing methodology for minimum waste and maximum output.
☑ Like a lumber company where no cut goes to waste, from splinters into matches and saw dust into particle board. Transport is eliminated and optimized by using the rivers themselves to cut across the land. The local people who harvest the trees and process the wood are not only well-paid, but provided quality housing, supplies, and healthcare on-site.
▼ 7 Principles of Lean:
1.Eliminate waste: like development, feature-creep, delays, shifting goals, bureaucracy, miscommunication, incompleteness, defects, and task swapping.
2.Build quality: using techniques like pair programming, test-driven dev, incremental dev, automation, and others found in eXtreme Programming.
3.Create knowledge: to build infrastructure with documentation, Wikis, forums, training classes, video tutorials and walk-throughs.
4.Defer commitment: by researching, applying feedback, analyzing data, and adopting flexible and adaptable tooling and infrastructure.
5.Deliver fast: with simplicity, satisfaction, and reception to change.
6.Respect people: ensuring team cohesion, recognizing individuals, resolving conflicts, improving processes, communicating proactively, and supporting their health.
7.Optimize the whole: do not sub-optimize pieces by buffering deadlines, instead study requirements, identify values, tune flow, knowledge share, and use cross=functional teams that can develop the entire product individually or fill-in where need be.
Scrum:
▼ What is it?
☑ An agile framework. In the football-like sport of rugby, a scrum is when players restart a play by packing tightly together.
▼ 4 roles:
☑ Stakeholders: are the deciders of key requirements and represent the ideal customer.
☑ Product owner: manages the Product Backlog by ranking the priority of task and checking in with the team.
☑ Team (often developers): a self-organizing and cross-functional group that is accountable as a team.
☑ Scrum master: ensures the team maximizes Scrum by supporting and mediating among others (often assembling the team and reminding them about the Scrum process).
▼ Workflow:
☑ Sprint: a task with a time limit that does not sacrifice integrity (NOTE: deadlines between sprints are typically 1 month at the maximum).
☑ Planning: examine (transforming as needed) and assign the backlog tasks as sprints.
☑ Scrum: a daily stand-up where each role reports and self organizes as needed (15 minutes long).
☑ Review: stakeholders and the team informally meet to discuss a sprint's outcome. The Product Owner goes over the updated Backlog covering deliveries, issues, timelines, and budgets. Everyone collaborates and discusses possibilities (as needed).
☑ Retrospect: like reviewing a fight or sports match, the team discusses what went well and could improve, then commits to an improvement for the next Sprint (occurs after a Review, but before the next Planning).
☑ Backlogging: product and SprintBacklogs are tuned by breaking-down and selecting requirements to assign as tasks.
☑ Termination: The Product Owner ends the Sprint because the goal no longer matters (not a bad thing). Negotiate with Stakeholders (if needed).
XP (eXtreme Programming):
▼ What is it?
☑ An agile methodology developing around rigorous programming practices.
☑ Scheduling is 1-2 weeks unlike 2-4 in traditional Scrum.
☑ Set up by Kent Beck while he headed software at Chrysler in the 1990's.
▼ 5 Rules of XP:
1.PLAN:
☑ Write User Stories (imagined user experiences) of your software.
☑ Release Plan and create a release schedule so you can make releases.
☑ Make frequent small releases of the software.
☑ Divide the project into iterations.
☑ Iteration Plan for each iteration.
2.MANAGE:
☑ Use an open work space so there is space to team-up and identify issues.
☑ Use a sustainable pace using the rate of work or Project Velocity.
☑ Daily Stand-ups.
☑ Measure Project Velocity, or the rate of progress (tasks finished per day, week, or month).
☑ Shift people around to get more diverse opinions, oversight, and stimulation.
☑ Fix broken XP methods.
3.DESIGN:
☑ Apply Simplicity by eliminating unneeded code and being direct with UX.
☑ Set system metaphor.
☑ Use CRC cards (Class-Responsibilities-Collaborator).
☑ Use a Spike Solution (a small demo fix) and evaluate the risks of implementation.
☑ Get an MVP or Minimum Viable Product first, do not bog down with feature creep.
☑ Refactor or clean-up code often.
4.CODE:
☑ Customer is always available, meaning you can go to them for input.
☑ Use standards.
☑ Code Unit Tests first.
☑ Pair Program production code.
☑ One Pair integrates code.
☑ Integrate often.
☑ Apply collective ownership.
5.TEST:
☑ Unit Test all code.
☑ Pass all Unit Tests.
☑ Test fixed bugs (incorrect software behavior).
☑ User Acceptance Tests are scored publicly (so everyone is on the same page).
▼ XP Terms:
☑ Feedback Loops: systems for obtaining feedback, or external review, like testing, and pair programming.
☑ Automation: machines and tools that automate human work massively reduces errors. Like copy and pasting instead of typing. Ideally used whenever possible.
☑ Test-Driven Development: creating automated tests for the program before completing the actual software (so that tests may 'drive' decisions in development).
☑ Pair-Programming: programming as teams of two (using shared hardware) where one user 'steers' or directs another who 'drives' or inputs (roles and team members may swap over time).
◆ Fosters Collective Ownership and acts as an additional Feedback Loop for each party as they discuss the code as it is programmed.
☑ CI/CDContinuous Integration / Delivery / Deployment: Constantly updating work (like code) and delivering or deploying it to the customer.