Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

Technical Debt Management

583 Aufrufe

Veröffentlicht am

For every short-cut taken technical debt is added to a project. Taking that path may come from one of many factors, including inexperience, time constraints, scope creep, or lack of resources. Managing technical debt with a professional approach can reduce the high interest rate you may be currently experiencing and lower team stress. That technical burden can be properly managed by giving proper attention, time, and resources to paying down the debt on a regular basis. Explore ways to consistently reduce technical debt and discuss best practices with fellow debtors. Learn how your code score can improve and how you can avoid going bankrupt from a proper technical debt management approach.

Veröffentlicht in: Software
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Technical Debt Management

  1. 1. Technical Debt Management Mark Niebergall
  2. 2. About Mark Niebergall ● Developing in PHP since 2005 ● Working on occupational health screening project ● Security: SSCP, CSSLP Certified ● PHP, databases, JavaScript ● Enjoy being outdoors
  3. 3. 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’
  4. 4. The Dig ● Request to dig a hole
  5. 5. The Dig ● Request to dig a hole
  6. 6. The Dig ● Request to dig a hole
  7. 7. The Dig ● Request to dig a hole
  8. 8. The Dig ● Request to dig a hole
  9. 9. University Bid Sales ● Aging computers and hardware ● Obsolete items ● Never opened items ● Broken items needing repair or parts ● Piles of cables and adapters
  10. 10. The Problem - Updates return a + b
  11. 11. The Problem - Updates return (a + b).toFixed(2)
  12. 12. The Problem - Updates if ( !isNaN(parseFloat(a)) || isFinite(a) || !isNaN(parseFloat(b)) || isFinite(b) ) { throw “Not a number”; } return (a + b).toFixed(2)
  13. 13. The Problem - Files index.html stuff.js morestuff.js moreawesomestuff.js super_more_awesome_stuff.js evenMoreSuperAwesomeAtuff.js
  14. 14. 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, …
  15. 15. The Problem - Database 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
  16. 16. The Problem - Architecture $sql = “SELECT * FROM big_table WHERE something = “ $_POST[‘from_user’]; $result = mysql_query($sql);
  17. 17. The Problem - Architecture $value = [ ‘some_key’ => [ ‘another_key’ => [‘maybe_key’ => ‘alice’, 1 => ‘super awesome’], ‘questionable’ => [‘bob’, ‘cat’ => ‘kittens’, ‘mixed’ => new stdClass] ];
  18. 18. Definition ● Metaphor coined by Ward Cunningham ● Explained further by Martin Fowler, others
  19. 19. Definition ● Consequences of poor design, architecture ● Prudent vs reckless ● Incurred knowingly and inadvertently ● Work needed to complete job properly
  20. 20. Sources of Technical Debt ● Time, resources, and scope creep ● Ignorance ● Misunderstanding of requirements ● Understanding of project ● Unwillingness or lack of motivation
  21. 21. Impact ● Increased time to deliver new features ● Increased time to maintain application ● Increased time paying off debts ● Increased code complexity
  22. 22. Impact ● Software brittleness ● Software bloat ● Magic in application
  23. 23. Personal Finances ● Consider similarities between personal debts and technical debts ● Personal credit score or rating ● Balanced budget ● Expenditures ● Savings ● Education and training
  24. 24. Positive Impacts of Debt ● Education ● Housing ● Goals ● Business
  25. 25. Negative Impacts of Debt ● Loss of freedom ● Hopelessness ● Depression ● Burdensome ● Stress ● Relationships with others
  26. 26. Stay within Budget ● Avoid excessive debt ● Minimize risk ● Stay within means ● Use available resources ● Iron Triangle: Scope, Resources, Time
  27. 27. Avoid Debt - Operational ● Planning ● Requirements gathering ● Analyze project ● Documentation ● Acceptance tests
  28. 28. Avoid Debt - Technical ● Use a framework ● Be open to new technologies
  29. 29. Avoid Debt - Technical ● Unit tests ● Loosely coupled code ● Code reusability ● Reduce code complexity
  30. 30. Avoid Debt - Technical ● Code reviews and feedback ● Coding standards ● Design patterns ● General best practices
  31. 31. Avoid Debt - Technical ● Continuous integration tools ● Configuration management tools
  32. 32. Static Code Analysis ● Style ● Size ● Design ● Naming ● Duplication
  33. 33. Pay off Debt ● Make a plan ● Set goals ● Stay inside your budget
  34. 34. Pay off Debt ● Consistency ● Pay off some debt each sprint or regular interval
  35. 35. Repeating Process ● Identify debt ● Make a plan ● Take action
  36. 36. Taking on Debt Four Rights ● Reason ● Time ● Terms ● Amount
  37. 37. Professional Development ● Participate in local user groups ● Find experienced mentors ● Attend conferences ● Read blogs ● Learn
  38. 38. Refactor ● Sustainability of current solution ● Large effort ● Long term benefits ● Explore available technologies ● Prevent excessive new debt
  39. 39. Technical Debt ● Metaphor ● Reduce your debt ● Pay off debt using repeating process ● Tools available for your project ● Keep learning
  40. 40. 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
  41. 41. Questions? ● https://joind.in/14464

×