131

10 Reasons Your Software Sucks - Election 2012 Edition

Embed Size (px)

Citation preview

Page 1: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 2: 10 Reasons Your Software Sucks - Election 2012 Edition

10 Reasons your software Sucks(and the 10 practices you need to fix it)

Page 3: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 4: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 5: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 6: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 7: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 8: 10 Reasons Your Software Sucks - Election 2012 Edition

Caleb

Page 9: 10 Reasons Your Software Sucks - Election 2012 Edition

Development

Experience

Object Orientation

SOLID + Patterns + Simple Design

Secure Coding

Infrastructure

Automated Tests

Source Control

Automated Builds

Team Process

Agile, Lean, XP

Team Dynamics

Continuous Learning

Bui ld ing teams that engineer better software

Development ∙ Infrastructure ∙ Team Process

Page 10: 10 Reasons Your Software Sucks - Election 2012 Edition

Caleb

developingUX.comspeakermix.com/calebjenkins

@calebjenkins

Page 11: 10 Reasons Your Software Sucks - Election 2012 Edition

developingUX.comspeakermix.com/calebjenkins

@calebjenkins

Page 12: 10 Reasons Your Software Sucks - Election 2012 Edition

developingUX.comspeakermix.com/calebjenkins

@calebjenkins

Page 13: 10 Reasons Your Software Sucks - Election 2012 Edition

10 Reasons why your software Sucks(and the 10 practices you need to fix it)

back to…

Page 14: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 15: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 16: 10 Reasons Your Software Sucks - Election 2012 Edition

Bui ld ing teams that engineer better software

Page 17: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 18: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 19: 10 Reasons Your Software Sucks - Election 2012 Edition

Development

Page 20: 10 Reasons Your Software Sucks - Election 2012 Edition

Development

Testable

Repeatable

Maintainable Reliable-able

ScalableExtensible

Deliverable

Workable

Page 21: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 22: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 23: 10 Reasons Your Software Sucks - Election 2012 Edition

(User) Experience Matters!

Page 24: 10 Reasons Your Software Sucks - Election 2012 Edition

User Experienc

e(UX)

Developer Experience

(API’s & SDK’s)

Page 25: 10 Reasons Your Software Sucks - Election 2012 Edition

Experience is Reality

User Experienc

e(UX)

Developer Experience

(API’s & SDK’s)

Reality is Perception

Perception is the Product

Page 26: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 27: 10 Reasons Your Software Sucks - Election 2012 Edition

ui

backend

ux

securityperformance

scalability

iauxdvisual design

Page 28: 10 Reasons Your Software Sucks - Election 2012 Edition

Experience is the Product ui

backend

ux

securityperformance

scalabilityuxiauxdvisual design

Page 29: 10 Reasons Your Software Sucks - Election 2012 Edition

Experience is the Product

Page 30: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 31: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 32: 10 Reasons Your Software Sucks - Election 2012 Edition

DevelopmentObject Orientation

It’s amazing how many people write procedural code in an OO environment

EncapsulationInheritance

Polymorphism

Page 33: 10 Reasons Your Software Sucks - Election 2012 Edition

DevelopmentObject Orientation

OO

Procedural

Functional

Use Right Tool for the Right Job

It’s amazing how many people write procedural code in an OO environment

EncapsulationInheritance

Polymorphism

Page 34: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 35: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 36: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 37: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 38: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 39: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 40: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 41: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 42: 10 Reasons Your Software Sucks - Election 2012 Edition

http://developingUX.com/di/

Page 43: 10 Reasons Your Software Sucks - Election 2012 Edition

“The single greatest thing that you can do to make your code more testable and healthy is to start taking a Dependency Injection approach to writing software”

“The single greatest thing that you can do to make your code more testable and healthy is to start taking a Dependency Injection approach to writing software”

- Real World .NET, C# and SilverlightWrox Press 2012

Caleb Jenkins

- Real World .NET, C# and SilverlightWrox Press 2012

Caleb Jenkins

Page 44: 10 Reasons Your Software Sucks - Election 2012 Edition

DevelopmentExperience

Object Orientation

SOLID + Patterns + Simple Design

Page 45: 10 Reasons Your Software Sucks - Election 2012 Edition

VocabularycommonScenarioscommon

Answersproven

SOLID + Patterns + Simple Design

Page 46: 10 Reasons Your Software Sucks - Election 2012 Edition

Patterns

MVCUI MVP

UI

MVVMUI

RepositoryData

FactoryCompone

nt

StrategyCompone

ntDecoratorFacade

Visitor

