33
Agile Dev Practices From a UX Perspective @andersramsay @agileuxmeetup #agileux

Agile developer practices from a ux perspective

Embed Size (px)

DESCRIPTION

Presented at the April NYC Agile Experience Design Meetup http://www.meetup.com/Agile-Experience-Design/events/173376062/ For many non-technical members on a project team, what developers do tends to be a black box. You decide as a team what to build, and maybe create some wireframes or sketches and then they go off and do...something. Maybe you have a general idea of what's involved in building software, but unless you actually are a developer, that's usually about it. In this session, we'll take a non-developer view of techniques commonly associated with Agile software development, such as pair programming, refactoring, test-driven development and continuous integration, and show how understanding these concepts can offer riches in terms of improved collaboration and communication between designers and developers.

Citation preview

Page 1: Agile developer practices from a ux perspective

Agile Dev Practices From a UX Perspective

@andersramsay • @agileuxmeetup • #agileux

Page 2: Agile developer practices from a ux perspective

@andersramsay • @agileuxmeetup • #agileux

Why a talk on Agile Dev Practices?

Page 3: Agile developer practices from a ux perspective

@andersramsay • @agileuxmeetup • #agileux@andersramsay • @agileuxmeetup • #agileux

Page 4: Agile developer practices from a ux perspective

@andersramsay • @agileuxmeetup • #agileux

Page 5: Agile developer practices from a ux perspective

@andersramsay • @agileuxmeetup • #agileux

Pseudo Code

Test-Driven Development

Pair Programming

Refactoring/Technical Debt

Continuous Integration

Page 6: Agile developer practices from a ux perspective

@andersramsay • @agileuxmeetup • #agileux

Shoutout: @aviflombaum at @flatironschool

bit.ly/alien-sandwich-workshop

@andersramsay • @agileuxmeetup • #agileux

Page 7: Agile developer practices from a ux perspective

@andersramsay • @agileuxmeetup • #agileux

Let’s look at some alien sandwich instructions…

Page 8: Agile developer practices from a ux perspective

@andersramsay • @agileuxmeetup • #agileux

Writing Pseudo Code

Page 9: Agile developer practices from a ux perspective

@andersramsay • @agileuxmeetup • #agileux

Pseudocode is a natural language description of what a computer

program should do.

Page 10: Agile developer practices from a ux perspective

@andersramsay • @agileuxmeetup • #agileux

Make Sandwich

Page 11: Agile developer practices from a ux perspective

My Alien Sandwich Instructions…

https://gist.github.com/andersr/11004954

Page 12: Agile developer practices from a ux perspective

A more practical example

https://gist.github.com/andersr/10471560

Page 13: Agile developer practices from a ux perspective

@andersramsay • @agileuxmeetup • #agileux

Some Benefits of Pseudo Code

A logic-based approach to writing user flows.

A coder/designer communication bridge.

Improved design coverage.

Page 14: Agile developer practices from a ux perspective

@andersramsay • @agileuxmeetup • #agileux

Pair Programming

Page 15: Agile developer practices from a ux perspective

@andersramsay • @agileuxmeetup • #agileux@andersramsay • @agileuxmeetup • #agileux

Page 16: Agile developer practices from a ux perspective

@andersramsay • @agileuxmeetup • #agileux

Pair Programming is just as much about being persuasive,

being a good listener, and letting go of ego, as it is about coding.

Page 17: Agile developer practices from a ux perspective

@andersramsay • @agileuxmeetup • #agileux

Pairing and Pair Programming

Cross-Functional Pairing: More about “What should we build?”

Pair Programming: More about “How do we build it?”

Writing Pseudo Code can enable pairing with a developer, particularly on writing tests and TDD.

Page 18: Agile developer practices from a ux perspective

@andersramsay • @agileuxmeetup • #agileux

Test-Driven Development

Page 19: Agile developer practices from a ux perspective

@andersramsay • @agileuxmeetup • #agileux

Test-Driven Development:Testing code, not users.

Page 20: Agile developer practices from a ux perspective

@andersramsay • @agileuxmeetup • #agileux

Cut two slices of bread and place on the plate 1. Grasp the Knife in a cutting grasp and hold it out above the table.2. Grasp the bread-loaf and place it on the table, such that it is directly below the knife.….

Test-Driven Development:Replacing traditional specs with “executable specs,” i.e. specs that talk back at you.

Page 21: Agile developer practices from a ux perspective

@andersramsay • @agileuxmeetup • #agileux

Oops, you didn’t grasp the bread-loaf.

Sorry, you’re not holding the knife in a cutting grasp.

Page 22: Agile developer practices from a ux perspective

@andersramsay • @agileuxmeetup • #agileux

Benefits of understanding TDD

An opportunity to write fewer traditional specs and more executable or test-driven specs.

Can help reduce churn, improve design coverage, and design/dev communication.

Likely to encourage developers to adopt TDD in general.

Page 23: Agile developer practices from a ux perspective

@andersramsay • @agileuxmeetup • #agileux

Refactoring and Technical Debt

Page 24: Agile developer practices from a ux perspective

Coding is “just” writing

Every coder will write different code, with better coders being more succinct, eloquent, etc.

Good coding is re-coding.

Coding software means writing for two audiences: binary aliens and analog humans.

Page 25: Agile developer practices from a ux perspective

@andersramsay • @agileuxmeetup • #agileux

–Kent Beck

“Make it Work.

Make it Good.

Make it Fast.”

Page 26: Agile developer practices from a ux perspective

@andersramsay • @agileuxmeetup • #agileux

Make it Work…Ship early/often, holding off on better/faster code (incurring technical debt)

only once you know you’ve built something valuable.

Page 27: Agile developer practices from a ux perspective

@andersramsay • @agileuxmeetup • #agileux

Make it Good. Make it Fast…

Refactor, Pay Down Technical Debt:Find ways to say the same thing in fewer or

clearer words, improving scalability, maintainability, reuse, stability, speed, etc.

Page 28: Agile developer practices from a ux perspective

@andersramsay • @agileuxmeetup • #agileux

Continuous Integration

Page 29: Agile developer practices from a ux perspective

@andersramsay • @agileuxmeetup • #agileux

Coding a large system is like having many novelists all writing the same novel at the same time.

Page 30: Agile developer practices from a ux perspective

@andersramsay • @agileuxmeetup • #agileux

Traditional Integration

Page 31: Agile developer practices from a ux perspective

@andersramsay • @agileuxmeetup • #agileux

Continuous Integration…and knowledge sharing.

Page 32: Agile developer practices from a ux perspective

@andersramsay • @agileuxmeetup • #agileux

Continuous Integration from a UX Perspective

“Continuous” is the game-changer.

Writing pseudo code, pairing, integrating your work through TDD, and other practices (eg Live Style Guides), are all ways to maintain a continuous working relationship with developers.

Page 33: Agile developer practices from a ux perspective

@andersramsay • @agileuxmeetup • #agileux

Thanks!