Based on years of consulting, and working with some of the largest (and smallest) software companies in the world.. these are the 10 practices that if you started doing today, would drastically improve the quality and delivery of your software! Also, be sure to hang around afterwards in the Open Spaces area.. Caleb will be around to discuss any of the areas from his talk in more detail. It’s going to be great time!
Topics hit on: Object Oriented Principals, SOLID Coding, Security Concerns, Software Patterns, Automated Testing, Source Control - Branching and Merging Strategies, Continuous Integration, Agile | Scrum | XP | Lean, Team Dynamics, Continually Learning
10 Reasons Your Software Sucks 2014 - Tax Day Edition!
1.
2.
3.
4.
5. Development
Experience
Object Orientation
SOLID + Patterns +
Simple Design
Secure Coding
Infrastructure
Automated Tests
Source Control
Automated Builds
Team Process
Agile, Lean, XP
Team Dynamics
Continuous Learning
Building teams that engineer better software
Development ∙ Infrastructure ∙ Team Process
28. Development
Object Orientation
It’s amazing how many people write procedural code in an OO environment
OO
Procedural
Functional
Use Right Tool for the Right Job
It’s amazing how many people write procedural code in an OO environment
Encapsulation
Inheritance
Polymorphism
29.
30.
31.
32.
33.
34.
35.
36.
37.
38. “The single greatest thing that you can do to
make your code more testable and healthy is to
start taking a Dependency Injection approach to
writing software”
- Real World .NET, C# and Silverlight
Wrox Press 2012
Caleb Jenkins
39. Note:
Dependency Injection
will turn you in to a complete
coding Ninja, however the full
scope of DI with any of the
many DI frameworks is
beyond the scope of this talk
50. “Any intelligent fool can make things
Bigger, more complex and more
violent It takes a touch of Genius –
and a lot of courage – to move in the
opposite direction”
– Albert Einstein
61. Defense in Depth (MS03-007)
Windows Server 2003 Unaffected
The underlying DLL
(NTDLL.DLL) not vulnerable Code made more conservative during Security Push
Even if it was running IIS 6.0 doesn’t have WebDAV enabled by default
Even if it did have
WebDAV enabled
Maximum URL length in IIS 6.0 is 16kb by default
(>64kb needed)
Even if it was vulnerable IIS 6.0 not running by default on
Windows Server 2003
Even if it there was an
exploitable buffer overrun
Would have occurred in w3wp.exe which is now
running as ‘network service’
Even if the buffer was
large enough
Process halts rather than executes malicious code,
due to buffer-overrun detection code (-GS)
63. “
“Multiple redundant safety systems. Nuclear
plants are designed according to a "defense in
depth" philosophy that requires redundant,
diverse, reliable safety systems. Two or more
safety systems perform key functions
independently, such that, if one fails, there is
always another to back it up, providing
continuous protection.
- Nuclear Energy Institute
84. “They have a great brand,
an awesome business
model… but their technical
debt is killing them”
- Carl Sparks
CEO Travelocity
talking about another company
85. “Automated unit tests make up one of the core
staples in reducing technical debt, and
improving a team’s overall code quality”
- Real World .NET, C# and Silverlight
Wrox Press 2012
Caleb Jenkins
86.
87. I test
my
app
I test
units
of
work
in my
app
I run
automated
unit
tests
I test
first
I
write
executable
specs
to
test
my
app
It compiled
didn’t it?
DI + Mock
are my best
friends
CI FTW!
Red,
Green,
Refactor
Rinse +
Repeat!
given <>
<> when
then<>
109. Agile, Lean, XP
Scrum Kanban
Push Pull
Learn by doing
Daily Stand Ups
Size Units of
WorkProduct
Backlog
Sprint
Backlog
110.
111. WAIT! What about …
Task boards, Information Radiators
Reducing Work In Progress, Time Boxing
Self Organization, Pull vs Push,
Empowerment, Continuous Learning,
Planning Poker, Story Sizing, Velocity,
Team Swarming… etc, etc, etc..
126. Development Infrastructure Team Process
1 Experience
2
Object Orientation
3 SOLID + Patterns+ SimpleDesign
4 Secure Coding
Building teams that engineer better software
5
Automated Tests
6
Source Control
7 Automated Builds
8 Agile, Lean, XP
9
Team Dynamics
Continuous Learning
10