engineering anti-patterns @jqueryto 2014

101
nahim nasser VP of Engineering @BNOTIONS @NAHIMNASSER

Upload: nahim-nasser

Post on 04-Jul-2015

508 views

Category:

Technology


1 download

DESCRIPTION

Engineering Anti-Patterns @JQueryTO 2014

TRANSCRIPT

Page 1: Engineering Anti-Patterns @JQueryTO 2014

nahim nasserVP of Engineering @BNOTIONS @NAHIMNASSER

Page 2: Engineering Anti-Patterns @JQueryTO 2014

ANTI-PATTERNS

ENGINEERING

Page 3: Engineering Anti-Patterns @JQueryTO 2014

WHAT are ANTI-PATTERNs?

Page 4: Engineering Anti-Patterns @JQueryTO 2014

Repeated patterns that result

in negative consequences

Page 5: Engineering Anti-Patterns @JQueryTO 2014

Repeated patterns that result

in negative consequences

When solutions exist

Page 6: Engineering Anti-Patterns @JQueryTO 2014

84%Of ALL software projects fail

Page 7: Engineering Anti-Patterns @JQueryTO 2014

anti-patterns

ARE

Lessons learned

Page 8: Engineering Anti-Patterns @JQueryTO 2014

anti-patterns

ARE Heavily Documented

Page 9: Engineering Anti-Patterns @JQueryTO 2014
Page 10: Engineering Anti-Patterns @JQueryTO 2014

Hope you weren’t apart of this one

Page 11: Engineering Anti-Patterns @JQueryTO 2014

Not to be confused with Test Driven Development

Page 12: Engineering Anti-Patterns @JQueryTO 2014

Ouch.

Page 13: Engineering Anti-Patterns @JQueryTO 2014

Whats wrong with that? Haha…

Page 14: Engineering Anti-Patterns @JQueryTO 2014

Key takeaways

Page 15: Engineering Anti-Patterns @JQueryTO 2014

anti patterns are bad

Page 16: Engineering Anti-Patterns @JQueryTO 2014

it is good to be able to recognize them

anti patterns are bad

Page 17: Engineering Anti-Patterns @JQueryTO 2014

it is good to be able to recognize them

It’s even better to know what to do when

you find them

anti patterns are bad

Page 18: Engineering Anti-Patterns @JQueryTO 2014

it is good to be able to recognize them

overcoming anti-patterns unlocks incredible

potential in your organization

anti patterns are bad

It’s even better to know what to do when

you find them

Page 19: Engineering Anti-Patterns @JQueryTO 2014
Page 20: Engineering Anti-Patterns @JQueryTO 2014

Encounters with

Anti-Patterns

Page 21: Engineering Anti-Patterns @JQueryTO 2014

Analysis paralysis

AntiPattern #1

Page 22: Engineering Anti-Patterns @JQueryTO 2014

Analyzing for too

long, while the

opportunity passes

Page 23: Engineering Anti-Patterns @JQueryTO 2014

Choosing A

TECHNOLOGY

STACK

Page 24: Engineering Anti-Patterns @JQueryTO 2014
Page 25: Engineering Anti-Patterns @JQueryTO 2014

Convergence in language features,

fragmentation in the number of

languages

Page 26: Engineering Anti-Patterns @JQueryTO 2014

Comparsion MAtrices

Page 27: Engineering Anti-Patterns @JQueryTO 2014

Comparsion MAtricesTODO APPS

Page 28: Engineering Anti-Patterns @JQueryTO 2014

Comparsion MAtricesTODO APPS

Community Researchhiring market research

Page 29: Engineering Anti-Patterns @JQueryTO 2014

Comparsion MAtricesTODO APPS

Community Research

COST-benefit Analysis

hiring market researchTradeoff analysis

Page 30: Engineering Anti-Patterns @JQueryTO 2014

Comparsion MAtricesTODO APPS

Community Research

COST-benefit Analysis

hiring market researchTradeoff analysis

EASY TO GET TRAPPED

