SlideShare uma empresa Scribd logo
1 de 27
Baixar para ler offline
Perth Code Dojo 
5 @willwebst 
#CodeDojo
Check-In 
➔ Your name 
➔ What do you want for Christmas? 
➔ Do you believe in Santa?
Code Dojo Format 
A Coding Dojo is a coding session centered around a 
programming challenge. 
The dojo provides a safe place to learn and experiment 
away from the pressures of business delivery. 
All programmers of varying skill levels meet as equals to 
learn and share.
Software Craftsmanship 
“Deliberate practice is closely related to the 
attained level of performance of many types of 
experts” - Dr. K. Anders Ericsson
Dojo Rules 
➔ Paired Programming 
➔ Simple Design 
➔ Test Driven Development 
➔ Refactoring
XP Practices 
➔ Test Driven Design 
◆ Red - Green - Refactor 
◆ Keep the unit small 
◆ DESIGN / Design by contract 
◆ Flow
XP Practises 
➔ Benefits 
◆ More extensible and maintainable solutions 
◆ Quality improvements / cost of defects 
◆ Automated builds 
◆ Peer reviews / pairing 
◆ Confidence to refactor 
◆ Coverage 
◆ Legacy code
XP Practises 
➔ Disadvantages / challenges 
◆ Requires buy in 
◆ Learning curve 
◆ Purest approach 
◆ Overly loose coupling 
◆ Not always productive 
◆ Potential overconfidence 
◆ Tests require maintenance / refactoring
Pomodoro 
➔ Pomodoro Technique 
◆ 25 mins on, 5 mins off 
◆ http://tomatoi.st/perthcodedojo 
➔ Four iterations
Retro & Pizza 
Closing with Pizza and a mini retrospective 
➔ Share solutions on the big screen 
➔ Discuss challenge / approach 
➔ Feedback on the dojo
Polite Notice 
Please respect each others commitment. 
During a Pomodoro. 
➔ No Facebook 
➔ Mobile phones 
➔ Etc.
Have Fun! 
Most importantly have fun! 
➔ Drinks are available - help yourselves
Objective 
Given a word list, containing one word 
per line. 
Find all the combinations of each word 
which are anagrams.
Objective 
Examples: 
Webster - bestrew 
Software - forwaste
Objective 
Think about the algorithm approach 
● Simplest 
● Fastest 
Test First!
Find Anagrams 
http://codekata.com/data/wordlist.txt 
Find all the anagrams contained within the list for each 
word
Begin! 
25 mins
Stop! 
5 mins
Remove Acronyms 
Remove any non-words 
● ACB 
● BBSes 
● BMW's
Begin! 
25 mins
Stop! 
5 mins
Remove Non-English 
Remove any words which contain non-UFT8 characters 
● étagères 
● Ångströms 
● Österreich's 
Remove an names - starting with uppercase
Begin! 
25 mins
Stop! 
5 mins
Thank You - Dave Thomas 
Credit goes to @PragDave / Ruby community for this 
Katak 
Check out - http://codekata.com/ 
Great source for Code Katas.
Thank you sponsors! 
Code - http://github.com/burlistic 
Slides - http://speakerdeck.com/burlistic 
@willwebst
Mini Retro 
How did everyone find the exercise? 
Small break for Christmas. See you in 2015! 
Next up - Decoupling Logic from the UI

Mais conteúdo relacionado

Mais procurados

Proclub SE Magang! Summer 2020 Goes to Unicorn! Series: 0. An Introduction
Proclub SE Magang! Summer 2020 Goes to Unicorn! Series: 0. An IntroductionProclub SE Magang! Summer 2020 Goes to Unicorn! Series: 0. An Introduction
Proclub SE Magang! Summer 2020 Goes to Unicorn! Series: 0. An IntroductionWisnu Adi Nurcahyo
 
How to create short videos
How to create short videosHow to create short videos
How to create short videosKatelyn Lemay
 
How Non-Profit Organizations Can Create Accessible Video
How Non-Profit Organizations Can Create Accessible VideoHow Non-Profit Organizations Can Create Accessible Video
How Non-Profit Organizations Can Create Accessible Video3Play Media
 
