Your SlideShare is downloading. ×
0
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
Padawan to Jedi                         A Developer Jump-Start         A   U   S   T   I   N    -   C   O   D   E   -   C ...
About Me      Chris Edwards      Architect at BancVue      Ltd.        Email: ChrisEdwards357@gmail.com        Blog: http:...
About Me      Chris Edwards      Architect at BancVue      Ltd.        Email: ChrisEdwards357@gmail.com        Blog: http:...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
What makes a great developer?                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or ...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
Passion                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for twee...
Continuous                                              Learning                              http://chrisedwards.dreamhos...
Read                                                     Books                                             Continuous     ...
Read                                                     Books                                             Continuous     ...
Read                                                     Books                                             Continuous     ...
Read                                                     Books                                             Continuous     ...
Follow           Others                                                     Read                                          ...
Follow           Others                                                     Read                                          ...
Fiesta                                                                            ! de Camp                               ...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
Humility                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for twe...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
Communication Skills                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2...
Basics  Beginning with the basics...                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards...
Basics  Beginning with the basics...                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards...
Basic oo concepts                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jed...
Basic oo concepts                           (Object Oriented)                              http://chrisedwards.dreamhoster...
Encapsulatio                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for...
Encapsulatio                            Information Hiding                              http://chrisedwards.dreamhosters.c...
Polymorphis                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for ...
Polymorphis                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for ...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
Low Coupling / High Cohesion                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #...
Communicating via uML                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan...
Class Diagram                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi fo...
Sequence Diagram                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi...
Activity Diagram                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi...
Design                                   The theory and Practice of Design...                              http://chrisedw...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
What makes great software...                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
Functionality (It                                    works!)                              http://chrisedwards.dreamhosters...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
Maintainabilit                                                  y                              http://chrisedwards.dreamho...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
Redundanc                                                       y                              http://chrisedwards.dreamho...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
Scalability                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for ...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
Performance                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for ...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
Usability                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tw...
Design Principles                          The theory and Practice of Design...                              http://chrise...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
Keep                                                                It                                                    ...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
You     A ren’t      G on na       N eed        It                              http://chrisedwards.dreamhosters.comFollow...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
Last Responsible                         Moment                              http://chrisedwards.dreamhosters.comFollow @C...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
Avoid Premature                       Optimization                              http://chrisedwards.dreamhosters.comFollow...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
Don’t                              Repeat                              Yourself                              http://chrise...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
Separation of                                        Concerns                              http://chrisedwards.dreamhoster...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
Composition                                       over                                    Inheritance                     ...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
Explicit                                         over                                        Implicit                     ...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
Fail Fast                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tw...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
Law of              Demeter                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #P...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
No Broken Windows                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jed...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
The Boy Scout Rule                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Je...
The Solid Principles        Principles for SOLID code                                    http://chrisedwards.dreamhosters....
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
SRP Responsibility   The Single    Principle                              http://chrisedwards.dreamhosters.comFollow @Chri...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
ocp Open-Closed    The          Principle                              http://chrisedwards.dreamhosters.comFollow @ChrisEd...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
lsp Liskov Substitution    The      Principle                              http://chrisedwards.dreamhosters.comFollow @Chr...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
ispInterface Segregation    The     Principle                              http://chrisedwards.dreamhosters.comFollow @Chr...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
dipDependency Inversion   The     Principle                              http://chrisedwards.dreamhosters.comFollow @Chris...
SOLID Motivational Posters                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Pa...
Design Patterns                    Testing with mocks and stubs.                              http://chrisedwards.dreamhos...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
First, a word of                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi...
gang of four patterns                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan...
Creational Patterns          Abstract          Factory                            Structural        Builder               ...
Behavioral           Chain of                                  Memento           Responsibility                           ...
PoEAA patterns                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi f...
other design patterns          GRASP          Martin Fowler’s Pattern                              http://chrisedwards.dre...
Domain Driven Design                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2...
Building          Entity          Value Object          Aggregate Root                         Patterns          Service  ...
Pattern Relationship                              Map                              http://chrisedwards.dreamhosters.comFol...
refactoring               changing form while preserving function                      (Changing form while preserving fun...
Resources                                            http://www.refactoring.com                              http://chrise...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
Code Smells                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for ...
ReSharper                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tw...
Persistence                changing form while preserving function                              http://chrisedwards.dreamh...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
Persistence Ignorance                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
Repository and                                Unit of Work Patterns                              http://chrisedwards.dream...
Object Relational Mappers           NHibernate        Entity Framework                Etc.                              ht...
TESTiNG                                  Testing with mocks and stubs.                              http://chrisedwards.dr...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
Types of Tests                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi f...
Types of Tests            Unit Tests                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards...
Types of Tests            Unit Tests                       Integration Tests                              http://chrisedwa...
Types of Tests            Unit Tests                       Integration Tests                                            Fu...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
Agile Testing quadrants                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padaw...
Agile Testing quadrants                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padaw...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
Test Automation Pyramid                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padaw...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
unit testing                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for...
Good Unit Tests Are...               Atomic                                    Easy to Set Up               Self-Contained...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
Test-Driven Development                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padaw...
TDD        Test-Driven Development                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards35...
uncle bob’s                             Three Rules of         1. You can write no production code            unless it ma...
Red...Green...Refactor                                   The Heartbeat of                   RED Write a failing unit test....
.NET Unit Testing           •NUnit           •MSpec (Machine.Specifications)           •MSTest                            ...
A Basic Unit Test using               [TestFixture]               public class OrderTests               {                 ...
public class Order               {                   public int Id { get; set; }                   public Customer Custome...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
AAA          Arrange, Act,                   Assert                              http://chrisedwards.dreamhosters.comFollo...
[Test]               public void TestCalculateSubTotal()               {                   var order = new Order();       ...
[Test]               public void TestCalculateSubTotal()               {                   var order = new Order();       ...
Unit Test with                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi f...
Unit Test with                [ TestFixture ]                public class OrderTests                {                     ...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
BDD Driven          Behavior                 Development                              http://chrisedwards.dreamhosters.com...
[ TestFixture ]              public class OrderTests              {                   Order _order;                  [ Set...
[ TestFixture ]        public class When_an_order_has_two_line_items        {             Order _order;            [ SetUp...
[ TestFixture ]        public class When_an_order_has_two_line_items        {             Order _order;            [ SetUp...
[ TestFixture ]        public class When_an_order_has_two_line_items        {             Order _order;            [ SetUp...
A BDD-Style Test using                [ Subject("Order") ]                public class When_an_order_has_two_line_items   ...
A BDD-Style Test using                [ Subject("Order") ]                public class When_an_order_has_two_line_items   ...
A BDD-Style Test using                [ Subject("Order") ]                public class When_an_order_has_two_line_items   ...
[ Subject( "Order" ) ]         public class Given_an_order_with_two_line_items         {             protected static Orde...
[ Subject( "Order" ) ]         public class Given_an_order_with_two_line_items         {             protected static Orde...
Tests are documentation                  Given an order with two line items:                     When calculating the subt...
Tests are documentationContext: Given an order with two line items:Specificati When calculating the subtotal        on: It...
Tests are documentation                  Given an order with two line items:                     When calculating the subt...
Tests are documentationArrange Given an order with two line items:       :            When calculating the subtotal       ...
Acceptance Test Driven                Development (ATDD)               Specification By Example                           ...
Acceptance Test Driven                Development (ATDD)               Specification By Example                           ...
Acceptance Test Driven                Development (ATDD)               Specification By Example                           ...
More Resources for TDD          Bowling Game Kata          James Shore “Let’s Play TDD” video          series.            ...
Mocking                             Testing with mocks and stubs.                              http://chrisedwards.dreamho...
Rhino Mocks                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for ...
State-based vs. Interaction-                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #...
inversion of control                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2...
inversion of control                                       (IoC)                              http://chrisedwards.dreamhos...
Tools (IoC              Structure Map              Ninject              Autofac                              http://chrise...
Code                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet s...
Code Coverage Tools                                                     TestDriven.NET                                    ...
Source control                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi f...
Standard           Subversion           CVS           Others                              http://chrisedwards.dreamhosters...
Standard           Subversion           CVS           Others                 Distributed                      Git         ...
continuous       integration                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #...
TeamCity                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for twe...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
Build Monitor                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi fo...
Continuous                                        Deployment                              http://chrisedwards.dreamhosters...
Agile                                          (Embrace Change)                              http://chrisedwards.dreamhost...
Agile    embrace change!                                          (Embrace Change)                              http://chr...
the Agile manifesto                   We are uncovering better ways of                  developing software by doing it an...
Many Methodologies               Extreme Programming               (XP)               Scrum                              h...
Extreme Programming                                               (xp)                                        Values:     ...
Scrum                        3 Roles:                                                      Product Owner                  ...
Agile Practices             A walk through the process                                              (A walk through the pr...
http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
Short Iterations &                                Feedback Loops                          Frequency promotes              ...
User Stories                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for...
Backlog                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for twee...
Planning Game                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi fo...
Sustainable Pace /                  Velocity                              http://chrisedwards.dreamhosters.comFollow @Chri...
Sustainable Pace /                  Velocity                        Looking at yesterday’s                              we...
Self-Organizing                            Team                              http://chrisedwards.dreamhosters.comFollow @C...
Collective Code                  Ownership                              http://chrisedwards.dreamhosters.comFollow @ChrisE...
Collective Code                  Ownership                                    “Mine Mine”                              htt...
Pair                                  Programming                              http://chrisedwards.dreamhosters.comFollow ...
Merciless                          Refactoring                              http://chrisedwards.dreamhosters.comFollow @Ch...
Stand Up Meeting                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi...
Information Radiators       Burndown Chart                                     Task Board      Build Monitors             ...
Sprint Demo                  Demonstration is better than                         Discussion                              ...
Feedback                           Firing tracer bullets                              http://chrisedwards.dreamhosters.com...
Retrospectives                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi f...
Automation                 Automate everything you can!                              http://chrisedwards.dreamhosters.comF...
Don’t be discouraged!                              http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan...
Don’t be discouraged!              Everyone has to start somewhere.                              http://chrisedwards.dream...
About Me      Chris Edwards      Architect at BancVue      Ltd.        Email: ChrisEdwards357@gmail.com        Blog: http:...
About Me      Chris Edwards      Architect at BancVue      Ltd.        Email: ChrisEdwards357@gmail.com        Blog: http:...
Upcoming SlideShare
Loading in...5
×

Padawan 2 Jedi - An Overview of Modern Development Practices (Austin Code Camp 2012)

1,676

Published on

This is the presentation I gave at Austin Code Camp 2012 on June 9, 2012. Abstract: "Are you wanting to become a better software developer but don't know where to start? Do the terms TDD, BDD, CI, SOLID, Agile, etc. seem foreign to you? This 2 hour presentation will cover many of the software development principles, patterns & practices that every developer should know. The goal is to give you a broad overview of how modern developers work and to provide resources to help any aspiring developer get on the fast-track to becoming better at their craft.

Published in: Technology, Spiritual
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,676
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • [twitter]Starting my presentation "Padawan to Jedi". Follow @ChrisEdwards357 or #Padawan2Jedi for tweet stream. #AustinCodeCamp[/twitter]\n
  • [twitter]Starting my presentation "Padawan to Jedi". Follow @ChrisEdwards357 or #Padawan2Jedi for tweet stream. #AustinCodeCamp[/twitter]\n
  • [twitter]Starting my presentation "Padawan to Jedi". Follow @ChrisEdwards357 or #Padawan2Jedi for tweet stream. #AustinCodeCamp[/twitter]\n
  • [twitter]Starting my presentation "Padawan to Jedi". Follow @ChrisEdwards357 or #Padawan2Jedi for tweet stream. #AustinCodeCamp[/twitter]\n
  • [twitter]Starting my presentation "Padawan to Jedi". Follow @ChrisEdwards357 or #Padawan2Jedi for tweet stream. #AustinCodeCamp[/twitter]\n
  • [twitter]Starting my presentation "Padawan to Jedi". Follow @ChrisEdwards357 or #Padawan2Jedi for tweet stream. #AustinCodeCamp[/twitter]\n
  • [twitter]Starting my presentation "Padawan to Jedi". Follow @ChrisEdwards357 or #Padawan2Jedi for tweet stream. #AustinCodeCamp[/twitter]\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
  • Notification Service Example (Email)\nEncapsulation\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
  • Notification Service Example\nInheritance\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
  • Notification Service Example\nInheritance\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
  • Notification Service Example\nInheritance\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]The Agile Testing Quadrants define the different kinds of automated tests and when to use them: http://bit.ly/uLXR7h[/twitter]\n
  • [twitter]The Agile Testing Quadrants define the different kinds of automated tests and when to use them: http://bit.ly/uLXR7h[/twitter]\n
  • [twitter]The Test Automation Pyramid helps show what type of tests to invest your time in: http://bit.ly/KnDndM [/twitter]\n
  • [twitter]The Test Automation Pyramid helps show what type of tests to invest your time in: http://bit.ly/KnDndM [/twitter]\n
  • [twitter]The Test Automation Pyramid helps show what type of tests to invest your time in: http://bit.ly/KnDndM [/twitter]\n
  • [twitter]Agile Testing by Lisa Crispin and Janet Gregory, a must read book for agile developers: http://amzn.to/KnE72I [/twitter]\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
  • [twitter]SpecFlow, a Given-Then-When testing framework for .NET (cucumber for .NET) http://bit.ly/2QgFZ9 [/twitter]\n
  • [twitter]SpecFlow, a Given-Then-When testing framework for .NET (cucumber for .NET) http://bit.ly/2QgFZ9 [/twitter]\n
  • [twitter]SpecFlow, a Given-Then-When testing framework for .NET (cucumber for .NET) http://bit.ly/2QgFZ9 [/twitter]\n
  • [twitter]SpecFlow, a Given-Then-When testing framework for .NET (cucumber for .NET) http://bit.ly/2QgFZ9 [/twitter]\n
  • [twitter]SpecFlow, a Given-Then-When testing framework for .NET (cucumber for .NET) http://bit.ly/2QgFZ9 [/twitter]\n
  • [twitter]SpecFlow, a Given-Then-When testing framework for .NET (cucumber for .NET) http://bit.ly/2QgFZ9 [/twitter]\n
  • [twitter]SpecFlow, a Given-Then-When testing framework for .NET (cucumber for .NET) http://bit.ly/2QgFZ9 [/twitter]\n
  • [twitter]SpecFlow, a Given-Then-When testing framework for .NET (cucumber for .NET) http://bit.ly/2QgFZ9 [/twitter]\n
  • [twitter]SpecFlow, a Given-Then-When testing framework for .NET (cucumber for .NET) http://bit.ly/2QgFZ9 [/twitter]\n
  • [twitter]SpecFlow, a Given-Then-When testing framework for .NET (cucumber for .NET) http://bit.ly/2QgFZ9 [/twitter]\n
  • [twitter]SpecFlow, a Given-Then-When testing framework for .NET (cucumber for .NET) http://bit.ly/2QgFZ9 [/twitter]\n
  • [twitter]SpecFlow, a Given-Then-When testing framework for .NET (cucumber for .NET) http://bit.ly/2QgFZ9 [/twitter]\n
  • [twitter]SpecFlow, a Given-Then-When testing framework for .NET (cucumber for .NET) http://bit.ly/2QgFZ9 [/twitter]\n
  • [twitter]SpecFlow, a Given-Then-When testing framework for .NET (cucumber for .NET) http://bit.ly/2QgFZ9 [/twitter]\n
  • [twitter]SpecFlow, a Given-Then-When testing framework for .NET (cucumber for .NET) http://bit.ly/2QgFZ9 [/twitter]\n
  • [twitter]Two great books on BDD/ATDD testing: The Cucumber Book http://bit.ly/niLRws Specification By Example: http://bit.ly/amqXZG [/twitter]\n
  • [twitter]Two great books on BDD/ATDD testing: The Cucumber Book http://bit.ly/niLRws Specification By Example: http://bit.ly/amqXZG [/twitter]\n
  • [twitter]Two great books on BDD/ATDD testing: The Cucumber Book http://bit.ly/niLRws Specification By Example: http://bit.ly/amqXZG [/twitter]\n
  • [twitter]Two great books on BDD/ATDD testing: The Cucumber Book http://bit.ly/niLRws Specification By Example: http://bit.ly/amqXZG [/twitter]\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
  • [twitter]NCrunch: Continuous testing in Visual Studio. The coolest tool I use (next to ReSharper) http://bit.ly/jUlUz6 [/twitter]\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
  • \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
  • \n
  • Transcript of "Padawan 2 Jedi - An Overview of Modern Development Practices (Austin Code Camp 2012)"

    1. 1. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    2. 2. Padawan to Jedi A Developer Jump-Start A U S T I N - C O D E - C A M P - 2 0 1 1 Chris Edwards http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    3. 3. About Me Chris Edwards Architect at BancVue Ltd. Email: ChrisEdwards357@gmail.com Blog: http:// chrisedwards.dreamhosters.com Twitter: @ChrisEdwards357 Github: http://github.com/ chrisedwards http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    4. 4. About Me Chris Edwards Architect at BancVue Ltd. Email: ChrisEdwards357@gmail.com Blog: http:// chrisedwards.dreamhosters.com Twitter: @ChrisEdwards357 Github: http://github.com/ chrisedwards We are hiring! http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    5. 5. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    6. 6. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    7. 7. What makes a great developer? http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    8. 8. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    9. 9. Passion http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    10. 10. Continuous Learning http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    11. 11. Read Books Continuous Learning http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    12. 12. Read Books Continuous Learning http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    13. 13. Read Books Continuous Learning ad Re s Blog http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    14. 14. Read Books Continuous Learning ad Re s Blog http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    15. 15. Follow Others Read Books Continuous Learning ad Re s Blog http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    16. 16. Follow Others Read Books Continuous Learning ad Re s Blog http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    17. 17. Fiesta ! de Camp Co A ustin Attend A ustin User .NET Grou Follow p Events Others Read Books Continuous Learning ad Re s Blog http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    18. 18. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    19. 19. Humility http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    20. 20. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    21. 21. Communication Skills http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    22. 22. Basics Beginning with the basics... http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    23. 23. Basics Beginning with the basics... http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    24. 24. Basic oo concepts http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    25. 25. Basic oo concepts (Object Oriented) http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    26. 26. Encapsulatio http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    27. 27. Encapsulatio Information Hiding http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    28. 28. Polymorphis http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    29. 29. Polymorphis http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    30. 30. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    31. 31. Low Coupling / High Cohesion http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    32. 32. Communicating via uML http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    33. 33. Class Diagram http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    34. 34. Sequence Diagram http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    35. 35. Activity Diagram http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    36. 36. Design The theory and Practice of Design... http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    37. 37. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    38. 38. What makes great software... http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    39. 39. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    40. 40. Functionality (It works!) http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    41. 41. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    42. 42. Maintainabilit y http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    43. 43. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    44. 44. Redundanc y http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    45. 45. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    46. 46. Scalability http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    47. 47. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    48. 48. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    49. 49. Performance http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    50. 50. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    51. 51. Usability http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    52. 52. Design Principles The theory and Practice of Design... http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    53. 53. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    54. 54. Keep It Super Simple http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    55. 55. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    56. 56. You A ren’t G on na N eed It http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    57. 57. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    58. 58. Last Responsible Moment http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    59. 59. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    60. 60. Avoid Premature Optimization http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    61. 61. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    62. 62. Don’t Repeat Yourself http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    63. 63. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    64. 64. Separation of Concerns http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    65. 65. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    66. 66. Composition over Inheritance http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    67. 67. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    68. 68. Explicit over Implicit http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    69. 69. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    70. 70. Fail Fast http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    71. 71. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    72. 72. Law of Demeter http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    73. 73. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    74. 74. No Broken Windows http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    75. 75. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    76. 76. The Boy Scout Rule http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    77. 77. The Solid Principles Principles for SOLID code http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    78. 78. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    79. 79. SRP Responsibility The Single Principle http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    80. 80. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    81. 81. ocp Open-Closed The Principle http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    82. 82. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    83. 83. lsp Liskov Substitution The Principle http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    84. 84. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    85. 85. ispInterface Segregation The Principle http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    86. 86. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    87. 87. dipDependency Inversion The Principle http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    88. 88. SOLID Motivational Posters http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    89. 89. Design Patterns Testing with mocks and stubs. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    90. 90. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    91. 91. First, a word of http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    92. 92. gang of four patterns http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    93. 93. Creational Patterns Abstract Factory Structural Builder Adapter Factory Method Bridge Prototype Composite Singleton Decorator Facade Flyweight Proxy http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    94. 94. Behavioral Chain of Memento Responsibility Observer Interpreter State Iterator Strategy Mediator Template Method http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    95. 95. PoEAA patterns http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    96. 96. other design patterns GRASP Martin Fowler’s Pattern http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    97. 97. Domain Driven Design http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    98. 98. Building Entity Value Object Aggregate Root Patterns Service Ubiquitous Language Repository Bounded Context Factory Continuous Integration Many More... http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    99. 99. Pattern Relationship Map http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    100. 100. refactoring changing form while preserving function (Changing form while preserving function.) http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    101. 101. Resources http://www.refactoring.com http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    102. 102. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    103. 103. Code Smells http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    104. 104. ReSharper http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    105. 105. Persistence changing form while preserving function http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    106. 106. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    107. 107. Persistence Ignorance http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    108. 108. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    109. 109. Repository and Unit of Work Patterns http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    110. 110. Object Relational Mappers NHibernate Entity Framework Etc. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    111. 111. TESTiNG Testing with mocks and stubs. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    112. 112. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    113. 113. Types of Tests http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    114. 114. Types of Tests Unit Tests http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    115. 115. Types of Tests Unit Tests Integration Tests http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    116. 116. Types of Tests Unit Tests Integration Tests Functional / UI Tests http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    117. 117. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    118. 118. Agile Testing quadrants http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    119. 119. Agile Testing quadrants http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    120. 120. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    121. 121. Test Automation Pyramid http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    122. 122. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    123. 123. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    124. 124. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    125. 125. unit testing http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    126. 126. Good Unit Tests Are... Atomic Easy to Set Up Self-Contained Fast Order- Repeatable Independent Readable (Clear) Meaningful Unique http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    127. 127. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    128. 128. Test-Driven Development http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    129. 129. TDD Test-Driven Development http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    130. 130. uncle bob’s Three Rules of 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 http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    131. 131. Red...Green...Refactor The Heartbeat of RED Write a failing unit test. See Green it fail. the test pass. Make Refactor Clean up implementation based on what you have http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    132. 132. .NET Unit Testing •NUnit •MSpec (Machine.Specifications) •MSTest http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    133. 133. A Basic Unit Test using [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 ) ); } } http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    134. 134. 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 ) ); } } http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    135. 135. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    136. 136. AAA Arrange, Act, Assert http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    137. 137. [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 ) ); } http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    138. 138. [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 ) ); } http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    139. 139. Unit Test with http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    140. 140. Unit Test with [ 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 ) ); } } http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    141. 141. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    142. 142. BDD Driven Behavior Development http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    143. 143. [ 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 ) ); } } http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    144. 144. [ 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 ) ); } } http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    145. 145. [ 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 ) ); } } http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    146. 146. [ 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 ) ); } } http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    147. 147. A BDD-Style Test using [ 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 ); } http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    148. 148. A BDD-Style Test using [ 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 ); } http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    149. 149. A BDD-Style Test using [ 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 ); } http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    150. 150. [ 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(); } http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    151. 151. [ 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(); } http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    152. 152. Tests are documentation 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 http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    153. 153. Tests are documentationContext: Given an order with two line items:Specificati When calculating the subtotal on: It should be the sum of the line item prices.Specificati on: When removing a line item by its description http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    154. 154. Tests are documentation 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 http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    155. 155. Tests are documentationArrange Given an order with two line items: : When calculating the subtotal It should be the sum of the line item prices. Act: Assert: When removing a line item by its description http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    156. 156. Acceptance Test Driven Development (ATDD) Specification By Example http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    157. 157. Acceptance Test Driven Development (ATDD) Specification By Example http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    158. 158. Acceptance Test Driven Development (ATDD) Specification By Example http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    159. 159. More Resources for TDD Bowling Game Kata James Shore “Let’s Play TDD” video series. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    160. 160. Mocking Testing with mocks and stubs. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    161. 161. Rhino Mocks http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    162. 162. State-based vs. Interaction- http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    163. 163. inversion of control http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    164. 164. inversion of control (IoC) http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    165. 165. Tools (IoC Structure Map Ninject Autofac http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    166. 166. Code http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    167. 167. Code Coverage Tools TestDriven.NET dotCover (JetBrains) NCover NCrunch http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    168. 168. Source control http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    169. 169. Standard Subversion CVS Others http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    170. 170. Standard Subversion CVS Others Distributed Git Mercurial http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    171. 171. continuous integration http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    172. 172. TeamCity http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    173. 173. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    174. 174. Build Monitor http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    175. 175. Continuous Deployment http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    176. 176. Agile (Embrace Change) http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    177. 177. Agile embrace change! (Embrace Change) http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    178. 178. 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 & over Processes & Tools Interactions Comprehensive Working Software over Customer Documentation over Contract Negotiation CollaborationResponding 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. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    179. 179. Many Methodologies Extreme Programming (XP) Scrum http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    180. 180. Extreme Programming (xp) Values: Communicati on Feedback Practices: Simplicity Stand Up Meeting Courage 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 http://chrisedwards.dreamhosters.com Sustainable PaceFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    181. 181. Scrum 3 Roles: Product Owner ScrumMaster Team 4 Ceremonies: Sprint Planning Daily Scrum Sprint Reviews Sprint Retrospectives 3 Artifacts: Product Backlog Sprint Backlog Burndown http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    182. 182. Agile Practices A walk through the process (A walk through the process) http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    183. 183. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    184. 184. Short Iterations & Feedback Loops Frequency promotes Efficiency http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    185. 185. User Stories http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    186. 186. Backlog http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    187. 187. Planning Game http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    188. 188. Sustainable Pace / Velocity http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    189. 189. Sustainable Pace / Velocity Looking at yesterday’s weather http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    190. 190. Self-Organizing Team http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    191. 191. Collective Code Ownership http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    192. 192. Collective Code Ownership “Mine Mine” http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    193. 193. Pair Programming http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    194. 194. Merciless Refactoring http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    195. 195. Stand Up Meeting http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    196. 196. Information Radiators Burndown Chart Task Board Build Monitors http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    197. 197. Sprint Demo Demonstration is better than Discussion http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    198. 198. Feedback Firing tracer bullets http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    199. 199. Retrospectives http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    200. 200. Automation Automate everything you can! http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    201. 201. Don’t be discouraged! http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    202. 202. Don’t be discouraged! Everyone has to start somewhere. http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    203. 203. About Me Chris Edwards Architect at BancVue Ltd. Email: ChrisEdwards357@gmail.com Blog: http:// chrisedwards.dreamhosters.com http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    204. 204. About Me Chris Edwards Architect at BancVue Ltd. Email: ChrisEdwards357@gmail.com Blog: http:// chrisedwards.dreamhosters.com We are hiring! http://chrisedwards.dreamhosters.comFollow @ChrisEdwards357 or #Padawan2Jedi for tweet stream of resources
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×