1/34 @yegor256 Quality vs. Quantity Yegor Bugayenko Joker 2018 St.Petersburg, Russia 20 October 2018 2/28 @yegor256 : t s i G e h T Mistakes must be forgivable, not enough code—not. zerocracy.com 3/37 @yegor256 Zerocracy 4/37 @yegor256 @yegor256 1.9K 5/37 @yegor256 takes.org 6/37 @yegor256 cactoos.org 7/37 @yegor256 3rd Volume Summer 2019 8/37 @yegor256 @yegor256news 9/34 @yegor256 Quality? 10/34 @yegor256 Bad Guys? 11/34 @yegor256 Can We Improve? 12/34 @yegor256 Good “A good programmer will produce fault-free code, while a bad programmer will produce code that is faultridden.” Code r= ! g L n e o s s r B u W gs 13/34 @yegor256 Bug “Some people mistakenly refer to software defects as bugs. When called bugs, they seem like pesky things that should be swatted or even ignored. This trivializes a critical problem and fosters a wrong attitude. Thus, when an engineer says there are only a few bugs left in a program, the reaction is one of relief. Suppose, however, that we called them time bombs instead of bugs. Would you feel the same sense of relief if a programmer told you that he had thoroughly tested a program and there were only a few time bombs left in it? Just using a diļ¬erent term changes your attitude entirely.” = Ti g! m n e B o r o m b W 14/34 @yegor256 Fear Driven Development 15/34 @yegor256 “If you’re scared of making changes, you can’t make something dramatically better, or do that big code cleanup. Maybe you can’t even deploy the code that you already wrote and tested, because it feels too scary. You just want to stick what’s sort-of-working, even if it’s not great.” “Fear makes you a worse programmer” Julia Evans, https://goo.gl/MeLGxN 16/34 @yegor256 Stale Branch es Stress t b e D h Tec Boring 17/34 @yegor256 Fix the Process, not People 18/34 @yegor256 Blame-Free Environment 19/34 @yegor256 Testers Repository Programmers Staging Pipeline Production End-Users 20/34 @yegor256 1 Repository Reject It! Staging Production 21/34 @yegor256 “Each stage of a build pipeline is looking for reasons to reject the build. Tests failed? Reject it. Lint complains? Reject it. Build fails integration tests in staging? Reject it. Finished archive smells funny? Reject it.” 22/34 @yegor256 e s a b i u Liq Green/Blue Deployment CI/CD ru m o c . r lto @yegor256 2 23/34 Quality Wall Repository Programmers 24/34 @yegor256 JaCoCo PMD e l y t s k c Che s e t a c i l p u d i t n a p o xc warnings xTes ts s g u B d Fin enforcer(s) 25/34 @yegor256 3 Testers, Not Approvers Testers Repository Staging Production @yegor256 26/34 27/34 @yegor256 4 Crash Fast Production Programmers ? End-Users 28/34 @yegor256 sentry.io 29/34 @yegor256 5 Repository Encourage Bugs Testers Reports Staging Programmers 30/34 @yegor256 Zerocracy $$$ We pay per each bug reported @yegor256 Pull Requests, or Bugs, or… You Are Out! 31/34 32/34 @yegor256 Speed, not Quality 33/34 @yegor256 6 Educate Money People Bosses Programmers Reports Production 34/34 @yegor256 It’s ( : e l b i s s o imp