Clean Agile: Back to Basics (Robert C. Martin Series)
Rate it:
Open Preview
13%
Flag icon
This physics constrains all projects to obey an unassailable trade-off called the Iron Cross of project management. Good, fast, cheap, done: Pick any three you like. You can’t have the fourth.
13%
Flag icon
The reality is that a good project manager understands that these four attributes have coefficients. A good manager drives a project to be good enough, fast enough, cheap enough, and done as much as necessary. A good manager manages the coefficients on these attributes rather than demanding that all those coefficients are 100%. It is this kind of management that Agile strives to enable.
14%
Flag icon
It is a critical goal of Agile to get those two charts on the wall. One of the driving motivations for Agile software development is to provide the data that managers need to decide how to set the coefficients on the Iron Cross and drive the project to the best possible outcome.
14%
Flag icon
Agile development is first and foremost a feedback-driven approach. Each week, each day, each hour, and even each minute is driven by looking at the results of the previous week, day, hour, and minute, and then making the appropriate adjustments. This applies to individual programmers, and it also applies to the management of the entire team. Without data, the project cannot be managed.19
15%
Flag icon
Make sure the managers know how fast the team is moving and how much the team has left to accomplish.
15%
Flag icon
This is the world of the software development team. It’s a world in which dates are frozen and requirements are continuously changing.
17%
Flag icon
Sprint is the term used in Scrum. I dislike the term because it implies running as fast as possible. A software project is a marathon, and you don’t want to sprint in a marathon.
18%
Flag icon
software is not a reliably estimable process. We programmers simply do not know how long things will take. This isn’t because we are incompetent or lazy; it’s because there is simply no way to know how complicated a task is going to be until that task is engaged and finished.
18%
Flag icon
This loss of hope is a major goal of Agile. We practice Agile in order to destroy hope before that hope can kill the project.
18%
Flag icon
Some folks think that Agile is about going fast. It’s not. It’s never been about going fast. Agile is about knowing, as early as possible, just how screwed we are.
19%
Flag icon
Brooks’ law22 states: Adding manpower to a late project makes it later.
20%
Flag icon
The only way to go fast, is to go well.
20%
Flag icon
any rational organization, the data will win.
20%
Flag icon
Agile is a process wherein a project is subdivided into iterations. The output of each iteration is measured and used to continuously evaluate the schedule. Features are implemented in the order of business value so that the most valuable things are implemented first. Quality is kept as high as possible. The schedule is primarily managed by manipulating scope.
25%
Flag icon
that code is not kept clean and orderly, it will put a back pressure on the team that slows progress. The bigger the mess, the higher the back pressure, and the slower the team. The slower the team, the greater the schedule pressure, and the greater the incentive to make an even bigger mess. That positive-feedback loop can drive a team to near immobility.
27%
Flag icon
a change to the requirements breaks your architecture, then your architecture sucks.
28%
Flag icon
QA should find no faults with the system. When QA runs their tests, they should come back saying that everything works as required. Any time QA finds a problem, the development team should find out what went wrong in their process and fix it so that next time QA will find nothing.
28%
Flag icon
manual tests are expensive and so are always a target for reduction.
30%
Flag icon
The whole point of software is to be able to easily change the behavior of our machines.
31%
Flag icon
the business has no right to force developers to ruin their professional reputations or violate their professional ethics.
31%
Flag icon
Estimates are never commitments.
31%
Flag icon
Programming on a team involves working closely together with juniors and seniors. The team has the right to collaboratively decide who will do what. A technical leader might ask a developer to take a task but has no right to force a task on anyone.
Alexander Fedorov
Programing in a team
31%
Flag icon
Agile is a set of rights, expectations, and disciplines of the kind that form the basis of an ethical profession.
32%
Flag icon
An estimate is a guess; we want some idea of how long the project will take without actually building the project. We want the cost of estimation to be low. Therefore an estimate is, by definition, imprecise.
34%
Flag icon
Iteration Planning Meeting (IPM). This meeting should be scheduled to be one-twentieth the duration of the iteration. The IPM for a two-week iteration should require about a half a day.
35%
Flag icon
The purpose of an iteration is to generate data for managers.
38%
Flag icon
The goal of each iteration is to produce data by getting stories done.
39%
Flag icon
Rising Velocity If we see a positive slope, it likely does not mean that the team is actually going faster. Rather, it probably means that the project manager is putting pressure on the team to go faster. As that pressure builds, the team will unconsciously shift the value of their estimates to make it appear that they are going faster.
39%
Flag icon
that velocity is a measurement not an objective. It’s control theory 101: don’t put pressure on the thing you are measuring.
39%
Flag icon
the only failing iteration is an iteration that fails to produce data.
41%
Flag icon
The term “release” means that the software is technically ready to be deployed. The decision to deploy becomes solely a business decision.
43%
Flag icon
QA folks are hired for their ability to figure out how to break the system.
43%
Flag icon
There’s a saying among older programmers: “I can meet any deadline you set for me, as long as the software doesn’t have to work properly.”
47%
Flag icon
software project is a marathon, not a sprint, nor a sequence of sprints.
47%
Flag icon
Working overtime is not a way to show your dedication to your employer. What it shows is that you are a bad planner, that you agree to deadlines to which you shouldn’t agree, that you make promises you shouldn’t make, that you are a manipulable laborer and not a professional.
48%
Flag icon
The team owns the code collectively.
52%
Flag icon
Every required behavior is entered twice: once as a test, and then again as production code that makes the test pass. The two entries are complementary, just as assets are complementary to liabilities and equities. When executed together, the two entries produce a zero result: Zero tests failed.
53%
Flag icon
The only information that the passing tests give you is that nothing tested is broken.
53%
Flag icon
We want to create a suite of automated tests that tells us that it is safe to deploy the system.
54%
Flag icon
How do you keep functions easy to test? You decouple them. Indeed, testability is just a synonym for decoupling.
57%
Flag icon
Over the course of a week, each programmer will spend about half of their pairing time on their own tasks, recruiting the help of several others. The other half of their pairing time will be spent helping others with their tasks.
57%
Flag icon
We pair so that we behave like a team. The members of a team do not work in isolation from each other. Instead, they collaborate on a second-by-second basis. When a member of a team goes down, the other team members cover the hole left by that member and keep making progress towards the goal.
57%
Flag icon
Pairing is the best way, by far, to share knowledge between team members and prevent knowledge silos from forming. It is the best way to make sure that nobody on the team is indispensable.
58%
Flag icon
Finally, never, ever, ever, ask for permission to pair. Or test. Or refactor. Or… You are the expert. You decide.
58%
Flag icon
It is reckless to conform to a schedule by sacrificing quality.
58%
Flag icon
The belief that quality and discipline increase speed is a courageous belief because it will constantly be challenged by powerful but naive folks who are in a hurry.
65%
Flag icon
You can learn most of what you need in minutes. The rest is available online.
66%
Flag icon
Workers use and control tools; tools don’t control and use people.
68%
Flag icon
Agile as an algorithm for finding the highest-value-producing features in the market and then turning them into revenue faster.
73%
Flag icon
Good collaboration removes some of the blocks people have to do their jobs but does not necessarily make them more skilled.
« Prev 1