Your SlideShare is downloading. ×
The 10 habits of highly effective programmers
The 10 habits of highly effective programmers
The 10 habits of highly effective programmers
The 10 habits of highly effective programmers
The 10 habits of highly effective programmers
The 10 habits of highly effective programmers
The 10 habits of highly effective programmers
The 10 habits of highly effective programmers
The 10 habits of highly effective programmers
The 10 habits of highly effective programmers
The 10 habits of highly effective programmers
The 10 habits of highly effective programmers
The 10 habits of highly effective programmers
The 10 habits of highly effective programmers
The 10 habits of highly effective programmers
The 10 habits of highly effective programmers
The 10 habits of highly effective programmers
The 10 habits of highly effective programmers
The 10 habits of highly effective programmers
The 10 habits of highly effective programmers
The 10 habits of highly effective programmers
The 10 habits of highly effective programmers
The 10 habits of highly effective programmers
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

The 10 habits of highly effective programmers

2,624

Published on

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

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,624
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
1
Likes
4
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

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

×