Top Banner
Usable Soſtware Design A Talk by Alex Bolboaca hp://www.nasa.gov/sites/default/files/thumbnails/image/iss043e124426.jpg
51
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

Usable Software Design

A Talk by Alex Bolboacahttp://www.nasa.gov/sites/default/files/thumbnails/image/iss043e124426.jpg

Page 2: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

My belief:

YOU Deserve Better!

Page 3: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015
Page 4: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015
Page 5: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015
Page 6: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

Naomi WeastActress, not a programmerhttps://plus.google.com/110657773112027365790/posts

Page 7: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015
Page 8: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

It reminds me of something else

Page 9: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

Jacques CarelmanArtist, creator of “The Catalogue of Impossible Objects” in the 60shttp://www.patakosmos.com/wp-content/uploads/2013/09/RDA00147250.jpg

Page 10: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

Coffee pot for masochistsCatalogue of Impossible Objects by Jacques Carelmanhttp://impossibleobjects.com/catalogue/coffeepot-for-masochists.html

Page 11: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

Absorbent BottleCatalogue of Impossible Objects by Jacques Carelmanhttp://impossibleobjects.com/catalogue/absorbent-bottle.html

Page 12: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

Siamese HammersCatalogue of Impossible Objects by Jacques Carelmanhttp://impossibleobjects.com/catalogue/siamese-hammers.html

Page 13: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

It reminds me of something I read in a book ...

Page 14: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

Donald A. NormanAuthor of “The Design of Everyday Things”http://www.jnd.org/NNg-Photographs/Photo1.jpg

“It is the duty of

machines and those

who design them to

understand people.

It is not our duty to

understand the

arbitrary,

meaningless dictates

of machines.”

Page 15: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

User Centric Design Process by UXPARevolution started by Donald A. Norman's bookhttp://uxmastery.com/what-does-a-user-centred-design-process-look-like/

Page 16: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

All designs have an user.

Who is the user of software design?

Can't be the end user.

Only one answer: the developer is the user of software design.

So, then, developer-centric software design is a thing?

How about “Usable Software Design”?

Page 17: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

You Are The User: Changing Code

● Figure out what you need to change● Navigate there● Read the code, tests, documentation, comments● Write/change code, write/change tests● Refactor● Build● Validate● Integrate

Page 18: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

Figure Out What To Change

● How easy can you reason about the runtime behavior based on the static structure of the code?

Page 19: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

Example: Namespaces

Page 20: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

Example: Modules

Page 21: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

Is Your Design Easy to Navigate?

● What module / namespace to look in? – See previous examples

● How is that thing named?– Should be Consistent, Memorable, Precise

● How deep is the inheritance tree?

Page 22: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

Example: Consistency

Page 23: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

Example: Modules APIs

Page 24: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

This is just the beginning

Page 25: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

What is Usable Software Design?

Page 26: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

What is Usable Software Design?

Usable Software Design is any code structure that exhibits design qualities similar to usability

Page 27: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

5 Design Qualities of Usability

1. Learnability

2. Efficiency

3. Memorability

4. Errors

5. Satisfaction

http://www.nngroup.com/articles/usability-101-introduction-to-usability/

How easy it is to accomplish basic tasks the first time you're using the design?

How quickly can you perform a task once you've learned the design?

When you go back to the design after a period of not using it, how easy is to become efficient again?

How many errors do you make, how severe are they and how can you recover from them?

How pleasant it is to use the design?

Page 28: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

How to Improve The Usability of Software Design?

Page 29: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

Developer Persona For Your Team

● Kernel Developer● Java Enterprise Developer● Rails Developer● C/C++ Embedded Developer● Android Developer● Front-end Javascript + html + CSS developer● Etc.

Each persona has different needs.

Usability depends on the user!

Page 30: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

Example of Team Agreement

Usable Software Design means to us that:

1. It is written for developers to read

2. It is easy to find where to modify the code

3. Any modification has a minimal ripple-effect

4. It is easy AND fast to validate that we did the right thing

5. We don’t have to do similar modifications in several places

Usable Software Design – A Federating Conceptby Johan Martinsson

Page 31: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

Next Step: Practices

“It is written for developers to read”

=> coding guidelines, clean code etc.

“It is easy to find where to modify the code”

=> navigability, consistency etc.

“Any modification has a minimal ripple effect”

=> follow Open Closed Principle, Single Responsibility Principle etc.

Page 32: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

Specific practices for Usable Software Design?

(Incomplete list)

Page 33: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

1. Learnability

How easy is it for users to accomplish basic tasks the first time they encounter the design?

Page 34: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

Hints: Design For Learnability

Code structure that shows what the application doesConsistency

Minimal SurpriseUse Clearly Defined Modules With Clear APIs

Readability / Clean CodeNavigability

Add Usage examples – tests / comments etc

Page 35: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

Test Learnability

Measure how long it takes for developers outside your team to understand the purpose of a

class with as little help as possible.

Page 36: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

2. Efficiency

Once users have learned the design, how quickly can they perform tasks?

Page 37: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

Hints: Design For Efficiency

Use code constructs the whole team understandsConsistency

Fast Validation

Page 38: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

Test Efficiency

Retro question: “what slowed you down in the past two weeks?”

Measure how long it takes for developers to finish typical tasks (not simple, but typical)

Page 39: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

3. Memorability

When you go back to the design after a period of not using it, how easy is to become efficient again?

Page 40: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

Memorability ≈ Efficiency + Learnability

+ The style is internalized

Page 41: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

4. Errors

How many errors do you make?How severe are these errors?

How easily can they recover from the errors?

Page 42: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

Hints: Design For Mistake Proofing

It's the system's faultWrite automated testsEliminate exceptions

Pass mandatory arguments to constructor(more difficult when using Dependency Injection libraries)

Avoid Primitive ObsessionPrinciple of Minimum Surprise

Page 43: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

Example: TicTacToeMistake-prone Design

Mistake-proof Design

Page 44: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

Test Mistake-Proofing

How many bugs do we have?What is the main cause of the bugs?

(remember, it's typically in the design)How can we change the design to avoid it?

Page 45: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

4. Satisfaction

How pleasant is it to use the design?

Page 46: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

Hints: Design For Satisfaction

Strictly personal, but relevant

Page 47: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

Test Satisfaction

What parts of the system are unpleasant to use?

How can we change them to be more pleasant?

Page 48: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

What To Tell Managers

Usable Software Design has the potential to bring four economical benefits:● Faster integration of new developers in the team

(learnability)● Faster time to implement typical (not simple) tasks

(efficiency)● Making less mistakes (mistake-proofing)● Feeling more motivated (satisfaction)

Page 49: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

My belief:

YOU Deserve Better!

Page 50: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

Recap

● The developer is the user of software design● Usable software design means code structure that

exhibits the qualities of usability: Learnability, Efficiency, Memorability, Error Treatment and Satisfaction

● Define the personas of your team● Create a team agreement● Start applying practices that help the agreement● This is just the beginning

Page 51: Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015

Q&A

“The important thing is

not to stop questioning”