technical debt management

25
Technical Debt Management Mark Niebergall

Upload: mark-niebergall

Post on 15-Aug-2015

23 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Technical Debt Management

Technical Debt ManagementMark Niebergall

Page 2: Technical Debt Management

About Mark Niebergall● Developing in PHP since 2005● Working on occupational health screening

project● Security: SSCP, CSSLP Certified● PHP, databases, JavaScript● Enjoy being outdoors

Page 3: Technical Debt Management

Niebergall● German● Ancestry.com: nickname for someone who

habitually failed to repay his debts, from Middle High German nie ‘never’ + a derivative of vergelten ‘to repay’

Page 4: Technical Debt Management

The Problem - Updates● return a + b● return (a + b).toFixed(2)● if ( !isNaN(parseFloat(a))

|| isFinite(a) || !isNaN(parseFloat(b)) || isFinite(b)) { throw “Not a number”;}return (a + b).toFixed(2)

Page 5: Technical Debt Management

The Problem - Files]$ cd /var/www/html]$ lsindex.htmlstuff.jsmorestuff.jsmoreawesomestuff.jssuper_more_awesome_stuff.jsevenMoreSuperAwesomeAtuff.jsDo_Even_More_Super_Awesome_Stuff.js

Page 6: Technical Debt Management

The Problem - Database● Table: person● Columns: name, address, address1, city, state, zip, phone, phone2,

phone3, email, email2, address_mailing, address1_mailing, city_mailing, state_mailing, zip_mailing, create_timestamp_string, …

● Table: thing● Columns: name, description, image, what_it_does, hours, location, cost,

time, owner, obscure_field, ts, sd, or, qa, ei, num, + 50 more columns

Page 7: Technical Debt Management

The Problem - Architecture$sql = “SELECT * FROM big_table WHERE something = “ $_POST[‘from_user’];$result = mysql_query($sql);

$value = [ ‘some_key’ => [ ‘another_key’ => [‘maybe_key’ => ‘alice’, 1 => ‘super awesome’], ‘questionable’ => [‘bob’, ‘cat’ => ‘kittens’, ‘mixed’ => new stdClass]];

Page 8: Technical Debt Management

Definition● Metaphor coined by Ward Cunningham● Explained further by Martin Fowler, others● Consequences of poor design, architecture● Prudent vs reckless● Incurred knowingly and inadvertently● Work needed to complete job properly

Page 9: Technical Debt Management

Sources of Technical Debt● Time, resources, and scope creep● Ignorance● Misunderstanding of requirements● Understanding of project● Unwillingness or lack of motivation

Page 10: Technical Debt Management

Impact● Increased time to deliver new features● Increased time to maintain application● Increased time paying off debts● Increased code complexity● Software brittleness● Software bloat

Page 11: Technical Debt Management

Personal Finances● Consider similarities between personal debts

and technical debts● Personal credit score or rating● Balanced budget● Expenditures● Savings● Education and training

Page 12: Technical Debt Management

Positive Impacts of Debt● Education● Housing● Goals● Business

Page 13: Technical Debt Management

Negative Impacts of Debt● Loss of freedom● Hopelessness● Depression● Burdensome● Stress● Relationships with others

Page 14: Technical Debt Management

Stay within Budget● Avoid excessive debt● Minimize risk● Stay within means● Use available resources● Iron Triangle: Scope, Resources, Time

Page 15: Technical Debt Management

Avoid Debt - Operational● Planning● Requirements gathering● Analyze project● Documentation● Acceptance tests

Page 16: Technical Debt Management

Avoid Debt - Technical● Use a framework● Be open to new technologies● Unit tests● Loosely coupled code● Code reusability● Reduce code complexity

Page 17: Technical Debt Management

Avoid Debt - Technical● Continuous integration tools● Configuration management tools● Code reviews and feedback● Coding standards● Design patterns● General best practices

Page 18: Technical Debt Management

Pay off Debt● Consistency● Make a plan● Set goals● Stay inside your budget● Pay off some debt each sprint or regular

interval

Page 19: Technical Debt Management

Repeating Process● Identify debt● Make a plan● Take action

Page 20: Technical Debt Management

Taking on DebtFour Rights● Reason● Time● Terms● Amount

Page 21: Technical Debt Management

Professional Development● Participate in local user groups● Find experienced mentors● Attend conferences● Read blogs● Learn

Page 22: Technical Debt Management

Refactor● Sustainability of current solution● Large effort● Long term benefits● Explore available technologies● Prevent excessive new debt

Page 23: Technical Debt Management

Technical Debt● Metaphor● Reduce your debt● Keep learning● Pay off debt using repeating process

Page 24: Technical Debt Management

References● Ancestry.com http://www.ancestry.com/name-origin?surname=niebergall● Ward Cunningham https://www.youtube.com/watch?v=pqeJFYwnkjE● Martin Fowler http://martinfowler.com/bliki/TechnicalDebt.html● David Laribee https://msdn.microsoft.com/en-us/magazine/ee819135.aspx● Mark Noneman https://www.youtube.com/watch?v=cb5fkftdD9k

Page 25: Technical Debt Management

Questions?● https://joind.in/14427