engineering anti-patterns @jqueryto 2014

Post on 04-Jul-2015

508 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Engineering Anti-Patterns @JQueryTO 2014

TRANSCRIPT

nahim nasserVP of Engineering @BNOTIONS @NAHIMNASSER

ANTI-PATTERNS

ENGINEERING

WHAT are ANTI-PATTERNs?

Repeated patterns that result

in negative consequences

Repeated patterns that result

in negative consequences

When solutions exist

84%Of ALL software projects fail

anti-patterns

ARE

Lessons learned

anti-patterns

ARE Heavily Documented

Hope you weren’t apart of this one

Not to be confused with Test Driven Development

Ouch.

Whats wrong with that? Haha…

Key takeaways

anti patterns are bad

it is good to be able to recognize them

anti patterns are bad

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

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

Encounters with

Anti-Patterns

Analysis paralysis

AntiPattern #1

Analyzing for too

long, while the

opportunity passes

Choosing A

TECHNOLOGY

STACK

Convergence in language features,

fragmentation in the number of

languages

Comparsion MAtrices

Comparsion MAtricesTODO APPS

Comparsion MAtricesTODO APPS

Community Researchhiring market research

Comparsion MAtricesTODO APPS

Community Research

COST-benefit Analysis

hiring market researchTradeoff analysis

Comparsion MAtricesTODO APPS

Community Research

COST-benefit Analysis

hiring market researchTradeoff analysis

EASY TO GET TRAPPED

0

25

50

75

100

Opportunity Cost Benefits

analysis paralysis

0

25

50

75

100

Opportunity Cost Benefits

analysis paralysis

Agile was designed to

attack analysis paralysis

to handle changing

business requirements

incremental

development

the solution was

everyone started applying

this to business requirements

what if we applied this

to our technology stack?

What if we accounted

for incremental

renovation right from

the start?

Language agnostic

framework Agnostic

Language agnostic

platform agnostic

framework Agnostic

Language agnostic

acknowledge

the rebuild

SIDE EFFECTS

birth of the ‘polyglot'

programmers

technology choice

agility

is also a great

motivator for engineers

EXTINCT BY INSTINCT

ANALYSIS

PARALYsIS

extinct by

instinct

design by committee

AntiPattern #2

too many software designers

No unifying plan or visiontoo many software designers

erwin edge-case

not bad to have a

few designers,

but unification is

critical

Your app might work

ok now lets create

some new features

vomit

more vomit

Insult to injury

“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)

recommended solution:

Designated design leader

!

Designated design leader

!reform meeting processes

recommended solution:

Designated design leader

!reform meeting processes

explicit roles and outcomes

recommended solution:

“…conceptual integrity is the

most important consideration in

system design. “

-Frederick brooks (mmm)

reinventing the square wheel

AntiPattern #3

Failing to adopt an existing

solution

Failing to adopt an existing

solution

and instead adopting a

custom solution

which performs

much worse

than the existing

one

“Hey, there’s this great

library that does exactly

what you need”

-you

“That library will take a

while to learn, and i can write

it better myself faster”

-Ricky Rewrite

rookie management

rookie management& pride

Recommended solution:

period of library mining

!

lean towards

battle-tested

solutions

lean towards

battle-tested

solutionslibraries that have

been tried, tested,

and have traction.

impact organizational structure

Antipatterns

impact Management principles

Antipatterns

impact how effective you are as an engineer

Antipatterns

BNOTIONS ENGINEERINGANTI-anti-patterns manifested in

mastery

mastery

Autonomy

mastery

Autonomy

purpose

constantly

improving your craft

mastery

manifestation:mastery

internal education

Technology choice Agility

challenging work

Autonomy

Autonomyacting with choice

and influence

manifestation:autonomy

self-directed teams

teams choose what they work on

teams choose who they work with

teams choose how they build projects

BOTTOM UP

TECHNOLOGY

ADOPTION

purposeintrinsic motivation

beyond profitability

manifestation:purpose

constant alignment with the

organization’s vision

mastery

mastery

Autonomy

mastery

Autonomy

purpose

positive effect on business outcomes

positive effect on personal happiness

positive effect on ‘work’ engagement

anti-patterns

design patterns

anti-patterns

design patterns

well rounded leadership

@NAHIMNASSER@BNOTIONS

email me your stories: nahim@bnotions.com

top related