-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathindex.html
More file actions
625 lines (587 loc) · 28.1 KB
/
index.html
File metadata and controls
625 lines (587 loc) · 28.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=1024" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="description" content="Seminario de Deuda Técnica a cargo de Luis García Castro" />
<meta name="author" content="Luis García Castro" />
<meta name="keywords" content="Presentation, Deuda Técnica, Technical Debt, Presentación, Seminario" />
<title>Technical debt - Luis García Castro</title>
<link rel="stylesheet" href="css/style.css" />
<link rel="shortcut icon" href="favicon.png" />
<link rel="apple-touch-icon" href="apple-touch-icon.png" />
</head>
<body class="impress-not-supported">
<div class="fallback-message">
<p>Your browser <b>doesn't support the features required</b> by impress.js, so you are presented with a simplified version of this presentation.</p>
<p>For the best experience please use the latest <b>Chrome</b>, <b>Safari</b> or <b>Firefox</b> browser.</p>
</div>
<div id="impress">
<div id="title" class="step slide with_height" data-x="3600" data-y="1500" data-z="1000" data-scale="5" data-rotate-x="-25" >
<div class="title">
<p><em>Technical debt</em></p>
</div>
<div class="subtitle">
<p>For developers... and managers!</p>
</div>
<div class="author">
<p>November 2015 <br />Luis García Castro</p>
</div>
<div class="event_logo">
<img src="img/Codemotion_logo.png" alt="Codemotion logo" class="event_logo" />
</div>
</div>
<div id="introduction" class="step slide" data-y="3500" data-scale="5">
<div class="slide-title">Who am I</div>
<div class="slide-content">
<p id="name">
<em>Luis García Castro</em>
</p>
<p>Software Engineer @ Sopra Steria</p>
<br />
<p id="gplus">
<a href="https://twitter.com/luiyo">
<img src="img/social/twitter.png" alt="Google Plus" class="rounded_icon" />
twitter.com/luiyo
</a>
</p>
<p id="linkedin">
<a href="http://www.linkedin.com/in/LuisGC">
<img src="img/social/linkedin.png" alt="LinkedIn" class="rounded_icon" />
linkedin.com/in/LuisGC
</a>
</p>
<p id="github">
<a href="https://github.com/LuisGC">
<img src="img/social/github.png" alt="GitHub" class="rounded_icon" />
github.com/LuisGC
</a>
</p>
<br />
<p id="creativeCommons">
<a href="http://creativecommons.org/licenses/by-sa/3.0/es/">
<img src="img/creative-commons.png" alt="Creative Commons" class="rounded_icon" />
<span class="footer"><i>Creative Commons <em>CC-BY-SA</em> license</i></span>
</a>
</p>
<p id="openSource">
<a href="https://github.com/bartaz/impress.js">
<img src="img/open-source-logo.png" alt="Impress.js" class="rounded_icon" />
<span class="footer">Presentation made with the awesome Open Source tool <em>Impress.js</em></span>
</a>
</p>
</div>
</div>
<div id="recurring-comments" class="step slide" data-x="-750" data-y="-3500" data-scale="3">
<div class="section-title">
<h4>Recurring comments</h4>
</div>
<div class="section-image">
<center><img src="img/gifs/doubtful.gif" alt="Without words" class="img_back fixed_height" /></center>
</div>
<div class="notes">
<ul>
<li>Didn't we document this services?</li>
<li>I thought we'd tested this module...</li>
<li>Fixing this will break that ...I think</li>
<li>Don't touch that, last time someone touched $whatever broke</li>
<li>Write a comment and we'll fix it later</li>
<li>Write a TODO so it'll be fixed later</li>
<li>Write a comment there, just above the TODO</li>
<li>I just changed ONE line!</li>
</ul>
</div>
</div>
<div id="recurring-comments-2" class="step slide" data-x="-750" data-y="-3500" data-z="-200" data-rotate-x="-10" data-scale="1">
<div class="section-title">
<p>Didn't we document
<br />
this services?</p>
</div>
<div class="notes">
<ul>
<li>Didn't we document this services?</li>
<li>I thought we'd tested this module...</li>
<li>Fixing this will break that ...I think</li>
<li>Don't touch that, last time someone touched $whatever broke</li>
<li>Write a comment and we'll fix it later</li>
<li>Write a TODO so it'll be fixed later</li>
<li>Write a comment there, just above the TODO</li>
<li>I just changed ONE line!</li>
</ul>
</div>
</div>
<div id="recurring-comments-3" class="step slide" data-x="-750" data-y="-3500" data-z="-300" data-rotate-x="20" data-scale="1">
<div class="section-title">
<p>I thought we had tested
<br />
this module...</p>
</div>
<div class="notes">
<ul>
<li>Didn't we document this services?</li>
<li>I thought we'd tested this module...</li>
<li>Fixing this will break that ...I think</li>
<li>Don't touch that, last time someone touched $whatever broke</li>
<li>Write a comment and we'll fix it later</li>
<li>Write a TODO so it'll be fixed later</li>
<li>Write a comment there, just above the TODO</li>
<li>I just changed ONE line!</li>
</ul>
</div>
</div>
<div id="recurring-comments-4" class="step slide" data-x="-750" data-y="-3500" data-z="-500" data-rotate-x="40" data-scale="1">
<div class="section-title">
<p>Fixing this will break that
<br />
...I think</p>
</div>
<div class="notes">
<ul>
<li>Didn't we document this services?</li>
<li>I thought we'd tested this module...</li>
<li>Fixing this will break that ...I think</li>
<li>Don't touch that, last time someone touched $whatever broke</li>
<li>Write a comment and we'll fix it later</li>
<li>Write a TODO so it'll be fixed later</li>
<li>Write a comment there, just above the TODO</li>
<li>I just changed ONE line!</li>
</ul>
</div>
</div>
<div id="recurring-comments-5" class="step slide" data-x="-750" data-y="-3500" data-z="-700" data-rotate-x="60" data-scale="1">
<div class="section-title">
<p>Don't touch that!
<br />
last time someone touched $whatever broke</p>
</div>
<div class="notes">
<ul>
<li>Didn't we document this services?</li>
<li>I thought we'd tested this module...</li>
<li>Fixing this will break that ...I think</li>
<li>Don't touch that, last time someone touched $whatever broke</li>
<li>Write a comment and we'll fix it later</li>
<li>Write a TODO so it'll be fixed later</li>
<li>Write a comment there, just above the TODO</li>
<li>I just changed ONE line!</li>
</ul>
</div>
</div>
<div id="recurring-comments-6" class="step slide" data-x="-750" data-y="-3500" data-z="-900" data-rotate-x="80" data-scale="1">
<div class="section-title">
<p>Write a comment and<br />we'll fix it later</p>
</div>
<div class="notes">
<ul>
<li>Didn't we document this services?</li>
<li>I thought we'd tested this module...</li>
<li>Fixing this will break that ...I think</li>
<li>Don't touch that, last time someone touched $whatever broke</li>
<li>Write a comment and we'll fix it later</li>
<li><b>Write a TODO so it'll be fixed later</b></li>
<li><b>Write a comment there, just above the TODO</b></li>
<li>I just changed ONE line!</li>
</ul>
</div>
</div>
<div id="recurring-comments-7" class="step slide" data-x="-750" data-y="-3500" data-z="-1100" data-rotate-x="100" data-scale="1">
<div class="section-title">
<p>OMG!
<br />
I just changed ONE line!</p>
</div>
<div class="notes">
<ul>
<li>Didn't we document this services?</li>
<li>I thought we'd tested this module...</li>
<li>Fixing this will break that... I think</li>
<li>Don't touch that, last time someone touched $whatever broke</li>
<li>Write a comment and we'll fix it later</li>
<li>Write a TODO so it'll be fixed later</li>
<li>Write a comment there, just above the TODO</li>
<li>I just changed ONE line!</li>
</ul>
</div>
</div>
<div id="reasons" class="step slide" data-x="8000" data-y="-500" data-scale="4">
<div class="slide-title">My reasons to give this talk</div>
<div class="slide-content">
<ul class="lv0_indent">
<li>Some guidance to technical staff about how <em>business decissions</em> are made</li>
<li>Some guidance to business staff about how <em>technical decissions</em> are made</li>
<li>Help to manage technical debt in a more <em>explicit and transparent</em> manner</li>
<li>Raise <em>awareness</em> on this issue</li>
</ul>
</div>
</div>
<div id="content" class="step slide" data-x="8100" data-y="2000" data-scale="5">
<div class="slide-title centered-title">
<h3><em>Content</em></h3>
</div>
<div class="slide-content">
<ol class="lv2_indent">
<li><em>Introduction to technical debt</em></li>
<ul class="lv1_indent">
<li>Analogies with financial debt</li>
<li>Types of technical debt</li>
<li>Symptoms</li>
<li>Advantages and disadvantages</li>
</ul>
<li><em>How, when and why <i>borrow</i></em></li>
<ul class="lv1_indent">
<li>Avoiding unitended debt</li>
<li>How to borrow intentionally</li>
<li>Technical debt vs low quality code</li>
</ul>
<li><em>Paying off technical debt</em></li>
</ol>
</div>
</div>
<div id="intro" class="step slide" data-x="9000" data-y="4200" data-rotate="90">
<div class="slide-title"><em>Introduction</em></div>
<div class="slide-content">
<p><i>«Shipping first time code is like going into <em>debt</em>. A little debt speeds development so long as it is paid back promptly with a rewrite. [...] The <em>danger</em> occurs when the debt is not repaid. Every minute spent on not-quite-right code counts as <em>interest</em> on that debt. Entire engineering organizations can be brought to a stand-still under the debt load of an unconsolidated implementation.»</i></p>
<p><b><em>Ward Cunningham</em>, March 1992</b></p>
</div>
<div class="notes">
<ul>
<li>"Ward" Cunningham is an American computer programmer who developed the first wiki.</li>
<li>You start writing an application. In the beginning there is no need for user roles. Everyone can do anything. At some point you start having two different permissions for a specific action. The tech team considers whether to create a full fledged permission system, but at this point it really looks like over engineering. Some time later another thing requires the differentiation of users, and then another and another. The solution is refactoring it to have a decent permission system. To make this refactoring will take way more time than just adding another method, but will simplify the code and make future permissions to be added with one line of code, or even by just adding a row in the database.
<ul>
<li>* 4 now (the permission), 22 later (the refactoring, that now is a bit more complicated)</li>
<li>* 21 now (the refactoring), 0 later (the permission)</li>
<li>* 4 now (the permission), no refactoring at all, and then 5 for the next permissions, and then 6, 7… until the point a new refactoring is suggested, now costing 50-something</li>
</ul>
</li>
</ul>
</div>
</div>
<div id="analogies" class="step slide" data-x="8500" data-y="4200">
<div class="slide-title"><em>Analogies</em> with financial debt</div>
<div class="slide-content">
<ul class="lv2_indent">
<li><p><em>Interest</em></p></li>
<li><p><em>Capital</em> pay off</p></li>
<li><p>Extending a <em>loan</em></p></li>
<li><p><em>Bankruptcy</em></p></li>
<li><p>Technical <em>inflation</em></p></li>
<li><p>Fiscal <em>amnesty</em></p></li>
</ul>
</div>
<div class="notes">
<ol type="a">
<li><b>Interest</b> - Every minute you spend with not very clean code</li>
<li><b>Capital Pay off</b> - Refactoring</li>
<li><b>Extending a loan</b> - Design negligencies</li>
<li><b>Bankruptcy</b> - Situation with an interest over the debt so large that it is impossible to move forward and we need a complete rewrite</li>
<li><b>Technical Inflation</b> - When the current level of our technology is old enough to lose compatibility with the rest of the industry</li>
<li><b>Fiscal Amnesty</b> - Discard prototypes, products or components and renounce to use them</li>
</ol>
</div>
</div>
<div id="types-of-debt" class="step slide" data-x="7500" data-y="4200" data-rotate="90">
<div class="slide-title"><em>Types</em> of technical debt</div>
<div class="slide-content">
<ul class="lv0_indent">
<li><em>Intended vs NOT intended</em></li>
<li><em>Design or architecture</em> debt</li>
<li><em>Quality</em> debt</li>
<li><em>Testing</em> debt</li>
<li><em>Knowledge</em> and documentation debt</li>
<li><em>Environmental</em> debt</li>
</ul>
</div>
<div class="notes">
<ul>
<li><b>Intended</b>: “No time to do it multi-language, that will be done in the future”</li>
<li><b>Intended</b>: “No time to complete the tests, that will be done when we deploy this in PRO”</li>
<li><b>Not intended</b>: Letting someone to write code that does not follow a certain standard</li>
<li><b>Not intended</b>: An important design decission that ultimately fails</li>
<li><b>Not intended</b>: Left the junior programmer unsupervised</li>
<li><b>Design</b>: non optimal solutions, shortcuts</li>
<li><b>Tests</b>: Not many automatic tests and too many regression testing</li>
<li><b>Documentation</b>: Only a few properly know the system</li>
<li>Hardware, environments,... too many manual actions</li>
</ul>
</div>
</div>
<div id="symptoms" class="step slide" data-x="7000" data-y="4200">
<div class="slide-title"><em>Symptoms</em></div>
<div class="slide-content">
<ul class="lv0_indent">
<li><p>Loss of <em>productivity</em>, <em>motivation</em>, ...</p></li>
<li><p>Increase in <em>manual testing</em></p></li>
<li><p>Repeated <em>delays</em> in deliveries</p></li>
<li><p><em>Duplicated code</em></p></li>
<li><p><em>Unreadable</em> code</p></li>
<li><p>Unstoppable increase in <em>bugs</em></p></li>
<li><p><em>Excessive stress</em> on each delivery</p></li>
<li><p><em>Fear</em> to touch the code</p></li>
<li><p><em>Outdated</em> libraries</p></li>
<li>...</li>
</ul>
</div>
<div class="notes">
<ol>
<li>Whenever we can, we measure productivity (Scrum)</li>
<li>We spend too much time in regression testing</li>
<li>It is increasingly difficult to meet the deadlines</li>
<li>Leads to anomalies and support problems</li>
<li>Lack of quality and control</li>
<li>The teams suffers too much pressure</li>
<li>80% of of the time is spent reading code, if not understood can not be built</li>
<li>It's all so delicate that there is no way to touch without breaking anything</li>
<li>We are not able to update versions</li>
</ol>
</div>
</div>
<div id="advantages-and-disadvantages" class="step slide" data-x="5800" data-y="4200" data-rotate="-90">
<div class="slide-title"><em>Advantages</em> and <em>disadvantages</em></div>
<div class="slide-content">
<ul class="lv0_indent">
<li>
<p>Some advantages:</p>
<ul class="lv0_indent">
<li>It shortens <em>Time To Market</em></li>
<li>It preserves the company <em>capital</em> (essential in startups)</li>
<li>Certain decisions and costs are <em>postponed</em></li>
</ul>
</li>
<li>
<p>And some disadvantages:</p>
<ul class="lv0_indent">
<li>Reduces <em>speed</em> and <em>productivity</em></li>
<li>Increases the <em>risk</em></li>
<li><em>Restricts</em> new developments</li>
<li>Leads to a <em>vicious circle</em></li>
</ul>
</li>
</ul>
</div>
<div class="notes">
<ul>
<li>The mantra created by LinkedIn’s founder Reid Hoffman “<i>if you are not embarrassed by the first version of your product, you’ve launched too late</i>” quickly became an excuse for an anything goes approach. Thousands of startups have launched and failed precisely for the lack of quality.</li>
<li><b>MVP vs MLP</b></li>
</ul>
</div>
</div>
<div id="how-when-why" class="step slide" data-x="8000" data-y="-3500" data-scale="3">
<div class="section-title centered-title">
<p>How, when and why</p>
</div>
<div class="section-image">
<br /><br />
<center><img src="img/gifs/why_not.gif" alt="Why not" class="img_back fixed_height" /></center>
</div>
<div class="notes">
<p>Exercise: Draw your technical curve (<a href="http://blog.crisp.se/2013/10/11/henrikkniberg/good-and-bad-technical-debt">link</a>)</p>
<ul>
<li>Real curve vs desired curve</li>
<li>old debt is bad and new debt is good</li>
<li>The <b>real</b> curve (chainshaw)</li>
<li>Debt baseline and debt ceiling</li>
<li>TDD and Scrum help</li>
</ul>
</div>
</div>
<div id="avoiding-unintended-debt" class="step slide" data-x="5900" data-y="5200">
<div class="slide-title">Avoiding <em>unintended</em> debt</div>
<div class="slide-content">
<ul>
<li><p>Automate tests as much as possible (<em>CI</em> )</p></li>
<li><p><em>Share</em> the knowledge (technical and functional)</p></li>
<li><p>Leave the code <em>cleaner</em> than you found it</p></li>
<li><p>Settle on a good <em>DoD</em></p></li>
<li><p>Aim for <em>Kaizen</em>: TDD, BDD, Fail Fast, Peer Reviews, Code Reviews, ...</p></li>
<li><p>Limit the <em>WIP</em>. Always!</p></li>
<li><p><em>Monitor</em> the debt at every moment</p></li>
<li><p>And finally: <em>Never ask for permission to do your job properly!</em></p></li>
</ul>
</div>
</div>
<div id="how-to-borrow" class="step slide" data-x="5900" data-y="5800" data-rotate="180">
<div class="slide-title">How to borrow <em>intentionally</em></div>
<div class="slide-content">
<ul class="lv0_indent">
<li>All the inended debt <em>can and should be monitored</em> (by definition)</li>
<li>With the same consideration as <em>flaws or bugs</em></li>
<li>Include your debt in the <em>Product Backlog</em></li>
<li>Monitor the <em>speed</em> of the project/teams</li>
<li>Monitor the amount of <em>rework</em></li>
<li>Adapt your budgets</li>
<li><em>Measure debt in money</em></li>
</ul>
</div>
<div class="notes">
<p>It’s a responsibility of the tech team to make business <b>understand the consequences</b> of this kind of action</p>
</div>
</div>
<div id="technical-debt-vs-bad-code" class="step slide" data-x="8800" data-y="5300" data-rotate-z="90" data-scale="2">
<div class="section-title">
<p><em>Technical debt <br />vs <br />Low quality code</em></p>
</div>
<div class="notes">
<ul>
<li>Technical debt can be paid by refactoring. It takes time but it’s doable. But when code is just bad, refactoring is <b>way, way harder</b>.</li>
<li><b>Michael Feathers</b>, have defined legacy code as code without tests:
<blockquote>“Code without tests is bad code.
It doesn’t matter how well written it is; it doesn’t matter
how pretty or object-oriented or well-encapsulated it is.
With tests, we can change the behavior of our code quickly and verifiably.
Without them, we really don’t know if our code is getting better or worse.”</blockquote></li>
</ul>
</div>
</div>
<div id="paying-technical-debt" class="step slide" data-x="-250" data-y="-1500" data-scale="3">
<div class="section-title">
<h3><em>Paying off</em> technical debt</h3>
</div>
<div class="section-image">
<br /><br />
<center><img src="img/gifs/developer.gif" alt="Developer" class="img_back fixed_height" /></center>
</div>
<div class="notes">
<p>When developers propose a big rewrite, and for whatever crazy reasons, business agrees, the stage is set for a new kind of failure:</p>
<ul>
<li>It turns out that it’s virtually impossible to track all functionality in a legacy code base, and <b>few rewrite projects take the huge necessary time to document everything</b>.</li>
<li>Business will ask is about deadlines. Estimating a big rewrite is probably one of the most <b>unrealistic</b> things one can try to do.</li>
<li><b>Business will not accept all new features to be halted</b>. Therefore there will be the need to keep track of them, and to reimplement them as well. And all relevant data should be migrated</li>
<li>In the rush to convince business, developers will promise all kinds of things, like that the refactoring will make the system faster, more robust or scalable…</li>
<li>Given part of the problem was developer’s inexperience in coding itself, how can they <b>guarantee</b> that now they know better?</li>
<li>Generally, planning is not a particular strength of the kind of project that ends up needing a rewrite. <b>Will the rewrite be properly planned?</b></li>
</ul>
</div>
</div>
<div id="before-paying-the-debt" class="step slide" data-x="-1000" data-y="500" data-rotate="-90" data-scale="2">
<div class="slide-title"><em>Before</em> paying the debt...</div>
<div class="slide-content">
<ul class="lv0_indent">
<li>Have we <em>estimated</em> how much it costs paying and not paying?</li>
<li>Do we <em>believe</em> the estimates?</li>
<li>How will we reduce the current effort to <em>spend</em> it on debt?</li>
<li>How much does a <em>dirty</em> solution cost?</li>
<li>How much does the <em>cleanest</em> solution cost?</li>
<li>How much will a <i>clean</i> solution cost if we do the <i>dirty</i> one <em>now</em>?</li>
</ul>
</div>
</div>
<div id="how-to-pay-off" class="step slide" data-x="500" data-y="500" data-rotate="90" data-scale="2">
<div class="slide-title">How to pay off technical debt</div>
<div class="slide-content">
<ol class="lv0_indent">
<li>Discuss with the <em>technicians</em> in charge your proposal and its scope</li>
<li><em>Measure</em> with them the debt you want to pay</li>
<li>Clearly communicate the <em>implications</em> to the business managers</li>
<li>Achieve <em>explicit</em> decisions about wheter to pay off <em>more or less</em> debt</li>
<li>Design strategies to avoid generating <em>new debt</em> when paying off</li>
<li>Take <em>explicit</em> decisions about <em>when and how</em> you will pay off</li>
</ol>
</div>
</div>
<div id="survey" class="step slide" data-x="5300" data-y="-3500" data-scale="3" >
<div class="section-title">
<p>OK, but... <em>is it good or bad?</em></p>
</div>
<div class="section-image">
<center><img src="img/gifs/without_words.gif" alt="Without words" class="img_back fixed_height" /></center>
</div>
</div>
<div id="visual-definition" class="step slide" data-x="2200" data-y="-3000" data-scale="3" >
<div class="slide-title">
<p>The most widespread opinion:</p>
</div>
<div class="slide-content">
<br /><br />
<center><img src="img/technical-debt-chart.jpg" alt="Visual definition of Technical Debt" class="img_back maxed_height" /></center>
<div class="source">
<p>Source: <a href="http://softwareengineeringdaily.com/2015/11/17/machine-learning-and-technical-debt-with-d-sculley/">Software Engineering Daily</a></p>
</div>
</div>
<div class="notes">
<p>Ron Jeffries thinks it is always <b>BAD</b>:<p>
<ul>
<li>Agile software development is about turning “next time” into “this time”, as often and as frequently as we can. It’s about improving the design as often as we can, as soon as we can.</li>
<li>Sooner, or later, it seems, we’ll have an idea or an understanding that we can’t put in, because we, or the software, has moved on. But if we can put off that moment as long as possible, we’ll do better</li>
</ul>
</div>
</div>
<div id="bibliography" class="step slide" data-x="3500" data-y="5000" data-scale="4">
<div class="slide-title centered-title">Bibliography</div>
<div class="slide-content">
<p class="bibliografia">
<a href="http://c2.com/doc/oopsla92.html">
<img src="img/information.png" alt="Link to article" class="small_rounded_icon" />
<em>Ward Cunningham</em> The WyCash Portfolio Management System
</a>
</p>
<p class="bibliografia">
<a href="https://medium.com/@joaomilho/festina-lente-e29070811b84">
<img src="img/information.png" alt="Link to article" class="small_rounded_icon" />
<em>Joao Milho</em> Technical Debt 101
</a>
</p>
<p class="bibliografia">
<a href="http://www.ontechnicaldebt.com/blog/steve-mcconnell-on-categorizing-managing-technical-debt/">
<img src="img/information.png" alt="Link to article" class="small_rounded_icon" />
<em>Steve McConnell</em> How to Categorize & Communicate Technical Debt
</a>
</p>
<p class="bibliografia">
<a href="http://chadfowler.com/blog/2006/12/27/the-big-rewrite/">
<img src="img/information.png" alt="Link to article" class="small_rounded_icon" />
<em>Chad Fowler</em> The Big Rewrite
</a>
</p>
<p class="bibliografia">
<a href="http://blog.crisp.se/2013/10/11/henrikkniberg/good-and-bad-technical-debt">
<img src="img/information.png" alt="Link to article" class="small_rounded_icon" />
<em>Henrik Kniberg</em> Good and Bad Technical Debt
</a>
</p>
<p class="bibliografia">
<a href="http://docs.codehaus.org/display/SONAR/Technical+Debt+Calculation">
<img src="img/information.png" alt="Link to article" class="small_rounded_icon" />
<em>Olivier Gaudin</em> Technical Debt plugin para Sonar
</a>
</p>
<p class="bibliografia">
<a href="http://www.nytimes.com/2012/12/09/technology/air-force-stumbles-over-software-modernization-project.html">
<img src="img/information.png" alt="Link to article" class="small_rounded_icon" />
<em>NYTimes</em> Billion-Dollar Flop: Air Force Stumbles on Software Plan
</a>
</p>
<p class="bibliografia">
<a href="http://es.slideshare.net/lemiorhan/technical-debt-do-not-underestimate-the-danger">
<img src="img/information.png" alt="Link to article" class="small_rounded_icon" />
<em>Lemi Orhan Ergin</em> Technical Debt: Do Not Underestimate The Danger
</a>
</p>
<p class="bibliografia">
<a href="http://ronjeffries.com/articles/015-11/tech-debt/">
<img src="img/information.png" alt="Link to article" class="small_rounded_icon" />
<em>Ron Jeffries</em> Technical Debt – Bad metaphor or worst metaphor?
</a>
</p>
</div>
</div>
<div id="questions" class="step slide" data-x="7300" data-y="5000" data-scale="3">
<div class="section-title">
<h3><em>Ask Me Anything !!</em></h3>
</div>
<div class="section-image">
<center><img src="img/gifs/thank_you.gif" alt="Thank you" class="img_back fixed_height" /></center>
</div>
</div>
<div id="overview" class="step" data-x="3500" data-y="2000" data-rotate-x="-25" data-scale="12"></div>
</div>
<script src="js/impress.js"></script>
<script src="js/impressConsole.js"></script>
<script>
impress().init();
impressConsole().init(css="css/impressConsole.css");
//impressConsole().open(); // If you want them to open automatically
</script>
</body>
</html>