Screen recorder comparison schillerstrom
Screen recorder comparison schillerstromScreen recorder comparison schillerstrom
Screen recorder comparison schillerstromaschillerstrom
 
Engl317 project4 slidedoc4_screencasting_usability_testfinding
Engl317 project4 slidedoc4_screencasting_usability_testfindingEngl317 project4 slidedoc4_screencasting_usability_testfinding
Engl317 project4 slidedoc4_screencasting_usability_testfindingZachary Williamson
 
WebAssembly: Digging a bit deeper
WebAssembly: Digging a bit deeperWebAssembly: Digging a bit deeper
WebAssembly: Digging a bit deeperAll Things Open
 
Introducing bdd elements to unit testing.pptx
Introducing bdd elements to unit testing.pptxIntroducing bdd elements to unit testing.pptx
Introducing bdd elements to unit testing.pptxAnders Hammervold
 
Agile Software Development for Non-Developers
Agile Software Development for Non-DevelopersAgile Software Development for Non-Developers
Agile Software Development for Non-Developershamvocke
 
Planning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teamsPlanning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teamsChristian Heilmann
 
A/B Testing That Matters
A/B Testing That MattersA/B Testing That Matters
A/B Testing That MattersBlake Commagere
 

Mais procurados (14)

Proclub SE Magang! Summer 2020 Goes to Unicorn! Series: 0. An Introduction
Proclub SE Magang! Summer 2020 Goes to Unicorn! Series: 0. An IntroductionProclub SE Magang! Summer 2020 Goes to Unicorn! Series: 0. An Introduction
Proclub SE Magang! Summer 2020 Goes to Unicorn! Series: 0. An Introduction
 
How to create short videos
How to create short videosHow to create short videos
How to create short videos
 
How Non-Profit Organizations Can Create Accessible Video
How Non-Profit Organizations Can Create Accessible VideoHow Non-Profit Organizations Can Create Accessible Video
How Non-Profit Organizations Can Create Accessible Video
 
Screen recorder comparison schillerstrom
Screen recorder comparison schillerstromScreen recorder comparison schillerstrom
Screen recorder comparison schillerstrom
 
Engl317 project4 slidedoc4_screencasting_usability_testfinding
Engl317 project4 slidedoc4_screencasting_usability_testfindingEngl317 project4 slidedoc4_screencasting_usability_testfinding
Engl317 project4 slidedoc4_screencasting_usability_testfinding
 
CAT presentation
CAT presentationCAT presentation
CAT presentation
 
WebAssembly: Digging a bit deeper
WebAssembly: Digging a bit deeperWebAssembly: Digging a bit deeper
WebAssembly: Digging a bit deeper
 
Introducing bdd elements to unit testing.pptx
Introducing bdd elements to unit testing.pptxIntroducing bdd elements to unit testing.pptx
Introducing bdd elements to unit testing.pptx
 
Tf itjsbagg
Tf itjsbaggTf itjsbagg
Tf itjsbagg
 
Testing javascript
Testing javascriptTesting javascript
Testing javascript
 
Agile Software Development for Non-Developers
Agile Software Development for Non-DevelopersAgile Software Development for Non-Developers
Agile Software Development for Non-Developers
 
Planning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teamsPlanning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teams
 
Design 101
Design 101Design 101
Design 101
 
A/B Testing That Matters
A/B Testing That MattersA/B Testing That Matters
A/B Testing That Matters
 

Destaque

Agile tour Taipei 2014 - coding dojo with CSharp and TDD
Agile tour Taipei 2014 - coding dojo with CSharp and TDDAgile tour Taipei 2014 - coding dojo with CSharp and TDD
Agile tour Taipei 2014 - coding dojo with CSharp and TDDJoey Chen
 
Coding Dojo: Tic-Tac-Toe (2014)
Coding Dojo: Tic-Tac-Toe (2014)Coding Dojo: Tic-Tac-Toe (2014)
Coding Dojo: Tic-Tac-Toe (2014)Peter Kofler
 
