What Tools Should Every Developer Know?

We all have our opinions on what we think are essential tools, practices, etc. Here are the ones that help me get things done right now:

Resharper – I couldn’t live without this anymore. Productivity just goes through the roof. My last employer wouldn’t buy it so I bought my own copy (and then found another job!)

Nuget – The Visual Studio Add-in. Makes managing library references a doddle.

Automapper – A great way of mapping between domain objects and DTOs. I use it mainly with IDataReader when having to work with stored procs in my current job.

NHibernate – Great ORM but steep learning curve. At one time I wanted to use it everywhere. Over time I’ve mellowed a little bit and, especially with the move toward CQRS architectures, I realize that I can leave ORMs behind forever. Of course, you can still use an ORM with CQRS but it’s nice to have the option not to.

Castle ActiveRecord – Many times now, where quick data driven web sites are required, I see more value in what the Ruby on Rails guys are doing with ActiveRecord. For this approach I tend to believe Castle ActiveRecord (built on top of NHibernate) is the better way to go. Of course, it’s all about trade-offs, etc. and losing POCO or violating SRP in exchange for a massive productivity boost is okay by me as long as the app itself is not that complex.

Castle Windsor – IMHO, the best inversion of control container around.

NUnit – The one and only TDD tool I need. I even tend to do the BDD context/specification style with nothing but NUnit. It’s all I need.

NServiceBus – A fantastic ESB that once you grasp the basics, opens up a whole new world of possibilities.

So, those are mine but I’m open to suggestions for others that I’ve missed or am unaware of.

What Tools Should Every Developer Know?

3 thoughts on “What Tools Should Every Developer Know?

  1. Hello Steve,

    Great to see you blogging, i have just signed up for wordpress myself (leewitherington.wordpress.com/) but havent got my hands dirty yet.

    IMHO the title of the blog post has a huge scope, however the contents appear to be very technology oriented. I think its important to understand the goal of those technologies before attempting to use them, which leads us to some core foundational skills i believe developers should know.

    An example. Castle Windsor as an IoC developers should understand the reason why having dependencies in code tightly couples code structures, things which are tightly couples are not such a good idea because they carry a lot of baggage (to understand your class, i now potentially have to understand this other class etc). So in summary “Before using the solution, understand the problem”.

  2. Hi Lee,

    Yeah, you’re spot on. I did originally intend to do include principles behind them etc, but the post was getting too big so thought I’d save it for another day. I should have made the title clearer after that! :)

    Then again, maybe that’s one for you to cover?

Comments are closed.