Technical Debt Management
-
Upload
mark-niebergall -
Category
Software
-
view
23 -
download
0
Transcript of Technical Debt Management
![Page 1: Technical Debt Management](https://reader034.fdocuments.net/reader034/viewer/2022050714/55ce9d6abb61ebb5288b45c4/html5/thumbnails/1.jpg)
Technical Debt ManagementMark Niebergall
![Page 2: Technical Debt Management](https://reader034.fdocuments.net/reader034/viewer/2022050714/55ce9d6abb61ebb5288b45c4/html5/thumbnails/2.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050714/55ce9d6abb61ebb5288b45c4/html5/thumbnails/3.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050714/55ce9d6abb61ebb5288b45c4/html5/thumbnails/4.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050714/55ce9d6abb61ebb5288b45c4/html5/thumbnails/5.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050714/55ce9d6abb61ebb5288b45c4/html5/thumbnails/6.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050714/55ce9d6abb61ebb5288b45c4/html5/thumbnails/7.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050714/55ce9d6abb61ebb5288b45c4/html5/thumbnails/8.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050714/55ce9d6abb61ebb5288b45c4/html5/thumbnails/9.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050714/55ce9d6abb61ebb5288b45c4/html5/thumbnails/10.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050714/55ce9d6abb61ebb5288b45c4/html5/thumbnails/11.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050714/55ce9d6abb61ebb5288b45c4/html5/thumbnails/12.jpg)
Positive Impacts of Debt● Education● Housing● Goals● Business
![Page 13: Technical Debt Management](https://reader034.fdocuments.net/reader034/viewer/2022050714/55ce9d6abb61ebb5288b45c4/html5/thumbnails/13.jpg)
Negative Impacts of Debt● Loss of freedom● Hopelessness● Depression● Burdensome● Stress● Relationships with others
![Page 14: Technical Debt Management](https://reader034.fdocuments.net/reader034/viewer/2022050714/55ce9d6abb61ebb5288b45c4/html5/thumbnails/14.jpg)
Stay within Budget● Avoid excessive debt● Minimize risk● Stay within means● Use available resources● Iron Triangle: Scope, Resources, Time
![Page 15: Technical Debt Management](https://reader034.fdocuments.net/reader034/viewer/2022050714/55ce9d6abb61ebb5288b45c4/html5/thumbnails/15.jpg)
Avoid Debt - Operational● Planning● Requirements gathering● Analyze project● Documentation● Acceptance tests
![Page 16: Technical Debt Management](https://reader034.fdocuments.net/reader034/viewer/2022050714/55ce9d6abb61ebb5288b45c4/html5/thumbnails/16.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050714/55ce9d6abb61ebb5288b45c4/html5/thumbnails/17.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050714/55ce9d6abb61ebb5288b45c4/html5/thumbnails/18.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050714/55ce9d6abb61ebb5288b45c4/html5/thumbnails/19.jpg)
Repeating Process● Identify debt● Make a plan● Take action
![Page 20: Technical Debt Management](https://reader034.fdocuments.net/reader034/viewer/2022050714/55ce9d6abb61ebb5288b45c4/html5/thumbnails/20.jpg)
Taking on DebtFour Rights● Reason● Time● Terms● Amount
![Page 21: Technical Debt Management](https://reader034.fdocuments.net/reader034/viewer/2022050714/55ce9d6abb61ebb5288b45c4/html5/thumbnails/21.jpg)
Professional Development● Participate in local user groups● Find experienced mentors● Attend conferences● Read blogs● Learn
![Page 22: Technical Debt Management](https://reader034.fdocuments.net/reader034/viewer/2022050714/55ce9d6abb61ebb5288b45c4/html5/thumbnails/22.jpg)
Refactor● Sustainability of current solution● Large effort● Long term benefits● Explore available technologies● Prevent excessive new debt
![Page 23: Technical Debt Management](https://reader034.fdocuments.net/reader034/viewer/2022050714/55ce9d6abb61ebb5288b45c4/html5/thumbnails/23.jpg)
Technical Debt● Metaphor● Reduce your debt● Keep learning● Pay off debt using repeating process
![Page 24: Technical Debt Management](https://reader034.fdocuments.net/reader034/viewer/2022050714/55ce9d6abb61ebb5288b45c4/html5/thumbnails/24.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050714/55ce9d6abb61ebb5288b45c4/html5/thumbnails/25.jpg)
Questions?● https://joind.in/14427