Agile tour 2014 - Coding Dojo with C# and TDD
Agile tour 2014 - Coding Dojo with C# and TDDAgile tour 2014 - Coding Dojo with C# and TDD
Agile tour 2014 - Coding Dojo with C# and TDDAgileCommunity
 

Destaque (9)

Agile tour Taipei 2014 - coding dojo with CSharp and TDD
Agile tour Taipei 2014 - coding dojo with CSharp and TDDAgile tour Taipei 2014 - coding dojo with CSharp and TDD
Agile tour Taipei 2014 - coding dojo with CSharp and TDD
 
Coding Dojo: Tic-Tac-Toe (2014)
Coding Dojo: Tic-Tac-Toe (2014)Coding Dojo: Tic-Tac-Toe (2014)
Coding Dojo: Tic-Tac-Toe (2014)
 
Clojure
ClojureClojure
Clojure
 
ScalaZ
ScalaZScalaZ
ScalaZ
 
Agile tour 2014 - Coding Dojo with C# and TDD
Agile tour 2014 - Coding Dojo with C# and TDDAgile tour 2014 - Coding Dojo with C# and TDD
Agile tour 2014 - Coding Dojo with C# and TDD
 
Coding DOJO
Coding DOJOCoding DOJO
Coding DOJO
 
Agile Prague Coding Dojo
Agile Prague Coding DojoAgile Prague Coding Dojo
Agile Prague Coding Dojo
 
Pykonik Coding Dojo
Pykonik Coding DojoPykonik Coding Dojo
Pykonik Coding Dojo
 
At2009 Coding Dojo ATDD
At2009 Coding Dojo ATDDAt2009 Coding Dojo ATDD
At2009 Coding Dojo ATDD
 

Semelhante a Perth codedojo 5-anagram-algorithm

How does one learn to program?
How does one learn to program?How does one learn to program?
How does one learn to program?Olmo F. Maldonado
 
How to deliver the right software (Specification by example)
How to deliver the right software (Specification by example)How to deliver the right software (Specification by example)
How to deliver the right software (Specification by example)Asier Barrenetxea
 
Golang, Python or C/C++, who wins
Golang, Python or C/C++, who wins Golang, Python or C/C++, who wins
Golang, Python or C/C++, who wins Obed N Muñoz
 
Building an event/conference website like FUDCon.in
Building an event/conference website like FUDCon.inBuilding an event/conference website like FUDCon.in
Building an event/conference website like FUDCon.inVaidik Kapoor
 
What is the best programming language for your web product?
What is the best programming language for your web product?What is the best programming language for your web product?
What is the best programming language for your web product?MobiDev
 
Single-Sourcing and Localization
Single-Sourcing and LocalizationSingle-Sourcing and Localization
Single-Sourcing and LocalizationLaura Dent
 
Software Design Notes
Software Design NotesSoftware Design Notes
Software Design NotesDiego Pacheco
 
Talk proposal get_accepted
Talk proposal get_acceptedTalk proposal get_accepted
Talk proposal get_acceptedlauraxthomson
 
Perth codedojo 2-checkout
Perth codedojo 2-checkoutPerth codedojo 2-checkout
Perth codedojo 2-checkoutWill Webster
 
Talking about craftsmanship with ensaimadas and katas
Talking about craftsmanship with ensaimadas and katasTalking about craftsmanship with ensaimadas and katas
Talking about craftsmanship with ensaimadas and katasRachel M. Carmena
 
Software Craftsmanship - It's an Imperative
Software Craftsmanship - It's an ImperativeSoftware Craftsmanship - It's an Imperative
Software Craftsmanship - It's an ImperativeFadi Stephan
 
The future of testing magento 2 james cowie from shero commerce - 10 24-20 ...
The future of testing magento 2   james cowie from shero commerce - 10 24-20 ...The future of testing magento 2   james cowie from shero commerce - 10 24-20 ...
The future of testing magento 2 james cowie from shero commerce - 10 24-20 ...James Cowie
 