Page 47: 10 Reasons Your Software Sucks - Election 2012 Edition

Patterns

MVCUI MVP

UI

MVVMUI

RepositoryData

FactoryCompone

nt

StrategyCompone

ntDecoratorFacade

Visitor

Chain of Responsibility

Abstract Factory

More

MoreState

More

More

Page 48: 10 Reasons Your Software Sucks - Election 2012 Edition

Patterns

MVCUI MVP

UI

MVVMUI

RepositoryData

FactoryCompone

nt

StrategyCompone

ntDecoratorFacade

Visitor

Chain of Responsibility

Abstract Factory

More

More

MoreState

MoreMore

MoreMore

MoreMore

MoreMore

More

MoreMoreMoreMore

More

More

More

More

More

More

Page 49: 10 Reasons Your Software Sucks - Election 2012 Edition

Beware the

anti-pattern pattern!

Page 50: 10 Reasons Your Software Sucks - Election 2012 Edition

Beware the

anti-pattern pattern!Gotta try ‘em all!

Page 51: 10 Reasons Your Software Sucks - Election 2012 Edition

MVCUI

RepositoryData

Abstract Factoryor Strategy

Compone

nt

SOLID + Patterns + Simple DesignSOLID + Patterns + Simple Design

Page 52: 10 Reasons Your Software Sucks - Election 2012 Edition

“Any intelligent fool can make things Bigger, more complex and more violent It takes a touch of

Genius – and a lot of courage – to move in the opposite direction”

– Albert Einstein

Page 53: 10 Reasons Your Software Sucks - Election 2012 Edition

SOLID + Patterns + Simple Design

Page 54: 10 Reasons Your Software Sucks - Election 2012 Edition

DevelopmentExperience

Object Orientation

SOLID + Patterns + Simple Design

Page 55: 10 Reasons Your Software Sucks - Election 2012 Edition

Development

Secure Coding

Experience

Object Orientation

SOLID + Patterns + Simple Design

Page 56: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 57: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 58: 10 Reasons Your Software Sucks - Election 2012 Edition

Secure Coding

http://developingux.com/2010/02/10/secure-coding-101/

Page 59: 10 Reasons Your Software Sucks - Election 2012 Edition

No SilverBullets

Page 60: 10 Reasons Your Software Sucks - Election 2012 Edition

Secure Coding

Play in a Sandbox Don’t Use

Passwords

Input is Evil

Page 61: 10 Reasons Your Software Sucks - Election 2012 Edition

Secure Coding

Play in a Sandbox Don’t Use

Passwords

Input is Evil

runtime

memory

least privilege

“safe” libraries

Page 62: 10 Reasons Your Software Sucks - Election 2012 Edition

http://xkcd.com/327/

Page 63: 10 Reasons Your Software Sucks - Election 2012 Edition

Secure Coding

http://msdn.microsoft.com/security/

Page 64: 10 Reasons Your Software Sucks - Election 2012 Edition

DevelopmentObject Orientation

SOLID

Patterns

Secure Coding

Page 65: 10 Reasons Your Software Sucks - Election 2012 Edition

Team Work

Page 66: 10 Reasons Your Software Sucks - Election 2012 Edition

Team Work Friction

Communication

Silos

Coordination

Toe Stepping

Throughput

Page 67: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 68: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 69: 10 Reasons Your Software Sucks - Election 2012 Edition

DoTestcode

you

Your ?

Page 70: 10 Reasons Your Software Sucks - Election 2012 Edition

UnitDo

Testcode

you

Your ?

Page 71: 10 Reasons Your Software Sucks - Election 2012 Edition

UnitDo

Testcode

automatedyou

Your ?

Page 72: 10 Reasons Your Software Sucks - Election 2012 Edition

what’s the difference?

Page 73: 10 Reasons Your Software Sucks - Election 2012 Edition

Traditional Test

Page 74: 10 Reasons Your Software Sucks - Election 2012 Edition

Unit Test

Page 75: 10 Reasons Your Software Sucks - Election 2012 Edition

Automated Test

Page 76: 10 Reasons Your Software Sucks - Election 2012 Edition

TDD / BDD

Page 77: 10 Reasons Your Software Sucks - Election 2012 Edition

of Testing

Page 78: 10 Reasons Your Software Sucks - Election 2012 Edition

of Testing

I test my app

It compiled didn’t it?

Page 79: 10 Reasons Your Software Sucks - Election 2012 Edition

of Testing

I test my app

I test units of workin my app

It compiled didn’t it?

DI + Mock are my best

friends

Page 80: 10 Reasons Your Software Sucks - Election 2012 Edition

