• Like
  • Save
The 10 habits of highly effective programmers
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

The 10 habits of highly effective programmers

  • 2,573 views
Published

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
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
2,573
On SlideShare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
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