BA and Beyond 20 - Elke Steegmans and David Vandenbroeck - Behaviour-driven d...
BA and Beyond 20 - Elke Steegmans and David Vandenbroeck - Behaviour-driven d...BA and Beyond 20 - Elke Steegmans and David Vandenbroeck - Behaviour-driven d...
BA and Beyond 20 - Elke Steegmans and David Vandenbroeck - Behaviour-driven d...BA and Beyond
 
Pair Programming (2015)
Pair Programming (2015)Pair Programming (2015)
Pair Programming (2015)Peter Kofler
 
Amanda Cinnamon - Treat Your Code Like the Valuable Software It Is
Amanda Cinnamon - Treat Your Code Like the Valuable Software It IsAmanda Cinnamon - Treat Your Code Like the Valuable Software It Is
Amanda Cinnamon - Treat Your Code Like the Valuable Software It IsRehgan Avon
 
Talking about craftsmanship with "ensaimadas" and katas (May, 2018)
Talking about craftsmanship with "ensaimadas" and katas (May, 2018)Talking about craftsmanship with "ensaimadas" and katas (May, 2018)
Talking about craftsmanship with "ensaimadas" and katas (May, 2018)Rachel M. Carmena
 
Pair Programming (2014)
Pair Programming (2014)Pair Programming (2014)
Pair Programming (2014)Peter Kofler
 
Introducing Pair Programming
Introducing Pair ProgrammingIntroducing Pair Programming
Introducing Pair ProgrammingSteven Smith
 
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLEAN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLEGavin Pickin
 

Semelhante a Perth codedojo 5-anagram-algorithm (20)

How does one learn to program?
How does one learn to program?How does one learn to program?
How does one learn to program?
 
How to deliver the right software (Specification by example)
How to deliver the right software (Specification by example)How to deliver the right software (Specification by example)
How to deliver the right software (Specification by example)
 
Golang, Python or C/C++, who wins
Golang, Python or C/C++, who wins Golang, Python or C/C++, who wins
Golang, Python or C/C++, who wins
 
Building an event/conference website like FUDCon.in
Building an event/conference website like FUDCon.inBuilding an event/conference website like FUDCon.in
Building an event/conference website like FUDCon.in
 
Xtreme Programming
Xtreme ProgrammingXtreme Programming
Xtreme Programming
 
What is the best programming language for your web product?
What is the best programming language for your web product?What is the best programming language for your web product?
What is the best programming language for your web product?
 
Single-Sourcing and Localization
Single-Sourcing and LocalizationSingle-Sourcing and Localization
Single-Sourcing and Localization
 
Software Design Notes
Software Design NotesSoftware Design Notes
Software Design Notes
 
Talk proposal get_accepted
Talk proposal get_acceptedTalk proposal get_accepted
Talk proposal get_accepted
 
Perth codedojo 2-checkout
Perth codedojo 2-checkoutPerth codedojo 2-checkout
Perth codedojo 2-checkout
 
Talking about craftsmanship with ensaimadas and katas
Talking about craftsmanship with ensaimadas and katasTalking about craftsmanship with ensaimadas and katas
Talking about craftsmanship with ensaimadas and katas
 
Software Craftsmanship - It's an Imperative
Software Craftsmanship - It's an ImperativeSoftware Craftsmanship - It's an Imperative
Software Craftsmanship - It's an Imperative
 
The future of testing magento 2 james cowie from shero commerce - 10 24-20 ...
The future of testing magento 2   james cowie from shero commerce - 10 24-20 ...The future of testing magento 2   james cowie from shero commerce - 10 24-20 ...
The future of testing magento 2 james cowie from shero commerce - 10 24-20 ...
 
BA and Beyond 20 - Elke Steegmans and David Vandenbroeck - Behaviour-driven d...
BA and Beyond 20 - Elke Steegmans and David Vandenbroeck - Behaviour-driven d...BA and Beyond 20 - Elke Steegmans and David Vandenbroeck - Behaviour-driven d...
BA and Beyond 20 - Elke Steegmans and David Vandenbroeck - Behaviour-driven d...
 
Pair Programming (2015)
Pair Programming (2015)Pair Programming (2015)
Pair Programming (2015)
 
