Slide 1

Slide 1 text

Good Software Development Practices An overview of Industry Best Practices

Slide 2

Slide 2 text

About Me Email: Chris.Ayers@NewSignature.com Twitter: @Chris_L_Ayers LinkedIn: /in/chris-l-ayers/ Blog: https://chrislayers.com/

Slide 3

Slide 3 text

Topics • Why? • Software Architecture • Software Development • Testing • Deployment • Tools

Slide 4

Slide 4 text

Why? • Maintainability • Dependability • Efficiency • Scalability • Usability

Slide 5

Slide 5 text

Why? “How does a project get to be a year late?... One day at a time. ” -- Fred Brooks Brooks Law: "Adding manpower to a late software project makes it later!“ “No matter what the problem is, it's always a people problem.” --Gerald M. Weinberg

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

Design Patterns • Observer Pattern • Strategy Pattern • Adapter Pattern • Builder Pattern • Singleton Pattern • Factory Pattern • Decorator Pattern

Slide 8

Slide 8 text

Architectures • Layered (n-tier) architecture • Event-driven architecture • Microkernel architecture • Microservices architecture • Command and Query Responsibility Segregation • Event Sourcing

Slide 9

Slide 9 text

Inversion of Control & Dependency Injection • Clarity • Modularity • Testability • Different Implementations

Slide 10

Slide 10 text

Cohesion • Functional • Sequential • Communicational • Temporal • Logical • Coincidental

Slide 11

Slide 11 text

Coupling • Content • Common (global) • External • Control • Stamp • Data • Uncoupled

Slide 12

Slide 12 text

Software Development “ If debugging is the process of removing software bugs, then programming must be the process of putting them in. ” - Edsger Dijkstra

Slide 13

Slide 13 text

Source Control • Version Control System - (SVN/TFS/GIT) • Branching / Merging Standards • Feature Flags • Commit Message Standards • Check-in Policy • Continuous Integration

Slide 14

Slide 14 text

Branching Strategies Branch per Release Branch per Component

Slide 15

Slide 15 text

Coding

Slide 16

Slide 16 text

Coding Standards • Spaces vs Tabs • EditorConfig • Naming Conventions • New Lines / Braces / Commas • Indenting • Comments • Magic Numbers

Slide 17

Slide 17 text

Code Reviews Does the code build? Does it run without errors? Does it follow coding standards? Does it follow naming standards?

Slide 18

Slide 18 text

Testing • Frameworks • Mocks and Fakes • Unit Testing • Integration Testing • Regression Testing • Automated UI Testing • Integration with Source Control

Slide 19

Slide 19 text

Continuous Integration • Automated Builds • Parameterized builds • Automated Deploys • Repeatable deployments

Slide 20

Slide 20 text

Monitoring • Application Insights • Splunk • New Relic • Retrace

Slide 21

Slide 21 text

Tools • Visual Studio / Eclipse / IdeaJ / Sublime • Resharper • Linqpad / Notepad • Command Line – NodeJs / Grunt / Gulp • Browsers – Modern.IE (Microsoft VMs) • Developer Tools / Page Speed

Slide 22

Slide 22 text

Continuing Education • Blogs • RSS Feeds • Meetups • Books • Articles • Training Sessions • Code Camps • Coding at home

Slide 23

Slide 23 text

No content