Page 31: Engineering Anti-Patterns @JQueryTO 2014

0

25

50

75

100

Opportunity Cost Benefits

analysis paralysis

Page 32: Engineering Anti-Patterns @JQueryTO 2014

0

25

50

75

100

Opportunity Cost Benefits

analysis paralysis

Page 33: Engineering Anti-Patterns @JQueryTO 2014
Page 34: Engineering Anti-Patterns @JQueryTO 2014

Agile was designed to

attack analysis paralysis

to handle changing

business requirements

Page 35: Engineering Anti-Patterns @JQueryTO 2014

incremental

development

the solution was

Page 36: Engineering Anti-Patterns @JQueryTO 2014

everyone started applying

this to business requirements

Page 37: Engineering Anti-Patterns @JQueryTO 2014

what if we applied this

to our technology stack?

Page 38: Engineering Anti-Patterns @JQueryTO 2014

What if we accounted

for incremental

renovation right from

the start?

Page 39: Engineering Anti-Patterns @JQueryTO 2014

Language agnostic

Page 40: Engineering Anti-Patterns @JQueryTO 2014

framework Agnostic

Language agnostic

Page 41: Engineering Anti-Patterns @JQueryTO 2014

platform agnostic

framework Agnostic

Language agnostic

Page 42: Engineering Anti-Patterns @JQueryTO 2014

acknowledge

the rebuild

Page 43: Engineering Anti-Patterns @JQueryTO 2014

SIDE EFFECTS

Page 44: Engineering Anti-Patterns @JQueryTO 2014

birth of the ‘polyglot'

programmers

Page 45: Engineering Anti-Patterns @JQueryTO 2014

technology choice

agility

is also a great

motivator for engineers

Page 46: Engineering Anti-Patterns @JQueryTO 2014
Page 47: Engineering Anti-Patterns @JQueryTO 2014

EXTINCT BY INSTINCT

Page 48: Engineering Anti-Patterns @JQueryTO 2014

ANALYSIS

PARALYsIS

extinct by

instinct

Page 49: Engineering Anti-Patterns @JQueryTO 2014

design by committee

AntiPattern #2

Page 50: Engineering Anti-Patterns @JQueryTO 2014

too many software designers

Page 51: Engineering Anti-Patterns @JQueryTO 2014

No unifying plan or visiontoo many software designers

Page 52: Engineering Anti-Patterns @JQueryTO 2014
Page 53: Engineering Anti-Patterns @JQueryTO 2014

erwin edge-case

Page 54: Engineering Anti-Patterns @JQueryTO 2014

not bad to have a

few designers,

but unification is

critical

Page 55: Engineering Anti-Patterns @JQueryTO 2014

Your app might work

Page 56: Engineering Anti-Patterns @JQueryTO 2014

ok now lets create

some new features

Page 57: Engineering Anti-Patterns @JQueryTO 2014

vomit

Page 58: Engineering Anti-Patterns @JQueryTO 2014

more vomit

Insult to injury

Page 59: Engineering Anti-Patterns @JQueryTO 2014

“It is better to have a system omit

certain anomalous features… than

to have one that contains many

good but independent and

uncoordinated ideas.”

-Frederick brooks (mmm)

Page 60: Engineering Anti-Patterns @JQueryTO 2014

recommended solution:

Designated design leader

!

Page 61: Engineering Anti-Patterns @JQueryTO 2014

Designated design leader

!reform meeting processes

recommended solution:

Page 62: Engineering Anti-Patterns @JQueryTO 2014

Designated design leader

!reform meeting processes

explicit roles and outcomes

recommended solution:

Page 63: Engineering Anti-Patterns @JQueryTO 2014

“…conceptual integrity is the

most important consideration in

system design. “

-Frederick brooks (mmm)

Page 64: Engineering Anti-Patterns @JQueryTO 2014
Page 65: Engineering Anti-Patterns @JQueryTO 2014

reinventing the square wheel

AntiPattern #3

Page 66: Engineering Anti-Patterns @JQueryTO 2014

Failing to adopt an existing

solution

Page 67: Engineering Anti-Patterns @JQueryTO 2014

Failing to adopt an existing

solution

and instead adopting a

custom solution

Page 68: Engineering Anti-Patterns @JQueryTO 2014

which performs

much worse

than the existing

one

Page 69: Engineering Anti-Patterns @JQueryTO 2014

“Hey, there’s this great

library that does exactly

what you need”

-you

Page 70: Engineering Anti-Patterns @JQueryTO 2014

“That library will take a

while to learn, and i can write

it better myself faster”

-Ricky Rewrite

Page 71: Engineering Anti-Patterns @JQueryTO 2014

rookie management

Page 72: Engineering Anti-Patterns @JQueryTO 2014

rookie management& pride

Page 73: Engineering Anti-Patterns @JQueryTO 2014

Recommended solution:

period of library mining

!

Page 74: Engineering Anti-Patterns @JQueryTO 2014

lean towards

battle-tested

solutions

Page 75: Engineering Anti-Patterns @JQueryTO 2014

lean towards

battle-tested

solutionslibraries that have

been tried, tested,

and have traction.

Page 76: Engineering Anti-Patterns @JQueryTO 2014
Page 77: Engineering Anti-Patterns @JQueryTO 2014

impact organizational structure

Antipatterns

Page 78: Engineering Anti-Patterns @JQueryTO 2014

impact Management principles

Antipatterns

Page 79: Engineering Anti-Patterns @JQueryTO 2014

impact how effective you are as an engineer

Antipatterns

Page 80: Engineering Anti-Patterns @JQueryTO 2014

BNOTIONS ENGINEERINGANTI-anti-patterns manifested in

Page 81: Engineering Anti-Patterns @JQueryTO 2014

mastery

Page 82: Engineering Anti-Patterns @JQueryTO 2014

mastery

Autonomy

Page 83: Engineering Anti-Patterns @JQueryTO 2014

mastery

Autonomy

purpose

Page 84: Engineering Anti-Patterns @JQueryTO 2014

constantly

improving your craft

mastery

Page 85: Engineering Anti-Patterns @JQueryTO 2014

manifestation:mastery

internal education

Technology choice Agility

challenging work

Page 86: Engineering Anti-Patterns @JQueryTO 2014

Autonomy

Page 87: Engineering Anti-Patterns @JQueryTO 2014

Autonomyacting with choice

and influence

Page 88: Engineering Anti-Patterns @JQueryTO 2014

manifestation:autonomy

self-directed teams

teams choose what they work on

teams choose who they work with

teams choose how they build projects

Page 89: Engineering Anti-Patterns @JQueryTO 2014

BOTTOM UP

TECHNOLOGY

ADOPTION

Page 90: Engineering Anti-Patterns @JQueryTO 2014

purposeintrinsic motivation

beyond profitability

Page 91: Engineering Anti-Patterns @JQueryTO 2014

manifestation:purpose

constant alignment with the

organization’s vision

Page 92: Engineering Anti-Patterns @JQueryTO 2014
Page 93: Engineering Anti-Patterns @JQueryTO 2014

mastery

Page 94: Engineering Anti-Patterns @JQueryTO 2014

mastery

Autonomy

Page 95: Engineering Anti-Patterns @JQueryTO 2014

mastery

Autonomy

purpose

Page 96: Engineering Anti-Patterns @JQueryTO 2014

positive effect on business outcomes

Page 97: Engineering Anti-Patterns @JQueryTO 2014

positive effect on personal happiness

Page 98: Engineering Anti-Patterns @JQueryTO 2014

positive effect on ‘work’ engagement

Page 99: Engineering Anti-Patterns @JQueryTO 2014

anti-patterns

design patterns

Page 100: Engineering Anti-Patterns @JQueryTO 2014

anti-patterns

design patterns

well rounded leadership

Page 101: Engineering Anti-Patterns @JQueryTO 2014

@NAHIMNASSER@BNOTIONS

email me your stories: [email protected]