I was joining a .NET project. As a developer who has worked mostly on Unix systems for the last 17 years, this was, shall we say, a learning opportunity. I was looking for a one-stop-shop which captures what I should read and do. However, I didn't really find one. So with the help of my ThoughtWorks colleagues, I made one. Think of this as a long list of things to google for when you need something. Hopefully someone will find this list useful some day! I'll keep updating this as and when I find something. Please feel free to point me to something I should include here.
What kind of a machine do I need to be an effective dev workstation? Are there things I need to know about ... eg: I/O is slower on Windows than Linux
- CPU: at least a dual-core 2.4GHz
- RAM: min 4GB, but I recommend 8GB if you want to run everything on your local environment
- Disk: SSD helps
Having been brain-washed by the open-source mafia, how do I get into a Microsoft mind-set? What do I need to forget (like Richard Stallman or ideas like one tool for one job)?
- "Code First Approach" in relation to Entity framework
- "A lot of patience" -TM
- Books
- Blogs
- Articles
- Resources
- Tools
- Unit Testing
- NUnit
- XUnit
- MSpec
- NCrunch and Continuous Tests/MightyMoose are both pretty cool, although they are pretty memory intensive (they're autotest/guard like tools for .Net).
- Mocking
- Logging
- NLog
- log4net is still used heavily in logging, though whether you would actively pick it for a new project, I don't know. You will encounter it though.
- Build
- Powershell + PSake is probably the most popular
- NAnt (old / deprecated)
- MSBuild is around, but needs full install of VS on build server if you use some features
- Infrastructure Automation
- PowerShell
- CFEngine
- PSake
- YDeliver
- Chef (works well with PowerShell)
- Packaging
- CI/CD
- Go
- CruiseControl.NET
- TeamCity
- Avoid TFS
- SCM
- Git, Mercurial
- Github for Windows
- Avoid TFS
- Profiler
- .NET Memory Profiler... ( .NET Memory Profiler - In-depth .NET Memory Profiling)
- JetBrains dotTrace (CPU profiler)
- Redgate Ants memory profiler
- Code Metrics
- opencover
- dotCover by JetBrains
- Visual Studio has some built-in stuff
- Monitoring
- IoC
- Windsor
- Castle
- Unity
- NInject
- StructureMap
- For all of these be sure to not use them in public-static ServiceLocator configuration. That is't Inversion of Control, it's Inversion of Inversion of Control (Blog Entries)
- Refactoring
- Resharper
- Just Code and a few others aren't as good as resharper
- ORM
- NHibernate
- Entity framework
- Massive
- Simple.Data
- Dapper
- Fluent NHibernate
- Linq
- Be aware that .Net standard operating procedure is to used Stored Procedures. This means that many solutions in the server code are intended to be stateless, and anemic in terms of business logic. To try to push to a more layered solution that you're more used to in Java/Ruby/Python land. This may be unpopular in the team.
- DB
- DB Migrations
- dbdeploy.net
- redgate
- MigratorDotNet
- Mig#
- Tarantino
- BDD
- IDE
- Server-side Frameworks
- WCF
- WebForms
- WSF
- ASP.NET MVC 3 or 4 (.Net devs will just know this as "MVC" sadly, and ignore the 1970's design pattern of the same name).
- Razor
- Nancy (like Sinatra for .NET)
- WebAPI to expose RESTful API
- restsharp, if you need to consume any REST api's
- Client-side Frameworks
- Knockout JS (avoid KnockoutMVC.com)