engineering anti-patterns @jqueryto 2014
DESCRIPTION
Engineering Anti-Patterns @JQueryTO 2014TRANSCRIPT
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