of Testing

I test my app

I test units of workin my app

I run automated

unit tests

It compiled didn’t it?

DI + Mock are my best

friends

CI FTW!

Page 81: 10 Reasons Your Software Sucks - Election 2012 Edition

of Testing

I test my app

I test units of workin my app

I run automated

unit tests

I test first

It compiled didn’t it?

DI + Mock are my best

friends

CI FTW!

Red, Green,

Refactor Rinse + Repeat!

Page 82: 10 Reasons Your Software Sucks - Election 2012 Edition

of Testing

I test my app

I test units of workin my app

I run automated

unit tests

I test first

I write executable

specs to test my app

It compiled didn’t it?

DI + Mock are my best

friends

CI FTW!

Red, Green,

Refactor Rinse + Repeat!

given <><> whenthen<>

Page 83: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 84: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 85: 10 Reasons Your Software Sucks - Election 2012 Edition

of Source Control

Page 86: 10 Reasons Your Software Sucks - Election 2012 Edition

of Source Control

I back up my code

Thumb drives are awesome!

Page 87: 10 Reasons Your Software Sucks - Election 2012 Edition

of Source Control

I back up my code

File Share

Thumb drives are awesome!

Network Share is +1 from

thumb drive

Page 88: 10 Reasons Your Software Sucks - Election 2012 Edition

of Source Control

I back up my code

File Share

VSS was free

Thumb drives are awesome!

Network Share is +1 from

thumb drive

So was herpes

Page 89: 10 Reasons Your Software Sucks - Election 2012 Edition

of Source Control

I back up my code

File Share

VSS was free

Branch +

Merge ReleaseStrategy

Thumb drives are awesome!

Network Share is +1 from

thumb drive

So was herpes

Freedom to code!

TFS, SVN, GIT

Page 90: 10 Reasons Your Software Sucks - Election 2012 Edition

of Source Control

I back up my code

File Share

VSS was free

Branch +

Merge ReleaseStrategy

Automated

Builds CI, Automated Deploy

Thumb drives are awesome!

Network Share is +1 from

thumb drive

So was herpes

Freedom to code!

“worked on my machine”

take THAT auditors!TFS,

SVN, GIT

Page 91: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 92: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 93: 10 Reasons Your Software Sucks - Election 2012 Edition

Developer Operations

Source Control Production

Common Deployment Scenario

Page 94: 10 Reasons Your Software Sucks - Election 2012 Edition

Developer Operations

Source Control Production

Common Deployment Scenario

Retrieve Source

compile + send

binariesconfigure +

deploy binaries

Page 95: 10 Reasons Your Software Sucks - Election 2012 Edition

Developer Operations

Source Control Production

Common Deployment Scenario

Retrieve Source

compile + send

binariesconfigure +

deploy binaries

Page 96: 10 Reasons Your Software Sucks - Election 2012 Edition

Developer Operations

Source Control Production

Improved Deployment Scenario

Page 97: 10 Reasons Your Software Sucks - Election 2012 Edition

Developer Operations

Source Control Production

Improved Deployment Scenario

Updates Source

send .build script

runscript getsource buildbin

configure + deploy

binaries

Page 98: 10 Reasons Your Software Sucks - Election 2012 Edition

Developer Operations

Source Control Production

Improved Deployment Scenario

Updates Source

send .build script

runscript getsource buildbin

configure + deploy

binaries

Page 99: 10 Reasons Your Software Sucks - Election 2012 Edition

of Automated Builds

Page 100: 10 Reasons Your Software Sucks - Election 2012 Edition

of Automated Builds

Visual Studio Build

F5 is How I Roll

Page 101: 10 Reasons Your Software Sucks - Election 2012 Edition

of Automated Builds

Visual Studio Build

CI

F5 is How I Roll

Included in TFS, Cruise

Control,Team City,Jenkins CI

Page 102: 10 Reasons Your Software Sucks - Election 2012 Edition

of Automated Builds

Visual Studio Build

CI Multi-Environment

Builds

F5 is How I Roll

Included in TFS, Cruise

Control,Team City,Jenkins CI

Dev, Test, Stage,

Production

Page 103: 10 Reasons Your Software Sucks - Election 2012 Edition

of Automated Builds

Visual Studio Build

CI Multi-Environment

Builds

Build from script

F5 is How I Roll

Included in TFS, Cruise

Control,Team City,Jenkins CI

Dev, Test, Stage,

Production

Source? Yes, run

this .build

Page 104: 10 Reasons Your Software Sucks - Election 2012 Edition

of Automated Builds

Visual Studio Build

CI Multi-Environment

Builds

Build from script

Hands

Off Deployment

F5 is How I Roll

Included in TFS, Cruise

Control,Team City,Jenkins CI

Dev, Test, Stage,

Production

Source? Yes, run

this .build

Disaster Recovery Plan

+Auditor Compliance

done

Page 105: 10 Reasons Your Software Sucks - Election 2012 Edition

Process

Page 106: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 107: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 108: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 109: 10 Reasons Your Software Sucks - Election 2012 Edition

Agile, Lean, XP

Scrum Kanban

Push Pull

Learn by doing

Daily Stand UpsSize Units of

WorkProductBacklog

SprintBacklog

Page 110: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 111: 10 Reasons Your Software Sucks - Election 2012 Edition

?WAIT! What about …Task boards, Information Radiators Reducing Work In Progress, Time Boxing Self Organization, Pull vs Push, Empowerment, Continuous Learning, Planning Poker, Story Sizing, Velocity, Team Swarming… etc, etc, etc..

Page 112: 10 Reasons Your Software Sucks - Election 2012 Edition

Scrum is Simplenot to be confused with easy

Page 113: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 114: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 115: 10 Reasons Your Software Sucks - Election 2012 Edition

Team Dynamics

Pairing colocation

colocationmentality (virtual)

ownershipInformation Broadcasting

size

silos

Page 117: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 118: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 119: 10 Reasons Your Software Sucks - Election 2012 Edition

Continuous Learning

How do you learn?

Sources?

Blogs

Podcasts

Conferences

Books

Page 120: 10 Reasons Your Software Sucks - Election 2012 Edition

Continuous Learning

http://dimecasts.net/

Page 121: 10 Reasons Your Software Sucks - Election 2012 Edition

What are we saying here?

Page 122: 10 Reasons Your Software Sucks - Election 2012 Edition

BePASSIONATE

about what you do

Page 123: 10 Reasons Your Software Sucks - Election 2012 Edition

Elect good Code!

Page 124: 10 Reasons Your Software Sucks - Election 2012 Edition

Development Infrastructure Team Process

1 Experience

2Object Orientation

3 SOLID + Patterns + Simple Design

4 Secure Coding

Bui ld ing teams that engineer better software

5 Automated Tests

6 Source Control

7 Automated Builds

8 Agile, Lean, XP

9 Team Dynamics

Continuous Learning

10

Page 125: 10 Reasons Your Software Sucks - Election 2012 Edition
Page 126: 10 Reasons Your Software Sucks - Election 2012 Edition

Thank

you!

developingUX.comspeakermix.com/calebjenkins

@calebjenkins

Page 127: 10 Reasons Your Software Sucks - Election 2012 Edition

Thank

you!

developingUX.comspeakermix.com/calebjenkins

@calebjenkins

Awesome

Reviews go

here!

Page 128: 10 Reasons Your Software Sucks - Election 2012 Edition

http://www.flickr.com/photos/robbie_ewing/4407711326/

http://www.flickr.com/photos/phill_dvsn/2999253384/sizes/l/

http://www.flickr.com/photos/nikophoto33/3153621333/

http://www.flickr.com/photos/houseofsims/3121970656/

http://www.flickr.com/photos/houseofsims/3121146677/

Photo Credits© Michael Cummings - http://dreaminpictures.com

Page 129: 10 Reasons Your Software Sucks - Election 2012 Edition

http://www.flickr.com/photos/planetpixel/1450985177/

http://www.flickr.com/photos/trinhanhtuan/3292319375/

http://www.flickr.com/photos/pagedooley/2760837590/

http://www.flickr.com/photos/pagedooley/3049370253/

http://www.flickr.com/photos/bruceberrien/4262228892/

http://www.flickr.com/photos/8363028@N08/3050922569/

http://www.flickr.com/photos/houseofsims/3121979028/

Page 130: 10 Reasons Your Software Sucks - Election 2012 Edition

http://www.flickr.com/photos/pagedooley/1856663523/

http://www.flickr.com/photos/joelogon/3161771573/

http://www.flickr.com/photos/carbonnyc/2294144289/

http://www.flickr.com/photos/shadowgate/4515454160/

http://www.flickr.com/photos/grahamcrewe/396400543/

http://www.lostechies.com/blogs/derickbailey/archive/2009/02/11/solid-development-principles-in-motivational-pictures.aspx

Page 131: 10 Reasons Your Software Sucks - Election 2012 Edition

Copyright © 2011 – Buddy Lindsey – Used with Permission

Copyright Sesame Street – Used without Permission