Wednesday, May 14, 2008

Parachute into Brownfield Development

What is?

  • Not legacy but not a brand new app
    • PCL for example
  • Possibly gone stale
  • You have access to the code you are able to change it
  • Not in obsolete technology
    • RBRS would not get BF

Where to start

  • Documentation
    • Rarely up to date
  • Meetings
    • Gives you the feel of the team
  • Look at the code
    • Our natural instinct
  • Solve a defect
    • Start with a bug fix
    • might help to find your way around
    • really hard
  • Knowledge transfer
    • peer programming so get social and guidance
    • semi-productive right from the start
  • Analyse build process
    • Might not always exist
    • Shows you the release/code structure
    • PCL has a build script, but I can't get it to work
    • You learn the 3rd party reliabilities
  • Ask, why are you there.
    • What happened so bad that I'm here

First steps

  • Automate the build / deploy
  • Should I jump into the code now?
    • Probably not
  • Check on the Version Control System
    • Is it being used, is it good, can it be improved, how's the structure
  • CI
    • Make sure it Compiles
    • Make sure it Executes
    • Then orchestrate Release Management
    • You want something you can instantly see
    • Only need a Bare minimum box
  • Code
    • Pair program is the best start
    • Path trace
    • New feature creation
    • Probably just going to end up thrashing
    • Style
      • Don't worry about changing standards
        • Standards are for consistency
    • worry about code flexibility
      • SRP, SoC, Coupling, Cohesion, Contracts
    • Automated testing
      • Was it TDD?
      • How do they run? Are they good?
      • Are they real unit tests
    • Take into account your release schedule before you start ripping apart the code
    • Goals
      • Be nimble, be quick, be agile

Social aspects

  • Dev team
  • Tech team
  • Testing/QA
  • BAs
  • Management
  • Clients! >:(
  • You can't force it down someones throat. They have to buy in.

Book

  • Brownfield Application Development in .NET

Notes

  • Remember the ramp up time
  • If your BAs know how brittle a piece of code is, you have a huge problem
  • If you are using DI then you have already broken your dependencies
    • Windsor on Unity
  • Enforce policies through culture
    • Sell people on the why
  • Working on code includes Unit Tests and Integration Tests
  • It's going to take you the same amount of time regardless of fixed budget / fixed time
  • Keep people apprised of where you are and if you're on time

No comments: