44
@jacdevos [email protected] We are all product designers! @jacdevos [email protected]

Dev conf 2017 - What is software product design

Embed Size (px)

Citation preview

@jacdevos [email protected]

We are all product designers!

@jacdevos [email protected]

@jacdevos [email protected]

Who here builds software?

@jacdevos [email protected]

Software is still a new thing

@jacdevos [email protected]

@jacdevos [email protected]

Design Thinking

http://dschool.stanford.edu/

@jacdevos [email protected] monteronesteinerranch.files.wordpress.

com

@jacdevos [email protected]

Empathise:go out and learn about user needs

@jacdevos [email protected]

Define:frame the problem from user insights

@jacdevos [email protected]

Ideate:use all brains to get solutions

@jacdevos [email protected]

Prototype:create a representation we can show

(or taste!)

@jacdevos [email protected]

Test:test assumptions through user feedback

@jacdevos [email protected]

Iterate

@jacdevos [email protected]

Not a state, but a process

Not magic, but hard work

Learning about real user needs

Iterate and experiment… until its tasty

Design makes things “tasty”

@jacdevos [email protected]

What does this have to do with software products?

@jacdevos [email protected]

Software product development is often a pretty Wicked Problem

@jacdevos [email protected]

Big Bangsjust don’t work on Wicked Problems

ALICE NERR/THINKSTOCK

@jacdevos [email protected]

We need feedback tobuild better products

@jacdevos [email protected] software iteratively

@jacdevos [email protected]

Build

-> Code

Measure

-> Data

Learn

-> Ideas

Lean StartupMinimise the total time through the loop

@jacdevos [email protected]

But why should I care?I’m a programmer.

I’m not a startup with $100M!

@jacdevos [email protected]

Historical SDLC (vs mature engineering discipline)

Planning Requirements Design Programming Testing Deployment

Engineering Design Construction of Design

@jacdevos [email protected]

What Is Software Design?Jack W. Reeves (1992)

@jacdevos [email protected]

Real software is ones and zerosits incredibly cheap to build but incredibly expensive to design

@jacdevos [email protected]

Code is the ultimate design artefact

@jacdevos [email protected]

Code shows us• real complexity, cost and constraints

• flaws in our problem-solution fit

• the devil in the details

@jacdevos [email protected]

Coding and testing is part of the design process

@jacdevos [email protected]

Modern SDLC (vs mature engineering discipline)

Planning Requirements Design Programming Testing Deployment

Engineering DesignConstruction

of Design

@jacdevos [email protected]

#SoftwareConstructionMustFalldevelopment as construction

metaphor is broken

@jacdevos [email protected]

How would we devif we see it as design process?

@jacdevos [email protected]

Start with the design problem and not technologies

@jacdevos [email protected]

Small Releases to enable iteration

@jacdevos [email protected]

Design Improvement (Refactoring) and

System Metaphor (DDD) ensure code structure reflects product learning

@jacdevos [email protected]

Pair Programming is a design collaboration that creates

code that communicates intent

@jacdevos [email protected]

Simple Design and TDD make changes safer, easier

@jacdevos [email protected]

Continuous Integration gives early verification and allows change

@jacdevos [email protected]

DevOps automates construction -by enabling iteration, it enables design

@jacdevos [email protected]

Testing gives quick design feedback -validation is a key aspect of design

@jacdevos [email protected]

@jacdevos [email protected]

XP practices are product designenablers!

@jacdevos [email protected]

Don’t build software, design it!• Design is a iterative process to create Tasty Products

• Software product development is a Wicked Problem

• Design is a better model than Construction

• Code is our ultimate software design artifact

• XP, Testing and Continuous Delivery are design tools

• Software Developers are Product Designers

@jacdevos [email protected]

Don’t build software, design it!Questions?

@jacdevos [email protected]

@jacdevos [email protected]

@jacdevos [email protected]

Links:

Wicket Problems: http://www.leanessays.com/2002/01/wicked-problems.html?m=1

Waterfall 1970: https://www.cs.umd.edu/class/spring2003/cmsc838p/Process/waterfall.pdf

Code is Design: http://www.developerdotstar.com/mag/articles/reeves_design.html

Design Thinking: https://en.wikipedia.org/wiki/Design_thinking

Design School: http://dschool.stanford.edu

Design Sprint: http://www.thesprintbook.com

Lean Startup: http://theleanstartup.com/

Lean Startup meets design thinking: https://youtu.be/bvFnHzU4_W8

Extreme Programming: https://www.amazon.com/Extreme-Programming-Explained-Embrace-

Change/dp/0321278658

Continuous Delivery: https://www.amazon.com/gp/product/0321601912