Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Coderetreat: Practice to Master Your Crafts

Coderetreat: Practice to Master Your Crafts

Coderetreat is a one day intense workshop for software developers for imporving their development skills by practicing. This is the material I presented at the beginning of coderetreat I facilitated on May 2014.

Lemi Orhan Ergin

May 14, 2014
Tweet

More Decks by Lemi Orhan Ergin

Other Decks in Programming

Transcript

  1. Agile Software Craftsman Passionate Developer and Coach Sony & GittiGidiyor/eBay

    LEMİ ORHAN ERGİN @lemiorhan lemiorhanergin.com @lemiorhan
  2. like to work alone feel safe to work on confort

    zone have to focus on daily work skip writing tests cannot find time to experiment not willing to learn new practices do not think about design focus on gettings things done over-engineer do not refactor Developers
  3. learning through pairing extending your confort zone no pressure of

    daily work experimenting learning new practices thinking deeply about design building structures simple developing whenever required refactoring Code Retreat is about
  4. 1 day coding 45 minutes sessions Pair programming Test first

    development Different partners on each session Different constraints Format
  5. Schedule Retrospective Break Closing Ceramony Coding 45 10 5 5

    5 5 5 10 10 10 10 15 45 45 45 45 45 Lunch
  6. History The idea was spawned at CodeMash Conference’09 ! The

    owners of the idea Gary Bernhardt Patrick Welsh Nayan Hajratwala Corey Haines ! First was held on January 24, 2009 Corey Haines https://www.flickr.com/photos/charliekilo/7717370426
  7. Global Day of Code Retreat 2000+ developers 150+ locations 20

    timezones 16 hours of coding 6 continents coderetreat.org Coderetreat Community Network 14th of December https://www.flickr.com/photos/stef3d/4560661663
  8. Code generation is not important Generate code by thinking the

    design Focus on naming test cases Focus on Red/Green/Refactor cycle Why Repeating?
  9. You are not your code Learn to go slower Focus

    on being better Do not think about finishing It’s all about practicing Why Deleting?
  10. Language agnostic Do not try to complete Focus on practicing

    Write code than open to accept change Follow 4 rules of simple design Delete code after each session Have fun Principles
  11. Simple Design Simple design in one that is easy to

    change. We don’t know exactly what is going to need to change We’ll never be more ignorant than we are at this moment
  12. Simple Design Tests pass 4 Rules of “Tests pass” can

    be a significant factor in making changes. If you have to ask how fast your test suite should be, it should be faster 1
  13. Simple Design Express Intent 4 Rules of Paying attention to

    the names and how your code expresses itself is the key. 2
  14. Simple Design No Duplication (DRY) 4 Rules of It’s not

    about code duplication, it’s about knowledge duplication. Don’t repeat yourself. Every piece of knowledge should have one and only one representation. 3
  15. Simple Design Small 4 Rules of Has fewer classes, modules,

    packages. Any not- used code should be deleted. You should also check missing or duplicate abstractions. Over- extraction should also be not allowed. 4
  16. TDD Write exactly one new test 1 2 Run the

    test to make sure it fails 3 Write least amount of code to make the test pass 4 Refactor to remove duplication 5 Repeat the process Test Driven Development Test Driven Design Test First Development
  17. Zero-player game Cellular automation system Devised by John Horton Conway

    Evolution is determined by initial state Each cell can be alive or dead Conway’s Game of Life Problem to solve:
  18. Avoid to use primitives Avoid to use conditional conditions (if,

    ?:, switch) Avoid to use loops (while, for) All methods return void Max 5 lines of code per method Verbs instead of nouns Ping pong programming Mute ping pong programming Swap computers Do not use mouse Variations
  19. sessions let the begin We select 6 activities amoung the

    activities list after checking TDD and pair programming experiences of the attendees. Every coderetreat has its own set of activities.
  20. What, if anything, did you learn today? What, if anything,

    surprised you today? What, if anything, will you do differently? closing
  21. https://leanpub.com/4rulesofsimpledesign The only thing we truly know about software development

    is that we can expect changes to our system. Through concrete examples, let's explore ways to build flexible, adaptable software systems by better understanding Kent Beck's 4 Rules of Simple Design. Book from Corey Haines Published at LeanPub on 2014
  22. http://www.coderetreat.org Coderetreat Community Network http://blog.zilverline.com/2013/12/20/facilitating-the-global-day-of-coderetreat-2013-in-amsterdam Facilitating the Global Day of

    Coderetreat 2013 in Amsterdam http://www.alexbolboaca.ro/wordpress/articles/how-to-organize-a-code-retreat How to organize a code retreat Coderetreat Facilitator Training https://vimeo.com/54519386 https://leanpub.com/4rulesofsimpledesign Understanding the 4 Rules of Simple Design
  23. Lemİ orhan ergİn Founder & Author @ agilistanbul.com [email protected] @lemiorhan

    https://www.linkedin.com/in/lemiorhan @lemiorhan https://twitter.com/lemiorhan @lemiorhan https://github.com/lemiorhan @lemiorhan http://www.slideshare.net/lemiorhan agile software craftsman agilistanbul.com Turkish blog about agile development lemiorhanergin.com Official site having personal information