Agile developer practices from a ux perspective

  • View
    976

  • Download
    0

  • Category

    Design

Preview:

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

Agile Dev Practices From a UX Perspective

@andersramsay • @agileuxmeetup • #agileux

@andersramsay • @agileuxmeetup • #agileux

Why a talk on Agile Dev Practices?

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

@andersramsay • @agileuxmeetup • #agileux

@andersramsay • @agileuxmeetup • #agileux

Pseudo Code

Test-Driven Development

Pair Programming

Refactoring/Technical Debt

Continuous Integration

@andersramsay • @agileuxmeetup • #agileux

Shoutout: @aviflombaum at @flatironschool

bit.ly/alien-sandwich-workshop

@andersramsay • @agileuxmeetup • #agileux

@andersramsay • @agileuxmeetup • #agileux

Let’s look at some alien sandwich instructions…

@andersramsay • @agileuxmeetup • #agileux

Writing Pseudo Code

@andersramsay • @agileuxmeetup • #agileux

Pseudocode is a natural language description of what a computer

program should do.

@andersramsay • @agileuxmeetup • #agileux

Make Sandwich

My Alien Sandwich Instructions…

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

A more practical example

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

@andersramsay • @agileuxmeetup • #agileux

Some Benefits of Pseudo Code

A logic-based approach to writing user flows.

A coder/designer communication bridge.

Improved design coverage.

@andersramsay • @agileuxmeetup • #agileux

Pair Programming

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

@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.

@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.

@andersramsay • @agileuxmeetup • #agileux

Test-Driven Development

@andersramsay • @agileuxmeetup • #agileux

Test-Driven Development:Testing code, not users.

@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.

@andersramsay • @agileuxmeetup • #agileux

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

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

@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.

@andersramsay • @agileuxmeetup • #agileux

Refactoring and Technical Debt

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.

@andersramsay • @agileuxmeetup • #agileux

–Kent Beck

“Make it Work.

Make it Good.

Make it Fast.”

@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.

@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.

@andersramsay • @agileuxmeetup • #agileux

Continuous Integration

@andersramsay • @agileuxmeetup • #agileux

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

@andersramsay • @agileuxmeetup • #agileux

Traditional Integration

@andersramsay • @agileuxmeetup • #agileux

Continuous Integration…and knowledge sharing.

@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.

@andersramsay • @agileuxmeetup • #agileux

Thanks!