views:

426

answers:

11

Hi,

What best practices and methods would you enforce on a new .NET development team?

Cheers

+6  A: 

Update

MSDN - Design Guidelines for Class Library Developers - All Versions

I had also assumed the OP was referencing coding standards. As for the more general practices.

  • Unified Development Environment (Visual Studio will probably net the best results)
  • Version Control (Team Foundation Server is great if you can afford it, if not SVN)
  • Team Collaboration (Trac if you go with SVN, TFS has some stuff as well)
Justin Niessner
And here's the 3.5 equivalent: http://msdn.microsoft.com/en-us/library/ms229042.aspx
LukeH
+9  A: 
  • Use only Visual Studio
  • If you need a database, use a server (reduces SQL issues early on)
  • Use Version Control
BenB
Could you give reasons for the "use only VS"? Linux MonoDevelop is mature enough.
Dykam
VS is a far more mature, richer development environment that provides a very clean, smooth workflow designed specifically for .NET development. When integrated with TFS, I don't think there is any development ecosystem that can compete.
jrista
Dykam, umm, what jrista said
BenB
+4  A: 

You are asking for a shelf of books. I don't think you'd want to read an answer long enough to actually cover what you asked.

Kelly French
Name your 3 favourite books.
youwhut
Pragmatic Programming, Code Complete, The Practice of Programming. They aren't language specific because the the way software should be developed transcends language or platform.
Kelly French
A: 

I would start by looking through the MSDN Developer Centers site:

http://msdn.microsoft.com/en-us/aa937802.aspx

IrishChieftain
A: 

Since you are using C# I would recommend using StyleCop to maintain consistency in code layout. Since you've stated it's a new team, I'm assuming that the code base is new as well. Starting fresh with StyleCop is far easier than trying to get rid of warnings in an existing code base.

Agent_9191
+5  A: 

Good question. I've had to deal with this very recently with my team. Here's a couple quick points:

  • Come up with coding and documentation standards. A search for C# style guidelines will yield some good results. StyleCop and FxCop might be useful for enforcing your standards.
  • Source control. SVN is popular, but I prefer Mercurial.
  • Depending upon what type of projects you are working on, you might want to decide on a standard architecture. Typically, we use a UI - Application - Business Logic - Infrastructure architecture.
  • Put your database in version control.
Brad Gignac
+1  A: 

You need to use version control (svn is great), but at the same time you shouldn't check everything into the sourcecontrol. skip checking in compilation output and configuration files, instead check in the config files as app.config.template files and have each dev make his own copy of the config files called app.config. check in new changes to the .template file and have all devs regularly check and update their local version if it changes.

AndreasKnudsen
A: 

most people would agree that having automated unit tests is a very good thing. you may want to go the tdd route and never code anything that doesn't already have a test, or you may want to write tests after the code and just focus on the key areas of concern rather than striving for 100% coverage. either way, decide what you want to achieve with testing and make sure that it is adhered to. without a strict law on getting unit tests you may well find that some if not all of your code has no automated tests and the only way that code gets tested is when someone goes into the UI and actually uses it.

eviltobz
+2  A: 

Microsoft's Patterns & Practices group may have some suggestions that could be useful as a resource of where are some good practices.

Continuous Integration would be another practice I'd introduce along with Technical Debt.

I'd review various Agile practices and see what the team thinks are worth adopting and what isn't. Tribal Leadership would also be something I'd examine to see what stage is the tribe and try to bring it to stage 4 if possible.

If I could put some values into the team it would be to have some pride in our work, respect one another, and think of things in terms of good for the team rather than individual gain. Granted that culture wasn't part of the question it is a natural follow-up to my mind.

JB King
+1  A: 

If possible, pair up junior members with more senior members. Either way, definitely have code reviews. I'd also encourage them to have scheduled workshops or discussions so that they can get more well-rounded skills and to increase their exposure to different areas that they might not currently be aware of.

I'd also encourage them to go to user group meetings.

Giovanni Galbo
A: 

In no particular order,

  • Agile / Scrum
  • A nice suite of tools -Resharper, Redgate SQL Tools, FXCop,etc.
  • Test Driven Development
  • Continuous Integration
Matthew Sposato