Amanda Cinnamon - Treat Your Code Like the Valuable Software It Is
Amanda Cinnamon - Treat Your Code Like the Valuable Software It IsAmanda Cinnamon - Treat Your Code Like the Valuable Software It Is
Amanda Cinnamon - Treat Your Code Like the Valuable Software It Is
 
Talking about craftsmanship with "ensaimadas" and katas (May, 2018)
Talking about craftsmanship with "ensaimadas" and katas (May, 2018)Talking about craftsmanship with "ensaimadas" and katas (May, 2018)
Talking about craftsmanship with "ensaimadas" and katas (May, 2018)
 
Pair Programming (2014)
Pair Programming (2014)Pair Programming (2014)
Pair Programming (2014)
 
Introducing Pair Programming
Introducing Pair ProgrammingIntroducing Pair Programming
Introducing Pair Programming
 
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLEAN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE
 

Último

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdfChristopherTHyatt
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 

Último (20)

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 

Perth codedojo 5-anagram-algorithm

  • 1. Perth Code Dojo 5 @willwebst #CodeDojo
  • 2. Check-In ➔ Your name ➔ What do you want for Christmas? ➔ Do you believe in Santa?
  • 3. Code Dojo Format A Coding Dojo is a coding session centered around a programming challenge. The dojo provides a safe place to learn and experiment away from the pressures of business delivery. All programmers of varying skill levels meet as equals to learn and share.
  • 4. Software Craftsmanship “Deliberate practice is closely related to the attained level of performance of many types of experts” - Dr. K. Anders Ericsson
  • 5. Dojo Rules ➔ Paired Programming ➔ Simple Design ➔ Test Driven Development ➔ Refactoring
  • 6. XP Practices ➔ Test Driven Design ◆ Red - Green - Refactor ◆ Keep the unit small ◆ DESIGN / Design by contract ◆ Flow
  • 7. XP Practises ➔ Benefits ◆ More extensible and maintainable solutions ◆ Quality improvements / cost of defects ◆ Automated builds ◆ Peer reviews / pairing ◆ Confidence to refactor ◆ Coverage ◆ Legacy code
  • 8. XP Practises ➔ Disadvantages / challenges ◆ Requires buy in ◆ Learning curve ◆ Purest approach ◆ Overly loose coupling ◆ Not always productive ◆ Potential overconfidence ◆ Tests require maintenance / refactoring
  • 9. Pomodoro ➔ Pomodoro Technique ◆ 25 mins on, 5 mins off ◆ http://tomatoi.st/perthcodedojo ➔ Four iterations
  • 10. Retro & Pizza Closing with Pizza and a mini retrospective ➔ Share solutions on the big screen ➔ Discuss challenge / approach ➔ Feedback on the dojo
  • 11. Polite Notice Please respect each others commitment. During a Pomodoro. ➔ No Facebook ➔ Mobile phones ➔ Etc.
  • 12. Have Fun! Most importantly have fun! ➔ Drinks are available - help yourselves
  • 13. Objective Given a word list, containing one word per line. Find all the combinations of each word which are anagrams.
  • 14. Objective Examples: Webster - bestrew Software - forwaste
  • 15. Objective Think about the algorithm approach ● Simplest ● Fastest Test First!
  • 16. Find Anagrams http://codekata.com/data/wordlist.txt Find all the anagrams contained within the list for each word
  • 19. Remove Acronyms Remove any non-words ● ACB ● BBSes ● BMW's
  • 22. Remove Non-English Remove any words which contain non-UFT8 characters ● étagères ● Ångströms ● Österreich's Remove an names - starting with uppercase
  • 25. Thank You - Dave Thomas Credit goes to @PragDave / Ruby community for this Katak Check out - http://codekata.com/ Great source for Code Katas.
  • 26. Thank you sponsors! Code - http://github.com/burlistic Slides - http://speakerdeck.com/burlistic @willwebst
  • 27. Mini Retro How did everyone find the exercise? Small break for Christmas. See you in 2015! Next up - Decoupling Logic from the UI