The 10 Habits of Highly Effective Developers<br />Dennis Doomen | Principal Consultant | Aviva Solutions<br />
Dennis Doomen<br />About Me<br /><ul><li>14 years IT experience
C++ originsbut C# since 2001
Specialities
.NET Architecture
Silverlight
Scrum/XP
ALM
Occasional Speaker
Public initiatives
SilverlightCookbook
C# CodingGuidelines
FluentAssertions
Internet
www.dennisdoomen.net
DZone MVB
@ddoomen</li></li></ul><li>Communication Challenges<br />Traceability<br />Bridging IT and business<br />Enforcingconsensu...
Ubiquitous Language<br />1 concept = 1 name<br />Verbs & nouns<br />Refactor!<br />Native language<br />No ambiguity<br />...
RequirementsChallenges<br />Scoping<br />Estimability<br />Traceability<br />Purpose<br />Whichstakeholders?<br />Document...
User Stories<br />Product Backlog<br />Storyotypes<br />Placeholder<br />Project value<br />Estimable<br />Negotiable<br /...
MaintabilityChallenges<br />Lot of coupling<br />Inconsistent naming<br />Bad cohesion<br />Incorrect usageof .NET<br />In...
Coding Standards<br />Definesubset<br />Ghostdoc<br />ReSharper or<br />CodeRush<br />Static Code Analysis<br />Distribute...
QualityChallenges<br />Architecturalinconsistencies<br />Design skills<br />Communication skills<br />Bad hair days<br />M...
Upcoming SlideShare
Loading in...5
×

The 10 habits of highly effective programmers

2,657

Published on

A short introduction to various Agile and Lean practices such as Test Driven Development, Technical Debt, Pair Programming, and more.

Published in: Technology
1 Comment
4 Likes
Statistics
Notes
No Downloads
Views
Total Views
2,657
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
1
Likes
4
Embeds 0
No embeds

No notes for slide

Transcript of "The 10 habits of highly effective programmers"

  1. 1. The 10 Habits of Highly Effective Developers<br />Dennis Doomen | Principal Consultant | Aviva Solutions<br />
  2. 2. Dennis Doomen<br />About Me<br /><ul><li>14 years IT experience
  3. 3. C++ originsbut C# since 2001
  4. 4. Specialities
  5. 5. .NET Architecture
  6. 6. Silverlight
  7. 7. Scrum/XP
  8. 8. ALM
  9. 9. Occasional Speaker
  10. 10. Public initiatives
  11. 11. SilverlightCookbook
  12. 12. C# CodingGuidelines
  13. 13. FluentAssertions
  14. 14. Internet
  15. 15. www.dennisdoomen.net
  16. 16. DZone MVB
  17. 17. @ddoomen</li></li></ul><li>Communication Challenges<br />Traceability<br />Bridging IT and business<br />Enforcingconsensus<br />Understanding the domain<br />Misinterpretations<br />
  18. 18. Ubiquitous Language<br />1 concept = 1 name<br />Verbs & nouns<br />Refactor!<br />Native language<br />No ambiguity<br />Business proposes<br />Beware of conflictingrules<br />
  19. 19. RequirementsChallenges<br />Scoping<br />Estimability<br />Traceability<br />Purpose<br />Whichstakeholders?<br />Documentationis ambiguous<br />PromoteCommunication<br />
  20. 20. User Stories<br />Product Backlog<br />Storyotypes<br />Placeholder<br />Project value<br />Estimable<br />Negotiable<br />Who, what, why<br />Global unit of work<br />
  21. 21. MaintabilityChallenges<br />Lot of coupling<br />Inconsistent naming<br />Bad cohesion<br />Incorrect usageof .NET<br />Intention<br />obscuringcode<br />Inconsistent layout<br />Procedural Code<br />Bad maintainability<br />
  22. 22. Coding Standards<br />Definesubset<br />Ghostdoc<br />ReSharper or<br />CodeRush<br />Static Code Analysis<br />Distribute cheat sheet<br />Go towww.csharpcodingguidelines.com<br />
  23. 23. QualityChallenges<br />Architecturalinconsistencies<br />Design skills<br />Communication skills<br />Bad hair days<br />Misinterpretations<br />10-50 bugs / 1000 lines<br />
  24. 24. Peer Reviews<br />Always!<br />Ad-Hoc<br />TFS vNext!<br />ByPeers<br />Chooseyour tool<br />FormalProcess<br />Record Comments<br />
  25. 25. Team Challenges<br />Compliancy<br />Too manythings<br />toremember<br />Common mistakes<br />Juniors<br />UI choices<br />Annoyingreviews<br />Design choices<br />
  26. 26. Checklists<br />Short<br />Concise<br />Open<br />Unambiguous<br />Design choices<br />Sign-off<br />Online or offline<br />CodingGuidelines<br />Project-specific<br />
  27. 27. Productivity Challenges<br />Fixing the <br />wrong<br />problem<br />Bugs<br />Design<br />flaws<br />Building<br />the wrong<br />thing<br />Late feedback<br />Alternateinterpretations<br />Lack of experience<br />
  28. 28. Pair Programming<br />Switchpairs<br />Complexproblems<br />Straightdesks<br />Same<br />level only<br />Coaching<br />Not the <br />entireday<br />Dual keyboard + mouse<br />
  29. 29. ConsistencyChallenges<br />KISS<br />Requirements<br />change<br />YAGNI<br />Oracles<br />don’texist<br />LDUF<br />Utopianarchitectures<br />don’texist<br />Ubiquitous Language<br />changes<br />
  30. 30. Refactoring<br />Single responsibility<br />Small changes<br />S.O.L.I.D<br />Decrease<br />coupling<br />Continuous<br />Increasecohesion<br />Boyscout rule<br />NOT Redesign<br />ReSharper / CodeRush<br />
  31. 31. Design Challenges<br />Debugging hell<br />Untestable<br />Refactoring<br />Too many<br />responsibilities<br />Regressions<br />Insufficient<br />design skills<br />No cohesion<br />Strong coupling<br />
  32. 32. Test Driven Development<br />Test-First<br />Read, read, read<br />> 90%<br />Usefor<br />peer reviews<br />Design Process<br />First-Class Citizens<br />Includesrefactoring<br />Avoid<br />UI logic<br />
  33. 33. Technical Debt<br />Repetition<br />causes<br />repetition<br />Repeatingfixes<br />Qualityundefinable<br />Suboptimal<br />check-Ins<br />Simple changes<br />become complex<br />Software rot<br />
  34. 34. Wall of Pain<br />Open<br />PlanRedesigns<br />Visible<br />SmallSteps<br />Wall of pain<br />Regular Review<br />Meetings<br />PrioritizeByPain<br />ConsiderCosts & Risks<br />
  35. 35. Even More Challenges<br />PainfulDeployment <br />Code<br />Analysis<br />Unit Testing<br />Testing on Real Server<br />Code Coverage<br />Redeployment<br />
  36. 36. Automatic Builds<br />Conflict<br />Detection<br />Code<br />Analysis<br />Unit Testing<br />AutomaticDeployment<br />ContinuousIntegration<br />Team Responsibility<br />
  37. 37. ?<br />Emaildennis.doomen@avivasolutions.nl<br />Twitter<br />@ddoomen<br />Blogwww.dennisdoomen.net<br />

×