Padawan2Jedi - A Developer Jump-Start - Austin Code Camp 2011

  • 4,525 views
Uploaded on

This was presented at Austin Code Camp 2011 on Sept 10, 2011 by Chris Edwards http://chrisedwards.dreamhosters.com …

This was presented at Austin Code Camp 2011 on Sept 10, 2011 by Chris Edwards http://chrisedwards.dreamhosters.com

Here is the abstract from the code camp:

Are you wanting to become a better developer, but don't know where to start? Do the terms TDD, BDD, CI, SOLID, etc. seem foreign to you? This two part presentation will cover many of the modern development practices today that every developer should know. Learn about object oriented design principles, design patterns, testing (mocking, TDD, BDD), source control, continuous integration, agile practices, plus many useful tools and techniques. That's a lot to cover, so while some topics will be discussed in-depth, others will be touched on lightly, with resources on where to get more information. The purpose of the presentation is to give a broad overview of how modern developers work and the tools they use to be efficient and productive and provide resources so that any aspiring developer can get on the fast-track to becoming better at their craft.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
4,525
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
3
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • [twitter]Starting my presentation "Padawan to Jedi" Part 1. Follow @cedwards or #Padawan2Jedi for tweet stream. #AustinCodeCamp[/twitter]\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Its passion that feeds your learning\n\n
  • [twitter]Use http://paper.li to read all the links tweeted throughout the day. Way faster than looking through the tweets.[/twitter]\nTips\nRead Blogs\nAttend\n Code Camps\n User Groups\n Conferences\nFollow the right people on twitter\n My list\n paper.li\nRead books\nListen.\n\n
  • [twitter]Use http://paper.li to read all the links tweeted throughout the day. Way faster than looking through the tweets.[/twitter]\nTips\nRead Blogs\nAttend\n Code Camps\n User Groups\n Conferences\nFollow the right people on twitter\n My list\n paper.li\nRead books\nListen.\n\n
  • [twitter]Use http://paper.li to read all the links tweeted throughout the day. Way faster than looking through the tweets.[/twitter]\nTips\nRead Blogs\nAttend\n Code Camps\n User Groups\n Conferences\nFollow the right people on twitter\n My list\n paper.li\nRead books\nListen.\n\n
  • [twitter]Use http://paper.li to read all the links tweeted throughout the day. Way faster than looking through the tweets.[/twitter]\nTips\nRead Blogs\nAttend\n Code Camps\n User Groups\n Conferences\nFollow the right people on twitter\n My list\n paper.li\nRead books\nListen.\n\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Links\nhttp://objectmentor.com/\nhttp://www.objectmentor.com/omSolutions/oops_what.html\nhttp://en.wikipedia.org/wiki/Object-oriented_design\nhttp://en.wikipedia.org/wiki/Object-oriented_programming\n\n
  • Encapsulation\nSometimes called Information Hiding\nData and Methods kept together\nhttp://en.wikipedia.org/wiki/Information_hiding\n“The hiding of design decisions in a computer program that are most likely to change” - Wikipedia\n\n
  • Inheritance\nExtend/Override\nInterface\nDeferred implementation\nPolymorphism\nReplace an object of a class with an object of its subclasses\nAbstraction\n Code against an interface, not implementation\n Depend on abstractions, not concretions\n\n
  • Inheritance\nExtend/Override\nInterface\nDeferred implementation\nPolymorphism\nReplace an object of a class with an object of its subclasses\nAbstraction\n Code against an interface, not implementation\n Depend on abstractions, not concretions\n\n
  • Inheritance\nExtend/Override\nInterface\nDeferred implementation\nPolymorphism\nReplace an object of a class with an object of its subclasses\nAbstraction\n Code against an interface, not implementation\n Depend on abstractions, not concretions\n\n
  • Goals\nLow Coupling\n Unit tests promote low coupling. Highly coupled code is difficult to test.\n Links\n Coupling And Cohesion on c2.com\n http://c2.com/cgi/wiki?CouplingAndCohesion\n “The degree to which each program module relies on each one of the other modules” – Wikipedia\n http://en.wikipedia.org/wiki/Coupling_(computer_science)\nHigh Cohesion\n http://codebetter.com/blogs/jeremy.miller/pages/129542.aspx “A measure of how strongly-related and focused the various responsibilities of a software module are” - Wikipedia \n http://en.wikipedia.org/wiki/Cohesion_(computer_science)\nValue\nDon't have to understand the whole picture because it is broken down into decoupled pieces.\n Understanding one piece is enough to work on that piece\n\n
  • [twitter]Every developer should be able to communicate using basic UML: http://bit.ly/qimo8 http://ibm.co/9cUooz http://bit.ly/kKwys [/twitter]\nLinks\nhttp://en.wikipedia.org/wiki/Class_diagram\nhttp://www.ibm.com/developerworks/rational/library/769.html\nhttp://www.holub.com/goodies/uml/\n UML Reference Card\n\n
  • [twitter]Every developer should be able to communicate using basic UML: http://bit.ly/qimo8 http://ibm.co/9cUooz http://bit.ly/kKwys [/twitter]\nClass Diagram\nRelationship\nInheritance\nImplementation\nLinks\n http://www.ibm.com/developerworks/rational/library/content/RationalEdge/sep04/bell/\n http://www.objectmentor.com/resources/articles/umlClassDiagrams.pdf\n http://www.agilemodeling.com/artifacts/classDiagram.htm\n\n
  • Sequence Diagram\nLifetimes and interactions\n\n\n
  • Activity Diagram\nOverall flow of functionality\nShows paralellism\n\n
  • \n
  • \n
  • Works\nSatisfies Requirements (the right ones)\n\n
  • Maintainability\nSimplicity\n\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Simplicity is the key! The following help keep it simple.\n
  • [twitter]YAGNI (You Aren't Gonna Need It): Don't implement code you don't need. http://bit.ly/7qy9B [/twitter]\nYAGNI (You Aren't Going To Need It)\nhttp://c2.com/xp/YouArentGonnaNeedIt.html\nHelps keep it simple\nPicture of targeting computer\n\n
  • [twitter]Defer design decisions to the Last Responsible Moment http://bit.ly/gGLzrb [/twitter]\nLast Responsible Moment\nhttp://www.codinghorror.com/blog/2006/10/the-last-responsible-moment.html\n\n
  • [twitter]Avoid Pre-Mature Optimization: http://bit.ly/qAANet http://bit.ly/n5fmTK[/twitter]\nAvoid Premature Optimization\nhttp://c2.com/cgi/wiki?PrematureOptimization "We should forget about small efficiencies, say about 97% of the time; premature optimization is the root of all evil Yet we should not pass up our opportunities in that critical 3%."             -- Donald E. Knuth, Structured Programming with go to Statements \n http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.103.6084&rep=rep1&type=pdf Src: Structured Programming with go to Statements, ACM Journal Computing Surveys, Vol 6, No. 4, Dec. 1974. p.268. \n\n
  • [twitter]DRY: Don’t Repeat Yourself. Repeated code is unmaintainable. http://bit.ly/m6wg2c http://bit.ly/DVBz9 http://bit.ly/owjNTR [/twitter]\nDRY\nhttp://en.wikipedia.org/wiki/Don%27t_repeat_yourself\nhttp://c2.com/cgi/wiki?DontRepeatYourself\nhttp://www.artima.com/intv/dry.html\nPicture of clones\n\n
  • [twitter]Separation of Concerns: A place for everything, and everything in its place. http://bit.ly/qL74lf [/twitter]\nSeparation of Concerns\nhttp://en.wikipedia.org/wiki/Separation_of_concerns\nDarth maul sliced in half\n\n
  • [twitter]Favor Composition over Inheritance: It is far more flexible. http://bit.ly/bfnaH4 http://bit.ly/ofJznN [/twitter]\nComposition over inheritance\nhttp://www.artima.com/lejava/articles/designprinciples4.html\nComposition is more decoupled than inheritance\n You can reuse an object that is part of the composition (strategy pattern)\n You cannot reuse an overriden method\n Inheritance allows the overriden method to make assumptions on the base class's internal state\nhttp://lostechies.com/chadmyers/2010/02/13/composition-versus-inheritance/\n\n
  • [twitter]Explicit over Implicit: Make implicit concepts explicit in your code. http://bit.ly/nS2NUB http://bit.ly/oSSFE2 [/twitter]\nfrom DDD\n make implicit concepts explicit. http://sympriser.wordpress.com/2009/03/31/revisiting-fowlers-video-store-02-making-implicit-concepts-explicit/ \nhttp://martinfowler.com/ieeeSoftware/explicit.pdf\n\n
  • [twitter]Fail Fast: The faster your code fails, the sooner you correct it. http://bit.ly/22QPBA [/twitter]\nFail Fast\nLinks\n Article by James Shore\n http://martinfowler.com/ieeeSoftware/failFast.pdf\nAssertions\nRaise errors with any info useful to debugging.\nPicture of Jar Jar Binks\n\n
  • [twitter]Fail Fast: The faster your code fails, the sooner you correct it. http://bit.ly/22QPBA [/twitter]\nFail Fast\nLinks\n Article by James Shore\n http://martinfowler.com/ieeeSoftware/failFast.pdf\nAssertions\nRaise errors with any info useful to debugging.\nPicture of Jar Jar Binks\n\n
  • [twitter]Fail Fast: The faster your code fails, the sooner you correct it. http://bit.ly/22QPBA [/twitter]\nFail Fast\nLinks\n Article by James Shore\n http://martinfowler.com/ieeeSoftware/failFast.pdf\nAssertions\nRaise errors with any info useful to debugging.\nPicture of Jar Jar Binks\n\n
  • [twitter]Law of Demeter: Reduce class dependencies by only talking to the nearest neighbor. http://bit.ly/qpnke [/twitter]\nLaw of Demeter\nLinks\n http://en.wikipedia.org/wiki/Law_of_Demeter\n\n
  • [twitter]No Broken Windows: “A little leaven leavens the whole lump” Keep code clean...sloppiness is contagious. http://bit.ly/nFNwc5 [/twitter]\nNo Broken Windows\nhttp://www.artima.com/intv/fixit.html\n On second page of article\n\n
  • [twitter]The Boy Scout Rule: Leave it better than you found it. http://bit.ly/9Q9nVR [/twitter]\nBoy Scout Principle\nLeave the codebase better than you found it\n\n
  • [twitter]The SOLID Principles: http://bit.ly/nkFfgw http://bit.ly/usIAS http://bit.ly/mQLEzk http://bit.ly/ow4iOV [/twitter]\nLinks\nhttp://en.wikipedia.org/wiki/Solid\nSOLID Motivational Posters\n http://lostechies.com/derickbailey/2009/02/11/solid-development-principles-in-motivational-pictures/\nhttp://www.butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod\nhttp://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf\nOCP,SRP,LSP, Chain of Responsibility, Double Dispatch by Jeremy Miller\n  \nLos Techies Topic of the Month\n http://lostechies.com/chadmyers/2008/03/08/pablo-s-topic-of-the-month-march-solid-principles/\n e-book\n http://lostechies.com/wp-content/uploads/2011/03/pablos_solid_ebook.pdf\n\n
  • SRP\nhttp://www.objectmentor.com/resources/articles/srp.pdf\n\n
  • SRP\nhttp://www.objectmentor.com/resources/articles/srp.pdf\n\n
  • OCP\nLinks\n http://www.objectmentor.com/resources/articles/ocp.pdf\n http://c2.com/cgi/wiki?OpenClosedPrinciple\n\n
  • OCP\nLinks\n http://www.objectmentor.com/resources/articles/ocp.pdf\n http://c2.com/cgi/wiki?OpenClosedPrinciple\n\n
  • LSP\nhttp://www.objectmentor.com/resources/articles/lsp.pdf\n\n
  • LSP\nhttp://www.objectmentor.com/resources/articles/lsp.pdf\n\n
  • ISP\nhttp://www.objectmentor.com/resources/articles/isp.pdf\n\n
  • ISP\nhttp://www.objectmentor.com/resources/articles/isp.pdf\n\n
  • DIP\nIoC\nLinks\n http://www.objectmentor.com/resources/articles/dip.pdf\n http://codebetter.com/jeremymiller/2005/07/20/tdd-design-starter-kit-dependency-inversion-principle/\n\n
  • DIP\nIoC\nLinks\n http://www.objectmentor.com/resources/articles/dip.pdf\n http://codebetter.com/jeremymiller/2005/07/20/tdd-design-starter-kit-dependency-inversion-principle/\n\n
  • [twitter]SOLID Motivational Posters: http://bit.ly/o21sQa[/twitter]\n
  • [twitter]Design Patterns: http://bit.ly/alwFHt http://bit.ly/IgCxT http://bit.ly/a6LwIT http://bit.ly/2owmxC [/twitter]\nLinks\nhttp://en.wikipedia.org/wiki/Design_Patterns\nhttp://sourcemaking.com/\nhttp://dofactory.com/Patterns/Patterns.aspx\nhttp://www.artima.com/lejava/articles/gammadp.html\n Summary Among developers, design patterns are a popular way to think about design, but what is the proper way to think about design patterns? In this interview, Erich Gamma, co-author of the landmark book, Design Patterns, talks with Bill Venners about the right way to think about and use design patterns. \nRelationships Diagram\n http://r3dux.org/2011/06/design-pattern-relationships/\n\n
  • [twitter]Wisdom: Don't use design patterns just because you can. That's a sure sign of immaturity.[/twitter]\nUse wisdom in applying patterns\nDon’t use the patterns just to use them. A common newbie mistake.\nWhat works for a web app doesn't work for a backend data processing engine\nWhat works for a new application does not bode well for a legacy app\nDon't bite off more than you can chew.\nDon't try something new just because it's new. It must fulfill a buisiness need.\nConsider those who have to support the code you write. Can they?\n\n
  • \nLinks\nhttp://en.wikipedia.org/wiki/Design_Patterns\nhttp://sourcemaking.com/\nhttp://dofactory.com/Patterns/Patterns.aspx\nhttp://www.artima.com/lejava/articles/gammadp.html\n Summary Among developers, design patterns are a popular way to think about design, but what is the proper way to think about design patterns? In this interview, Erich Gamma, co-author of the landmark book, Design Patterns, talks with Bill Venners about the right way to think about and use design patterns. \nRelationships Diagram\n http://r3dux.org/2011/06/design-pattern-relationships/\n\n
  • \n
  • \n
  • [twitter]Patterns of Enterprise Application Architecture: Great patterns book. http://bit.ly/aC4dnZ [/twitter]\nPoEAA\nLinks\n http://martinfowler.com/eaaCatalog/index.html\n\n
  • [twitter]Other Design Pattern Pattern Resources... GRASP: http://bit.ly/qxXqoh Fowler's Pattern Repository List: http://bit.ly/hiCY6u [/twitter]\nLinks\nMartin Fowler's links to many pattern repositories\n http://martinfowler.com/articles/enterprisePatterns.html\n\n
  • [twitter]Domain Driven Design: Must read for developers. http://bit.ly/1l9LPT http://bit.ly/tlZJe [/twitter]\nLinks\nDomain Driven Design Quickly (Free e-book from Info-Q)\n http://www.infoq.com/minibooks/domain-driven-design-quickly\nhttp://domaindrivendesign.org/\n\n
  • \n
  • \n
  • [twitter]Refactoring: Just do it. Constantly improve your code. http://bit.ly/eg9sk http://bit.ly/aVTvzE http://bit.ly/41eSRm [/twitter]\nLinks\nhttp://martinfowler.com/books.html#refactoring\nhttp://www.refactoring.com/\nRefactoring to Patterns\n http://industriallogic.com/xp/refactoring/catalog.html\n\n
  • \n
  • [twitter]Code Smells: If it stinks, refactor it. http://bit.ly/8XixMa [/twitter]\n
  • [twitter]ReSharper: THE must-have tool for every .NET developer: http://bit.ly/s09v\n [/twitter]\n
  • \n
  • \n
  • [twitter]Repository and Unit of Work Patterns: Encapsulate your DB code. http://bit.ly/JSTHa http://bit.ly/CvEAA [/twitter]\nRepository\nStore objects like a collection...not worrying about sql or xml or whatever persistence mechanism you are using. All access is C#. (Persistence Ignorance) Show a class with inline sql, then try to replace sql for mongo \n Then show how introducing a repository can simplify this by depending on an interface.\nA repository is not a DAO. \n It is a model of a collection\n Repository == ICollection\n\n
  • [twitter]NHibernate: Eases DB access. http://bit.ly/amleRr , Book: http://bit.ly/17HK0T, Fluent NHibernate: http://bit.ly/17btBp [/twitter]\nNHibernate\nLinks\n http://nhforge.org/Default.aspx\n Book: NHibernate In Action\n http://www.manning.com/kuate/\n\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • [twitter]XUnit Test Patterns: Excellent book on unit testing. http://bit.ly/9S8Ot4 [/twitter]\n
  • Good Unit Tests Are\nAtomic\n No dependencies on other tests\n Short (5 lines or so)\n Refactor\n Debugger?\n One logical assertion per test\nSelf-Contained\n Inserts their own data and removes it (if db test)\n Never depend on existing data in db\nOrder Independent & Isolated\nMeaningful\n Intention Revealing name\n Test something of importance (not properties/constructors)\nEasy to Setup\n Decouple from external dependencies\n DB, Web\n Use mocks\n Any dependencies must be set up by automated build\nFast\n Thousands of tests...means each must be very quick\nRepeatable\n Rerunning the test over and over produces same result\nReadable (clear)\n No clutter\n Simple flow\n Use var names rather than plain values\n Good tests names\n Include "Should"\n Tests ARE Documentation\nUnique\n Not testing something that is tested elsewhere\n DRY\nGranular\n Helps localize errors since smaller set of code is under test\n Targets failing code\n\n
  • [twitter]Test Driven Development: http://bit.ly/KPnS8 Book: http://bit.ly/p1IW6b [/twitter]\nLinks\nThe Bowling Game: An example of test-first pair programming -- Robert C. Marin and Robert S. Koss\n http://www.objectmentor.com/resources/articles/xpepisode.htm\nLet's Play TDD" Series of videos\n http://jamesshore.com/Blog/Lets-Play/\n\n
  • [twitter]Test Driven Development: http://bit.ly/KPnS8 Book: http://bit.ly/p1IW6b [/twitter]\nLinks\nThe Bowling Game: An example of test-first pair programming -- Robert C. Marin and Robert S. Koss\n http://www.objectmentor.com/resources/articles/xpepisode.htm\nLet's Play TDD" Series of videos\n http://jamesshore.com/Blog/Lets-Play/\n\n
  • [twitter]Uncle Bob's 3 Rules of TDD: http://bit.ly/bLQqF [/twitter]\nUncle Bob's Three Rules of TDD\nhttp://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd\n\n
  • [twitter]Red Green Refactor: The heartbeat of TDD. http://bit.ly/pZEG1z http://bit.ly/qr2L4X [/twitter]\nhttp://aydsoftware.blogspot.com/2009/05/tdd-rhythm.html\n\n
  • [twitter].NET Testing Frameworks: NUnit: http://nunit.org Machine.Specifications: http://bit.ly/hyBixj [/twitter]\n\n
  • Test first...defines interface\n
  • Then write class to usable interface, to make test pass.\n
  • \n
  • \n
  • Arrange can usually be pulled out into a common setup to be used by many tests.\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Extract context into its own reusable class (SRP) (Separation of Concerns)\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • [twitter]Awesome TDD Resources: Bowling Kata: http://bit.ly/Lojwj , James Shore Videos: http://bit.ly/9nwSIu [/twitter]\nLinks\nThe Bowling Game: An example of test-first pair programming -- Robert C. Marin and Robert S. Koss\n http://www.objectmentor.com/resources/articles/xpepisode.htm\ns Play TDD" Series of videos\n http://jamesshore.com/Blog/Lets-Play/\n\n
  • [twitter]Excellent Mocking Resources: http://bit.ly/psZZeo http://bit.ly/Leyh http://bit.ly/r7ewwo http://bit.ly/rkWXBy [/twitter]\n\nMocks Aren't Stubs (Martin Fowler)\nhttp://martinfowler.com/articles/mocksArentStubs.html\nResources\nBest and Worst Practices for Mock Objects (Jeremy Miller)\n http://codebetter.com/jeremymiller/2006/01/10/best-and-worst-practices-for-mock-objects/\nUsing AAA with Rhino Mocks\n http://ayende.com/blog/3318/rhino-mocks-arrange-act-assert-syntax\n Quick Reference\n http://svengrand.blogspot.com/2011/02/rhino-mocks-arange-act-assert-aaa.html\n\n
  • [twitter]Rhino Mocks: Excellent tool for mocks in .NET http://bit.ly/qQh6i9 [/twitter]\n
  • \n
  • [twitter]Inversion of Control links: http://bit.ly/13DIh0 http://bit.ly/qGb1GT http://bit.ly/qqA1rw [/twitter]\nLinks\nhttp://martinfowler.com/articles/injection.html\nhttp://codebetter.com/jeremymiller/2005/09/20/what’s-so-great-about-inversion-of-control/\nJeremy Millers Concepts to know first\n http://codebetter.com/jeremymiller/2008/06/29/some-concepts-to-know-first/\n\n
  • [twitter]IoC Containers: StructureMap (http://bit.ly/eOqhpl), Ninject (http://ninject.org/), Autofac (http://bit.ly/JL7nQ) [/twitter]\nTools\nStructureMap\n http://structuremap.net/structuremap/\nNinject\n http://ninject.org/\nAutofac\n http://code.google.com/p/autofac/\n\n
  • [twitter]Code Coverage Tools: dotCover http://bit.ly/9zvPnD and NCover http://bit.ly/GapKF [/twitter]\nCode Coverage\nNCover (with TDD.NET)\n http://testdriven.net\nCommercial\n NCover\n Links\n http://www.ncover.com\n dotCover\n http://www.jetbrains.com/dotcover/\n\n
  • [twitter[TestDriven.NET: Fast test integration with Visual Studio http://bit.ly/vEAEQ [/twitter]\n
  • \n
  • [twitter]Source Control: Subversion is a common solution: http://bit.ly/bG0WEV Book: http://bit.ly/nCrYz3 [/twitter[\nSubversion\nLinks\n http://svnbook.red-bean.com/nightly/en/index.html\n http://subversion.apache.org/\n\n
  • [twitter]Source Control: Distributed models are better, like Git (http://git-scm.com/ Book:http://bit.ly/2wiLT) or Mercurial [/twitter]\nGit\nLinks\n http://progit.org/book/\n http://git-scm.com/\n\n
  • [twitter]Continuous Integration: A MUST DO practice for modern developers. http://bit.ly/qro5y7 http://bit.ly/pzF82M [/twitter]\nLinks\nhttp://www.martinfowler.com/articles/continuousIntegration.html#MaintainASingleSourceRepository.\nEnterprise Continuous Integration Maturity Model\n http://www.urbancode.com/html/resources/white-papers/view.html?id=1214\n\n
  • [twitter]Continuous Integration Servers: TeamCity (http://bit.ly/25gir), Jenkins (http://bit.ly/fC15Q8) [/twitter]\n
  • \n
  • [twitter]Build Monitor: Cradiator is a great tool to visualize pass/fail of your builds. http://bit.ly/raxChw [/twitter]\n
  • \n
  • [twitter]The Agile manifesto: http://agilemanifesto.org/ [/twitter]\n
  • \n
  • [twitter]Extreme Programming: http://bit.ly/PKEC Books: http://amzn.to/oMAxAJ http://amzn.to/mOFQx4 http://scr.bi/7u7bOU [/twitter]\nResources\nBooks\n +- Extreme Programming Explained (Second Edition) - Kent Beck\n http://www.amazon.com/exec/obidos/ASIN/0321278658\n First Edition\n http://www.amazon.com/exec/obidos/ASIN/0201616416\n +- XP Purple book (recommended by Martin Fowler)\n http://www.amazon.com/exec/obidos/ASIN/0201616408\n The New XP\n +- http://www.scribd.com/doc/196734/The-New-XP\n Check link\nSites\n http://www.extremeprogramming.org/\n\n
  • [twitter]Scrum: http://bit.ly/13E2eX http://bit.ly/qjrij http://bit.ly/1LRUCI and an excellent blog: http://bit.ly/58V63 [/twitter]\nScrum\nLinks\n http://en.wikipedia.org/wiki/Agile_software_development\n http://www.scrumalliance.org/\n http://www.mountaingoatsoftware.com/\n Blogs\n http://www.agileadvice.com/\n\n
  • [twitter]Excellent book on agile development: James Shore's Art of Agile Development http://bit.ly/cA9rXl [/twitter]\n
  • [twitter]Choosing an Iteration Length: http://bit.ly/qcaIBY [/twitter]\nFeedback Loop\nExample of tracer bullets\nExample of turning on a hotel shower\nBiggest reason why agile "works"\nOften, fixin agile is finding or fixing a broken or missing feedback loop\n\n
  • [twitter]Choosing an Iteration Length: http://bit.ly/qcaIBY [/twitter]\nFeedback Loop\nExample of tracer bullets\nExample of turning on a hotel shower\nBiggest reason why agile "works"\nOften, fixin agile is finding or fixing a broken or missing feedback loop\n\n
  • [twitter]User Stories: http://bit.ly/id6lsV http://bit.ly/2Js80z [twitter]\n
  • \n
  • [twitter]The Planning Game: http://bit.ly/rt0u8k http://bit.ly/nsBNux [/twitter]\n
  • \n
  • \n
  • [twitter]Shared Code Ownership: http://bit.ly/qF9mzE [/twitter]\n
  • [twitter]Pair Programming: Arlo Belshee's excellent doc: "Promiscuous Pairing" http://bit.ly/pBAb [/twitter]\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • [twitter]Questions to ask in Retrospectives: http://bit.ly/qvBogF [/twitter]\n
  • \n
  • \n
  • \n

Transcript

  • 1. +)1*3$&4(56&4#70&89::& !"#$%&()&*(&+,,&-).&/0($1(.12& h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 2. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 3. PadawanDeveloper Jump-Start A to Jedi A U S T I N - C O D E - C A M P - 2 0 1 1 Chris Edwards h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 4. About Me Chris Edwards Architect at BancVue Ltd. Email: ChrisEdwards357@gmail.com Blog: http://chrisedwards.dreamhosters.com Twitter: @cedwards Github: http://github.com/chrisedwards h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 5. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 6. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 7. What makes a great developer? h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 8. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 9. Passion h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 10. Continuous Learning h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 11. Read Books Continuous Learning h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 12. Read Books Continuous Learning h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 13. Read Books Continuous Learning Blogs Read h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 14. Read Books Continuous Learning Blogs Read h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 15. Follow O thers Read Books Continuous Learning Blogs Read h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 16. Follow O thers Read Books Continuous Learning Blogs Read h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 17. Fiesta! mp ode Ca tin C Aus Aus tin .N Attend User Grou ET Follow O Events p thers Read Books Continuous Learning Blogs Read h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 18. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 19. Humility h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 20. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 21. Communication Skills h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 22. Basics Beginning with the basics... h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 23. Basics Beginning with the basics... h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 24. Basic oo concepts h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 25. Basic oo concepts (Object Oriented) h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 26. Encapsulation h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 27. Encapsulation Information Hiding h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 28. Polymorphism h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 29. Polymorphism h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 30. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 31. Low Coupling / High Cohesion h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 32. Communicating via uML h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 33. Class Diagram h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 34. Sequence Diagram h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 35. Activity Diagram h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 36. Design The theory and Practice of Design... h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 37. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 38. What makes great software... h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 39. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 40. Functionality (It works!) h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 41. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 42. Maintainability h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 43. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 44. Redundancy h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 45. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 46. Scalability h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 47. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 48. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 49. Performance h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 50. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 51. Usability h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 52. Design Principles The theory and Practice of Design... h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 53. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 54. Keep It Super Simple h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 55. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 56. You A ren’t G on na Ne ed It h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 57. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 58. Last Responsible Moment h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 59. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 60. Avoid Premature Optimization h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 61. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 62. Don’t Repeat Yourself h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 63. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 64. Separation of Concerns h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 65. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 66. Composition over Inheritance h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 67. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 68. Explicit over Implicit h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 69. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 70. Fail Fast h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 71. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 72. Law of Demeter h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 73. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 74. No Broken Windows h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 75. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 76. The Boy Scout Rule h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 77. The Solid Principles Principles for SOLID code h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 78. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 79. SRP Responsibility Principle The Single h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 80. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 81. ocp Open-Closed Principle The h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 82. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 83. lspLiskov Substitution Principle The h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 84. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 85. ispInterface Segregation Principle The h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 86. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 87. dip The Dependency Inversion Principle h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 88. SOLID Motivational Posters h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 89. Design Patterns Testing with mocks and stubs. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 90. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 91. First, a word of Wisdom... h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 92. gang of four patterns h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 93. Creational Patterns Abstract Factory Builder Structural Patterns Factory Method Adapter Prototype Bridge Singleton Composite Decorator Facade Flyweight Proxy h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 94. Behavioral Patterns Chain of Responsibility Observer Interpreter State Iterator Strategy Mediator Template Method Memento Visitor h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 95. PoEAA patterns h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 96. other design patterns GRASP Patterns Martin Fowler’s Pattern Repository List h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 97. Domain Driven Design h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 98. Building Blocks Entity Value Object Aggregate Root Patterns Service Ubiquitous Language Repository Bounded Context Factory Continuous Integration Many More... h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 99. Pattern Relationship Map h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 100. refactoring changing form while preserving function (Changing form while preserving function.) h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 101. Resources http://www.refactoring.com h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 102. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 103. Code Smells h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 104. ReSharper h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 105. Persistence changing form while preserving function h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 106. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 107. Persistence Ignorance h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 108. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 109. Repository and Unit of Work Patterns h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 110. Object Relational Mappers NHibernate Entity Framework Etc. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 111. TESTiNG Testing with mocks and stubs. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 112. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 113. Types of Tests h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 114. Types of Tests UnitTests h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 115. Types of Tests UnitTests IntegrationTests h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 116. Types of Tests UnitTests IntegrationTests Functional / UITests h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 117. unit testing h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 118. Good UnitT Are... ests Atomic Fast Self-Contained Repeatable Order-Independent Readable (Clear) Meaningful Unique Easy to Set Up Granular h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 119. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 120. Test-Driven Development h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 121. TDD Development Test-Driven h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 122. uncle bob’s Three Rules of TDD 1. You can write no production code unless it makes a failing test pass. 2. You can write no more test code than is sufficient to fail. 3. You can write no more production code than is necessary to pass the failing test. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 123. Red...Green...Refactor The Heartbeat of TDD RED Write a failing unit test. See it fail. Green Make the test pass. Refactor Clean up implementation based on what you have learned. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 124. .NET Unit Testing Frameworks • NUnit • MSpec (Machine.Specifications) • MSTest h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 125. A Basic Unit Test using NUnit [TestFixture] public class OrderTests { [Test] public void TestCalculateSubTotal() { var order = new Order(); order.AddLineItem("Star Destroyer", 5000.00); order.AddLineItem("Death Star", 10000.00); double subTotal = order.CalculateSubTotal(); Assert.That( subTotal, Is.EqualTo( 15000.00 ) ); } } h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 126. public class Order { public int Id { get; set; } public Customer Customer { get; set; } public DateTime OrderDate { get; set; } public IList< LineItem > LineItems { get; set; } public double CalculateSubTotal() { return LineItems.Select( x => x.Price ).Sum(); } public void AddLineItem( string description, double price ) { LineItems.Add( new LineItem( 1, description, price ) ); } } h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 127. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 128. Arrange, Act, Assert h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 129. AAA Act, Assert Arrange, h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 130. [Test] public void TestCalculateSubTotal() { var order = new Order(); order.AddLineItem("Star Destroyer", 5000.00); order.AddLineItem("Death Star", 10000.00); double subTotal = order.CalculateSubTotal(); Assert.That( subTotal, Is.EqualTo( 15000.00 ) ); } [ Test ] public void TestCalculateSubTotal() { // Arrange. var order = new Order(); order.AddLineItem("Star Destroyer", 5000.00); order.AddLineItem("Death Star", 10000.00); // Act double subTotal = order.CalculateSubTotal(); // Assert. Assert.That( subTotal, Is.EqualTo( 15000.00 ) ); } h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 131. Unit Test with Setup [ TestFixture ] public class OrderTests { Order _order; [ SetUp ] public void SetUp() { // Arrange. _order = new Order(); _order.AddLineItem( "Star Destroyer", 5000.00 ); _order.AddLineItem( "Death Star", 10000.00 ); } [ Test ] public void TestCalculateSubtotal() { // Act. double subTotal = _order.CalculateSubTotal(); // Assert. Assert.That( subTotal, Is.EqualTo( 15000.00 ) ); } } h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 132. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 133. Behavior Driven Development h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 134. BDD Driven Development Behavior h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 135. [ TestFixture ] public class OrderTests { Order _order; [ SetUp ] public void SetUp() { // Arrange. _order = new Order(); _order.AddLineItem( "Star Destroyer", 5000.00 ); _order.AddLineItem( "Death Star", 10000.00 ); } [ Test ] public void TestCalculateSubtotal() { // Act. double subTotal = _order.CalculateSubTotal(); // Assert. Assert.That( subTotal, Is.EqualTo( 15000.00 ) ); } } h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 136. [ TestFixture ] public class When_an_order_has_two_line_items { Order _order; [ SetUp ] public void SetUpContext() { _order = new Order(); _order.AddLineItem( "Star Destroyer", 5000.00 ); _order.AddLineItem( "Death Star", 10000.00 ); } [ Test ] public void Calculating_the_subtotal_should_return_the_sum_of_the_line_item_prices() { Assert.That( _order.CalculateSubTotal(), Is.EqualTo( 15000.00 ) ); } } h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 137. [ TestFixture ] public class When_an_order_has_two_line_items { Order _order; [ SetUp ] Context public void SetUpContext() { _order = new Order(); _order.AddLineItem( "Star Destroyer", 5000.00 ); _order.AddLineItem( "Death Star", 10000.00 ); } [ Test ] public void Calculating_the_subtotal_should_return_the_sum_of_the_line_item_prices() { Assert.That( _order.CalculateSubTotal(), Is.EqualTo( 15000.00 ) ); } } h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 138. [ TestFixture ] public class When_an_order_has_two_line_items { Order _order; [ SetUp ] Context public void SetUpContext() { _order = new Order(); _order.AddLineItem( "Star Destroyer", 5000.00 ); } _order.AddLineItem( "Death Star", 10000.00 ); Specification [ Test ] public void Calculating_the_subtotal_should_return_the_sum_of_the_line_item_prices() { Assert.That( _order.CalculateSubTotal(), Is.EqualTo( 15000.00 ) ); } } h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 139. A BDD-Style Test using Machine.Specifications [ Subject("Order") ] public class When_an_order_has_two_line_items { static Order _order; static double _subTotal; Establish context = () => { _order = new Order(); _order.AddLineItem( "Star Destroyer", 5000.00 ); _order.AddLineItem( "Death Star", 10000.00 ); }; Because of = () => _subTotal = _order.CalculateSubTotal(); It should_calculate_the_subtotal_of_line_items = () => _subTotal.ShouldEqual( 15000.00 ); } h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 140. A BDD-Style Test using Machine.Specifications [ Subject("Order") ] public class When_an_order_has_two_line_items { static Order _order; Context static double _subTotal; Establish context = () => { _order = new Order(); _order.AddLineItem( "Star Destroyer", 5000.00 ); _order.AddLineItem( "Death Star", 10000.00 ); }; Because of = () => _subTotal = _order.CalculateSubTotal(); It should_calculate_the_subtotal_of_line_items = () => _subTotal.ShouldEqual( 15000.00 ); } h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 141. A BDD-Style Test using Machine.Specifications [ Subject("Order") ] public class When_an_order_has_two_line_items { static Order _order; Context static double _subTotal; Establish context = () => { _order = new Order(); _order.AddLineItem( "Star Destroyer", 5000.00 ); _order.AddLineItem( "Death Star", 10000.00 ); }; Because of = () => _subTotal = _order.CalculateSubTotal(); It should_calculate_the_subtotal_of_line_items = () => _subTotal.ShouldEqual( 15000.00 ); } Specification h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 142. [ Subject( "Order" ) ] public class Given_an_order_with_two_line_items { protected static Order _order; Establish context = () => { _order = new Order(); _order.AddLineItem( "Star Destroyer", 5000.00 ); _order.AddLineItem( "Death Star", 10000.00 ); }; } public class When_calculating_the_subtotal : Given_an_order_with_two_line_items { static double _subTotal; Because of = () => _subTotal = _order.CalculateSubTotal(); It should_equal_the_sum_of_the_line_item_prices = () => _subTotal.ShouldEqual( 15000.00 ); } public class When_removing_a_line_item_by_its_description : Given_an_order_with_two_line_items { Because of = () => _order.RemoveLineItem( "Star Destroyer" ); It should_remove_the_line_item_from_the_order = () => _order.LineItems.Any( x => x.Description == "Star Destroyer" ).ShouldBeFalse(); } h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 143. [ Subject( "Order" ) ] public class Given_an_order_with_two_line_items { protected static Order _order; Context Establish context = () => { _order = new Order(); _order.AddLineItem( "Star Destroyer", 5000.00 ); _order.AddLineItem( "Death Star", 10000.00 ); }; } public class When_calculating_the_subtotal : Given_an_order_with_two_line_items { static double _subTotal; Because of = () => _subTotal = _order.CalculateSubTotal(); It should_equal_the_sum_of_the_line_item_prices = () => _subTotal.ShouldEqual( 15000.00 ); } public class When_removing_a_line_item_by_its_description : Given_an_order_with_two_line_items { Because of = () => _order.RemoveLineItem( "Star Destroyer" ); It should_remove_the_line_item_from_the_order = () => _order.LineItems.Any( x => x.Description == "Star Destroyer" ).ShouldBeFalse(); } h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 144. Tests are documentation (specifications) Given an order with two line items: When calculating the subtotal It should be the sum of the line item prices. When removing a line item by its description It should remove the line item from the order. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 145. Tests are documentation (specifications) Context: Given an order with two line items:Specification: When calculating the subtotal It should be the sum of the line item prices.Specification: When removing a line item by its description It should remove the line item from the order. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 146. Tests are documentation (specifications) Given an order with two line items: When calculating the subtotal It should be the sum of the line item prices. When removing a line item by its description It should remove the line item from the order. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 147. Tests are documentation (specifications) Arrange: Given an order with two line items: Act: When calculating the subtotal Assert: It should be the sum of the line item prices. When removing a line item by its description It should remove the line item from the order. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 148. Tests are documentation (specifications) Given an order with two line items: When calculating the subtotal It should be the sum of the line item prices. When removing a line item by its description It should remove the line item from the order. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 149. Tests are documentation (specifications) Arrange: Given an order with two line items: When calculating the subtotal It should be the sum of the line item prices. Act: When removing a line item by its description Assert: It should remove the line item from the order. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 150. More Resources for TDD Bowling Game Kata James Shore “Let’s Play TDD” video series. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 151. Mocking Testing with mocks and stubs. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 152. Rhino Mocks h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 153. State-based vs. Interaction-based Testing h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 154. inversion of control h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 155. inversion of control (IoC) h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 156. Tools (IoC Containers) Structure Map Ninject Autofac h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 157. Code Coverage h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 158. Code Coverage Tools TestDriven.NET dotCover (JetBrains) NCover h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 159. Source control h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 160. Standard Subversion CVS Others h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 161. Standard Subversion CVS Others Distributed Git Mercurial h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 162. continuous integration h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 163. TeamCity h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 164. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 165. Build Monitor h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 166. Agile (Embrace Change) h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 167. Agile embrace change! (Embrace Change) h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 168. the Agile manifesto We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: Individuals & Interactions over Processes & Tools Working Software over Comprehensive Documentation Customer Collaboration over Contract Negotiation Responding to Change over Following a Plan That is, while there is value in the items on the right, we value the items on the left more. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 169. Many Methodologies Extreme Programming (XP) Scrum h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 170. Extreme Programming (xp) Values: Communication Feedback Simplicity Practices: Courage Stand Up Meeting Respect Collective Code Ownership Pair Programming Planning Game Test-Driven Development (TDD) Whole Team Continuous Integration (CI) Merciless Refactoring Small Releases Coding Standards Simple Design System Metaphor Sustainable Pace h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 171. Scrum 3 Roles: Product Owner ScrumMaster Team 4 Ceremonies: Sprint Planning Daily Scrum Sprint Reviews Sprint Retrospectives 3 Artifacts: Product Backlog Sprint Backlog Burndown h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 172. Agile Practices A walk through the process (A walk through the process) h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 173. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 174. Short Iterations & Feedback Loops Frequency promotes Efficiency h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 175. User Stories h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 176. Backlog h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 177. Planning Game h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 178. Sustainable Pace / Velocity h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 179. Sustainable Pace / Velocity Looking at yesterday’s weather h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 180. Self-OrganizingTeam h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 181. Collective Code Ownership h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 182. Collective Code Ownership “Mine Mine” h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 183. Pair Programming h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 184. Merciless Refactoring h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 185. Stand Up Meeting h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 186. Information Radiators Burndown Chart Task Board Build Monitors h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 187. Sprint Demo Demonstration is better than Discussion h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 188. Feedback Firing tracer bullets h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 189. Retrospectives h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 190. Automation Automate everything you can! h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 191. Don’t be discouraged! h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.
  • 192. Don’t be discouraged! Everyone has to start somewhere. h t t p : / / c h r i s e d wa r d s . d r e a m h o s t e r s . c o mFollow @cedwards or #Padawan2Jedi for tweet stream of resources during the presentation.