I've got experience with doing agile/XP development with Ruby on Rails and Java. I've been dumped into doing a project using .Net and I have no experience/knowledge of .Net.
What advice do folks have on getting .Net started in a agile way (TDD/BDD, Continuous Integration, etc)?
I could use pointers on 'best practices' to follow when setting up a new project.
Also are there 'Javaisms' or 'Rubyisms' I should watch out for while programming in C#?
Jeff Schoolcraft
Jeff, I've been out of the .NET community for a bit, so I'm not sure on the "state of the stack" so to speak, but I'll give you my advice. I'm not sure if you're talking about web forms, mvc or winforms type project, which could influence the answers.
Some high level bullet points:
- If you're used to TextMate and all the bundles then you'll want to get a copy of ReSharper from JetBrains, immediately.
- A decent CI tool - JetBrains TeamCity -- There used to be (still is?) a project by Jay Flowers called (ugh...) but it basically created a VS project for you with a test project and set up for CruiseControl.NET. Really only useful from a project layout standpoint, but it's somewhat dependent on the type of project you're on.
- There's a decent, yet somewhat less vocal and less prevalent, TDD/BDD community in the .NET Space (i forget the name, but there motto was something about running with scissors). The tools to use when I was doing C# work was NUnit (or mbUnit) + RhinoMocks + watir/watin. There are people that are using Cucumber with .NET and I believe there's an NSpec or something out there to mirror rspec, but I probably wouldn't test it.
Specifics:
- Getting started TDD/BDD (NUnit or something) there are an absolutely massive amount of on demand webcasts on MSDN for free on basically every topic. The last series I watched was on TDD w/ ASP.NET MVC and it was overly put on, but they'll get you going.
- Best practices => used to be a project called TreeSurgeon to help with this. It's compiled and you need to reference the projects/dlls within the solution. Again, it's still mostly related on type of project, but generally for every real project there is a parallel test project.
Rubyisms to watch out for:
- ||= doesn't exist, () are not optional, semi-colons are your friends and you'll need to TypeEverything. No mixins.
- Last I checked there is WAY LESS open source contributions from the .NET community in terms of "plugins" to use.
I'll be happy to answer follow on questions but I'm all ruby and I haven't written a line of C# in 2 or 3 years, so YMMV.
Thanks for replying. Looks like I’ll be doing some rules based business logic (Really wish I could use Ruby for that), and then putting a web front end on it. Also will need some basic DB functions mostly for lookups.
