agile developer practices from a ux perspective
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.TRANSCRIPT
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!