Tuesday, February 9, 2016

Requested Post: Dev machine setup

How do I setup a machine to develop on?

Everywhere I've gone, one of my first steps is to document every single thing I'm told to do to setup the machine for development. Not a single one of the shops where did I this, was it appreciated or possibly even used as far as I can tell. Even in the many that had badly outdated instructions for new developers, I updated them to no avail or interest.

So here's my generic procedure for a machine (mostly independent of target platform/ui)
  1. Ask about getting a 2nd monitor if there isn't one.
  2. evaluate provided keyboard/mouse
  3. evaluate if using a git layer over top of the solution would be helpful
    1. branching in git is cake
    2. branching in TFS is very painful
  4. document and do all solution/job/domain specific setup
    1. ask around about pain points in setup
  5. ensure the work solution actually runs
  6. installs
    1. setup Chrome (or Firefox)
    2. install git or git-extensions (even if the shop doesn't use git)
    3. Linqpad 
      1. download (4 and 5)
      2. register it 
      3. set it to point to the script repository created in 2
    4. SublimeText
    5. Telerik JustDecompile
    6. Windows Grep - I am considering trying out this one
  7. pull down my script repository (this has all my most reusable/interesting scripting code)
  8. write some scripting code 
    1. to help verify and/or do step 3.
    2. to help with any manual work done in switching contexts (ie. Dev/QA/Prod debugging)
  9. Consider (but not necessarily do, creating a git repo over my user profile folder)
    1. this lets me watch changes to those folders for important settings or files that I might want to keep
    2. also allows settings to roam between machines/domains
  10. Run VS code metrics analysis of work solution(s) - 
    1. ask for approval to clean the methods with any of the following criteria:
      1. over 30 cyclomatic complexity
      2. under 30 maintainability
  11. evaluate build/CI process
  12. evaluate deploy process

Additional very wise steps I need to start doing:
  • Install sonar 
    • install the C# plugin
    • test run current/latest code
      • customize violation rules and re-run
      • document metrics (lines of code, number of projects, violations)
    • setup a build process that would iterate from the beginning of solution all check-ins for code trending

VS Extensions to install:
  • VsVim
  • Web Essentials
  • Visual F# Power Tools

Other tools I might install depending on platform/ui type: