Transcript
Page 1: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 2: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 3: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 4: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 5: 10 Reasons Your Software Sucks 2014 - Tax Day 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 6: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 7: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

developingUX.comspeakermix.com/calebjenkins

@calebjenkins#ctcc14

Page 8: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

developingUX.comspeakermix.com/calebjenkins

@calebjenkins#ctcc14

Page 9: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 10: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 11: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 12: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 13: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 14: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

Bui ld ing teams that engineer better software

Page 15: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

Development

Page 16: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

Development

Testable

Repeatable

Maintainable Reliable-able

ScalableExtensible

Deliverable

Workable

Page 17: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 18: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 19: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

(User) Experience Matters!

Page 20: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

Experience is Reality

User Experienc

e(UX)

Developer Experience

(API’s & SDK’s)

Reality is Perception

Perception is the Product

Page 21: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 22: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

uiuxiauxdvisual design

Page 23: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

Experience is the Product ui

backend

ux

securityperformance

scalabilityuxiauxdvisual design

Page 24: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

Experience is the Product

Page 25: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 26: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 27: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

(Code) Quality Matters!

Page 28: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

DevelopmentObject Orientation

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

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 29: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 30: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 31: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

Commitment is

more

than a date!

Page 32: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 33: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 34: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 35: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 36: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 37: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 38: 10 Reasons Your Software Sucks 2014 - Tax Day 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 39: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

Note:Dependency InjectionNote:Dependency Injection

will turn you in to a complete coding Ninja, however the full scope of DI with any of the many DI frameworks is beyond the scope of this talk

will turn you in to a complete coding Ninja, however the full scope of DI with any of the many DI frameworks is beyond the scope of this talk

Page 40: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

http://developingUX.com/di/

Page 41: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

DevelopmentExperience

Object Orientation

SOLID + Patterns + Simple Design

Page 42: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

DevelopmentExperience

Object Orientation

SOLID + Patterns + Simple Design

Page 43: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

VocabularycommonScenarioscommon

Answersproven

SOLID + Patterns + Simple Design

Page 44: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

Patterns

MVCUI MVP

UI

MVVMUI

RepositoryData

FactoryCompone

nt

StrategyCompone

nt

Page 45: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

Patterns

MVCUI MVP

UI

MVVMUI

RepositoryData

FactoryCompone

nt

StrategyCompone

ntDecoratorFacade

Visitor

Chain of Responsibility

Abstract Factory

State

Page 46: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

Patterns

MVCUI MVP

UI

MVVMUI

RepositoryData

FactoryCompone

nt

StrategyCompone

ntDecoratorFacade

Visitor

Chain of Responsibility

Abstract Factory

More

More

MoreState

MoreMore

More

Page 47: 10 Reasons Your Software Sucks 2014 - Tax Day 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 48: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

Beware the

anti-pattern pattern!Gotta try ‘em all!

Page 49: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

MVCUI

RepositoryData

Abstract Factoryor Strategy

Compone

nt

SOLID + Patterns + Simple DesignSOLID + Patterns + Simple Design

Page 50: 10 Reasons Your Software Sucks 2014 - Tax Day 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 51: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

SOLID + Patterns + Simple Design

Page 52: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

DevelopmentExperience

Object Orientation

SOLID + Patterns + Simple Design

Page 53: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

Development

Secure Coding

Experience

Object Orientation

SOLID + Patterns + Simple Design

Page 54: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 55: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 56: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

Secure Coding

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

Page 57: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 58: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 59: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

Secure Coding

Play in a Sandbox Don’t Use

Passwords

Input is Evil

runtime

memory

least privilege

“safe” libraries

Page 60: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

http://xkcd.com/327/

Page 61: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

Defense in Depth (MS03-007)Windows Server 2003 Unaffected

The underlying DLL (NTDLL.DLL) not vulnerable

Code made more conservative during Security Push

Even if it was running IIS 6.0 doesn’t have WebDAV enabled by default

Even if it did have WebDAV enabled

Maximum URL length in IIS 6.0 is 16kb by default (>64kb needed)

Even if it was vulnerable IIS 6.0 not running by default on Windows Server 2003

Even if it there was an exploitable buffer overrun

Would have occurred in w3wp.exe which is now running as ‘network service’

Even if the buffer was large enough

Process halts rather than executes malicious code, due to buffer-overrun detection code (-GS)

Page 62: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

Defense in Depth (MS03-007)Windows Server 2003 Unaffected

Page 63: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

““Multiple redundant safety systems. Nuclear

plants are designed according to a "defense in depth" philosophy that requires redundant, diverse, reliable safety systems. Two or more safety systems perform key functions independently, such that, if one fails, there is always another to back it up, providing continuous protection.

- Nuclear Energy Institute

Page 64: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

System Failures can be Bad

Page 65: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

System Failures can be Bad

Page 66: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

Secure Coding

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

Page 67: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

DevelopmentObject Orientation

SOLID

Patterns

Secure Coding

Page 68: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

Team Work

Page 69: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

Team Work Friction

Communication

Silos

Coordination

Toe Stepping

Throughput

Page 70: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 71: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 72: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

DoTestcode

you

Your ?

Page 73: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

UnitDo

Testcode

you

Your ?

Page 74: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

UnitDo

Testcode

automatedyou

Your ?

Page 75: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

what’s the difference?

Page 76: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

Traditional Test

Page 77: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

Unit Test

Page 78: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

Automated Test

Page 79: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

TDD / BDD

Page 80: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 81: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 82: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 83: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 84: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

“They have a great brand, an awesome

business model… but their technical debt is

killing them”- Carl Sparks

CEO Travelocitytalking about another company

Page 85: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

“Automated unit tests make up one of the core staples in reducing technical debt, and improving a team’s overall code quality”

“Automated unit tests make up one of the core staples in reducing technical debt, and improving a team’s overall code quality”

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

Caleb Jenkins

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

Caleb Jenkins

Page 86: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

of Testing

Page 87: 10 Reasons Your Software Sucks 2014 - Tax Day 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 88: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 89: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 90: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

of Source Control

Page 91: 10 Reasons Your Software Sucks 2014 - Tax Day 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 92: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

// svn// trunk

// r1

// dev1

// dev 2

// dev 3

// r2 // r3

// r1.1

// trunk

//

// svn

?

consider: branch early vs branch late strategy

Page 93: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 94: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 95: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 96: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

Developer Operations

Source Control Production

Common Deployment Scenario

Retrieve Source

compile + send

binariesconfigure +

deploy binaries

Page 97: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

Developer Operations

Source Control Production

Common Deployment Scenario

Retrieve Source

compile + send

binariesconfigure +

deploy binaries

Page 98: 10 Reasons Your Software Sucks 2014 - Tax Day 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 2014 - Tax Day Edition!

Developer Operations

Source Control Production

Improved Deployment Scenario

Updates Source

send .build script

runscript getsource buildbin

configure + deploy

binaries

Page 100: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

of Automated Builds

Page 101: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

of Automated Builds

IDEBuild

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 102: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

Process

Page 103: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 104: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 105: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

Plan

Page 106: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

DoPlan

Page 107: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

DoPlan

DP DP DP

-vs-

Page 108: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

DoPlan

DP DP DP

-vs-

Page 109: 10 Reasons Your Software Sucks 2014 - Tax Day 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 2014 - Tax Day Edition!
Page 111: 10 Reasons Your Software Sucks 2014 - Tax Day 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 2014 - Tax Day Edition!

Scrum is Simplenot to be confused with easy

Page 113: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 114: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 115: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

Team Dynamics

Pairing colocation

colocationmentality (virtual)

ownershipInformation Broadcasting

self organizing

silos

cross-functional

Page 117: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

http://www.youtube.com/watch?v=Q6jMgmPIxmk

Page 118: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 119: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 120: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

A.B.L.Always Be Learning

Page 121: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

Continuous Learning

How do you learn?

Sources?

Blogs

Podcasts

Conferences

Books

Page 122: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

Continuous Learning

http://dimecasts.net/

Page 123: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

What are we saying here?

Page 124: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

BePASSIONATE

about what you do

Page 125: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!
Page 126: 10 Reasons Your Software Sucks 2014 - Tax Day 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 127: 10 Reasons Your Software Sucks 2014 - Tax Day 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 128: 10 Reasons Your Software Sucks 2014 - Tax Day 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 129: 10 Reasons Your Software Sucks 2014 - Tax Day 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 130: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

Copyright © 2011 – Buddy Lindsey – Used with Permission

Page 131: 10 Reasons Your Software Sucks 2014 - Tax Day Edition!

developingUX.comspeakermix.com/calebjenkins

@calebjenkins


Top Related