Rule of Simplicity | Glossary

Definition:

Kent Beck while developing Extreme Programming (XP) came up with rules of simple design. He recommended that developers should do the simplest thing that could possibly work. Simple code means you’re travelling light – low up-front investment, and not much to slow down when things needs to change. Simplicity is being recognised as one of values in XP, where programmers are encouraged to start with simplest solution which helps them to focus on designing and coding for the needs of today instead of tomorrow.

Rule of Simplicity

  1. Pass All Tests
  2. Clear, Expressive & Consistent
  3. Duplicates No Behaviour or Configuration
  4. Minimal Methods, Classes & Modules

With these rules, we can judge whether the code developed is simple enough. What we can derive is to think about what is most important, the code should work, pass all tests. The next most important thing is that the code should be easy to understand, therefore we need to ensure that it expresses every idea  with clarity. Even though the code works, we need to consider maintainability, see to that there is no duplicate code. This minimises cost and maximise benefits over the lifetime of the software.

Further Reading:

Book: Extreme Programming Explained: Embrace Change by Kent Beck
Book: Understanding the 4 Rules of Simple Design by Corey Haines
Book: Understanding Software by Max Kanat-Alexander
https://en.wikipedia.org/wiki/Extreme_programming
http://wiki.c2.com/?XpSimplicityRules
https://martinfowler.com/bliki/BeckDesignRules.html

Role-Feature-Reason | Glossary

Definition:

Role-Feature-Reason is a template used by Product Owners, Team members and other stakeholders who is gathering requirement as User Stories .

Requirement written with this template describes the right objective from users perspective. This helps to understand the feature, how the actual user will utilise that feature, how he benefits.

As a [type of User] I want [some feature] so that  [some reason]

The role (Who) The feature (what) The reason (why)

As a account holder, I want to check my balance online, so that I can do a purchase.

This template used in Agile Software Development helps to capture the requirement of a software feature. Helps the requirement to evolve and is supposed to aid in future conversation to pay attention not just to “what” the desired software product is to do, but also “from whom” it does matter and for “what objectives”

Further Reading:

Book: User Stories Applied: For Agile Software Development by Mike Cohn
https://www.agilealliance.org/glossary/role-feature/
http://codesqueeze.com/the-easy-way-to-writing-good-user-stories/