Skip to content

Latest commit

 

History

History

principles

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

Principles

What is a Principle?

"A generalization that is accepted as true, and that may be used as a basis for reasoning or conduct." -- WordNet

In other words (now from ethics), a principle is a very general rule that one can use when deciding how to act in order to pursue some goal.

A principle is what initiates some action, while the action is executed to achieve or maintain some value, which is the end goal. Thus, a principle is the beginning, actions (practices) are the means, a value is the end.

Principles of Accountability

Tracking

Constantly assess whether one is stuck or making progress.

Responsibility

Unblock oneself; one has options.

Communication

Ensure stakeholders are aware of setbacks and progress. See how we communicate.

Expectations

Be aware of the expectations of stakeholders about scope and time. Assess whether they can be achieved. Adjust expectations with stakeholders as needed.

Principles of Productivity

Assumptions

Before getting started on any activity, clarify and validate your assumptions, and the assumptions of the stakeholders.

Appetite

Assess whether one is trying to do too much at once. If so, divide work into milestones in order to conquer the results incrementally.

Time-Box

Assess how long some activity should take. Revisit its worthiness if taking too long. Limit time allocated to activity by reducing its scope.

Progress

Ask for help when stuck. Look for other solutions. Change goals or compromise if needed to unblock oneself.

Value-Oriented

Assess whether the current task is the most valuable action one should be executing right now.

Alignment

Assess whether one is working on planned tasks, and if not, whether the task will contribute to delivering a release.

Principles of Quality

Requirements

Make sure the acceptance tests have been defined before getting started on any implementation.

Planning

Analyse the problem. Understand architecture and design constraints of the solution. Find the critical path of implementation tasks.

Maintainability

Encapsulate the components that change often. Define clear, stable interfaces between the components. Remember that the team that writes the code needs to maintain it later.

Scope

Look into scope-cutting if that will help us maintain quality and schedule.

Step-By-Step

Break down work into small, easy-to-implement steps. Each tested step should build on top of the previous ones, allowing continuous progress.

Testing

Start testing; finish testing. Test-drive your implementation whenever possible. Consider the code "done" only after all the tests are passing on all environments.

Everything DRY

Don't repeat yourself (DRY) when writing code or documentation, or even when designing the software.

SOLID Principles

Use the SOLID principles as a guide when designing and implementing software.

References

Some inspiring references for the principles above: