Top Banner
Technical Debt Management Mark Niebergall
25

Technical Debt Management

Aug 15, 2015

Download

Software

Mark Niebergall
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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