Resources for Development

August 27th, 2014

Make sure you have the right tools to get the job done right!

I've always been a proponent of having the right tools for the right job. If you don't have the right tools for the job, you might as well have a rock and chisel.

For those corporate managers/executives out there who are trying to watch their budget, there are 4 reasons why you should invest in the proper tools for your developers.

  1. If they request a specific tool and the developer is worth their salt, they know that the tool will improve their coding and possibly even their skill. Buy it for them!

  2. If you don't purchase that tool, you may be inducing the "rock and chisel" mentality on your developers. Not good for morale.

  3. Purchasing the tool may save money in the long run because without the use of that particular tool, you risk either time ("Build it yourself, you don't need x library") or quality ("Build it quick"). We all know how that turns out.

  4. Programmers LOVE to get shiny new programming tools to experiment on existing projects (NOT production) ;-)

So over the years, these are the tools and utilities that I've used when building Microsoft-based web solutions.

NOTE: Visual Studio CAN be overloaded with add-ons/plug-ins so I try to minimize the number of plugins that my dev environment can load quick and is relatively responsive.

Also, this will be a LIVE document. I will be adding and removing tools as my career continues.

Some of the tools that I currently use for development are:

Visual Studio 2013 2015 Enterprise (http://www.visualstudio.com/)
This is my primary tool for web development. The Microsoft tool has not only become the defacto standard for editors in usabiility and ease-of-use, but has become a breeding ground for add-ons that extend the IDE to become a powerhouse in the programming industry (I didn't even realize that there was a PHP plug-in for Visual Studio...whoa!)

SQL Server 2005-2012
Of course, you have to have a database of some type to store your data. Since I use Visual Studio, of course, this comes along for the ride as well. I've only dabbled on 2012, but focus primarily on 2008R2.

C#
My language of choice (it is one of the top 5 languages for development) whether it's Windows, WebForms, or MVC.

ASP.NET MVC (alpha-5.2)
Since we are talking about ASP.NET MVC, this is my current web framework that I absolutely love. Ever since the introduction of WebForms, I've never felt good about how Microsoft handles HTML pages. ASP.NET MVC is what I've been waiting for from Microsoft and is the primary topic of discussion on this site.

SignalR (1.0-2.0)
Every once in a while, you find a technology that will change how you build applications. SignalR is another Microsoft technology that I absolutely love. I remember a long time ago when AJAX came on the scene around 2002-ish. I mentioned that the lines between a fat-client and website were beginning to blur. This technology levels the playing field and shows that you can build a website, not leave the page, and still receive data while maximizing the user experience. 

Twitter's Bootstrap (1.0-present)
Bootstrap is a favorite of mine. While I firmly believe in the Pareto principle (80/20) and a framework does the majority of the work for me, I'm quite happy. Bootstrap provides 80% of the website pieces I need while letting me focus on the remaining 20% (minor design, development/backend). As an added bonus, Bootstrap also has a responsive grid system built for you with other JavaScript/design goodies as well.

MEF (Managed Extensibility Framework) (1.0-2.0)
When I want to create a website using a "plug-in" model, my first DI (Dependency Injection) framework I grabbed was MEF. This is the same technology that Microsoft uses in Visual Studio and I've been using it for the past 2 years building out my CMS.

StructureMap
I've moved on from Ninject and started using StructureMap because of it's maturity and reliability.

Moq
I've moved from RhinoMocks to Moq because of RhinoMocks' "magic strings" where Moq uses lambdas.

NUnit/MSTest
Both are well-tested AND battle-tested. Good to have in your arsenal.

T4 Templates
If you've been around since Visual Studio 2005, you know about T4 (Text Template Transformation Toolkit) and how it creates code at the touch of 2 keys (CTRL and S). For those who don't know, Visual Studio has it's own Code Generator right inside the editor. Create your template with an extension of .tt and press CTRL-S to save it and Visual Studio will generate any type of code you want: C#, XML, SQL, etc. If you have a pattern of how to develop your applications, this will increase your code development tremendously. It even attaches to databases/tables and generates code based on database data. All built-in.

JetBrains WebStorm
When I have a small HTML Project or want to create an HTML prototype, I don't need to break out the big VS2xxx IDE. I load up WebStorm from JetBrains (this sounds like a commercial).

JetBrains ReSharper
ReSharper is a must-have Visual Studio extension for all developers. Not only does it incorporate the refactoring techniques from the Refactoring book, but it also has a number of coding features that make a developers life easier. It has already saved me a TON of time developing. Why are you still reading this?!? GO BUY IT NOW!
NOTE: I also posted an article about the Top ReSharper Extensions available for ReSharper. 

Web Essentials
Mads and his team are doing a fantastic job with building this extremely easy to use extension for Visual Studio. It contains a JavaScript/CSS minifier, Image Optimizer/Sprite builder, support for TypeScript, CoffeeScript, JSLint, TSLint, and others. Too much to explain in one paragraph.

SQLComplete - (from DevArt: http://www.devart.com/dbforge/sql/sqlcomplete/)
SQLComplete is like a ReSharper for SQL Server. It performs autocompletes, formats your SQL (there are a TON of formatting preferences), Document Outline, and Snippets Manager, which I use heavily for SQL tuning.

As I mentioned earlier, this list will change as I continue down my coding path.

If you have any recommendations, please don't hesitate to contact me and let me know about them. :-)