The document discusses technical debt in software development. It explains that technical debt is incurred when expedient solutions are chosen that compromise quality and require extra work later. It notes the problems technical debt can cause like slow development, bugs, and employee dissatisfaction. The document recommends making technical debt visible by documenting it, analyzing and prioritizing repayments, and proactively using techniques like code reviews and automated testing to prevent new debt.
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
Why change code that works - On Technical Debt and Refactoring
1. Why change code
that works?
On Technical Debt & Refactoring
Carsten Windler, 23.01.2020
2. Carsten Windler
Web Developer
Global Head of Software Development
@ HolidayPirates
https://www.linkedin.com/in/cwindler/
https://www.xing.com/profile/Carsten_Windler
5. On Technical Debt and Refactoring
1. Technical Debt explained
2. Why you want to avoid it
3. How to deal with existing debt
4. Avoid piling up new debt
7. Technical debt is a concept
in software development that
reflects the implied cost of
additional rework caused by
choosing an easy or limited
solution now instead of using
a better approach that would
take longer.
tl;dr
https://en.wikipedia.org/wiki/Technical_debt
13. Technical Debt Quadrant (Fowler 2009)
“We don’t have to time for design”
“We must ship now and deal
with consequences”
“What’s layering?”
“Now we know how we
should have done it”
https://martinfowler.com/bliki/TechnicalDebtQuadrant.html
Reckless Prudent
DeliberateInadvertent
15. ● Prototype/POC
● Interim solution
● One single purpose
● Deliver fast
Technical Debt can be ok
Photo by Hossein Ghaem on Unsplash
16. The many forms of Technical Debt
● Bad code quality (e.g. usage of Antipatterns)
● Delayed updates (Framework, Packages, Language…)
● No automated tests
● No/outdated/insufficient documentation
● Issues with infrastructure
● Cumbersome workflows (e.g. no CI/CD)
● Wrong decisions (e.g. chose an abandoned package)
20. Technical debt slows down
● Code is hard to understand
● New bugs get introduced easily
● Redundant work necessary (C&P
programming)
● Manual testing needed
33. 1. Reveal & Document
● Developers document technical debt (e.g. tickets)
● Properly tagged so it’s easy to find
● Do estimates for value & effort (if possible)
Drawbacks
● Developers are lazy, writing tickets is no fun
● Takes time until this is established
○ Set up regular workshops
○ Constantly chase it
34. 2. Analyze & Prioritize
● Team discusses the tickets
● Final assessment of value/effort
● Prioritization based on value/effort
45. Training & Education
● Establish a sense for Code Quality
● E.g. internal workshops
● Conferences for new inspiration
● Online courses, Tutorials
● Code Reviews
46. Guidelines
● Coding Guidelines
○ Code Style
○ Best practices
○ Antipatterns
● Agreed upon by the teams
● The Twelve-Factor App
● Ensure guidelines are met
○ Code Reviews
○ Automated checks
47. Tools
● Static code analysis
○ Linter
○ Code Sniffer
○ Mess detectors / Metrics on Code Quality
■ Complexity, Coupling, Cohesion…
● Run them on pre-commit hook or in the IDE
● Automated security analysis
52. "It’s done, just a few bugs
to fix and, oh, that one feature
I wasn’t aware of..."
53. Why does that happen?
● Unknown requirements
● Bugs
● Amount of communication underestimated
● Documentation effort
● Automated tests (yikes!)
● Sickness, holidays
● Other important projects
● More unknown requirements