In the modern software development world we rely on lots of different tools to help us with our jobs. In this post I thought I would list the tools which I rely on each day and couldn’t live without. Each and every one of these tools forms a large part of my daily productivity.
The tools I want to cover are:
- Visual Studio 2013
- Mind Genius
- Enterprise Architect
I would really like to hear from people in the comments about the tools that you rely on. Mainly as I am always on the lookout for new tools, but it is always good to see what other people like to use as I am sure you are all a very diverse bunch.
Visual Studio 2013
I have been using Microsoft’s Visual Studio in various versions since Visual Studio 5 back in the 1990’s. Visual Studio has come on leaps and bounds since those early days of C/C++ coding. Microsoft has recently released Visual Studio 2013 and this is definitely their best version of the tool-set yet.
I mainly use the .NET development tools and flit around between Winforms, MVC and WCF projects. Visual Studio 2013 comes with lots of enhancements to the IDE including code preview scroll bars, Code Lenses, Peek Definition, Sign into Visual Studio and the new group by class in the test explorer. I think for as long as I am ever writing code I will be using Visual Studio, so it will be interesting to see where Microsoft takes it next.
As well as using Visual Studio I also use a number of 3rd party extensions to help me with my day to day software development. The first tool I rely on is Resharper by JetBrains. This is a code productivity tools that helps you enforce coding standards, offers advanced refactoring tools and has advanced code searching and navigation. This is a very feature rich tool and I only really scratch the surface of what’s available.
A more complete list of features in Resharper include, Code Analysis, Navigation and Search, Coding Assistance, Refactoring’s, Code Generation, Code Templates, Code Cleanup, Unit Testing, Internationalization, ASP.NET and MVC Tools, XAML Editing Tools. Nant and MSBuild Script Editing.
Resharper isn’t the only tool like this, probably the other big contender in Visual Studio productivity tools is CodeRush from DevExpress. I have used this tool and it is pretty good, especially at guiding less experienced developers, but I have always preferred Resharper as a tool. It isn’t particularly expensive either.
Another tool that I have come to rely on is NCrunch. NCrunch is a continuous testing tool that will continually run your unit tests as you are working. This is really useful as it enables you to get instant feedback as to whether you have broken any test as you change/refactor code. You can configure the tools to run in multiple different background threads depending on the speed of your machine, but I have really found it quite un-obtrusive.
I have already written a short review of NCrunch where I go into a little more depth on the tools features, but I would definitely find Visual Studio odd to use without having this in place as I have grown used to having it there.
The last Visual Studio based tool I want to include in this list is NDepend. NDepend is a tool that allows you to measure code quality using lots of different metrics and charts. When you first use NDepend it can be very intimidating as it will tell you in lots of different ways why your code isn’t up to scratch, even if you have been using Resharper and fixing all the style warnings, and also using Static Code analysis. I have already written a review of NDepend on this blog which goes through a lot of the main features.
There is a danger with this tool that you could spend far too much time analyzing code and end up with analysis paralysis. It is important to configure the tool to suit your needs as all the metrics may not be relevant to your scenario. Once you have mastered the tool though it is very valuable indeed and definitely worth the price. NDepend also has a powerful scripting system build in called CQLinq. This allows you to write Linq queries over your code base. This allows you to define your own quality metrics or tweak the ones that already exist.
To get the most out of this tool you need to invest a lot of time to it up front. As a development leader I wouldn’t give everyone access to this tool. I would keep it to senior/lead developers only and use it as a tool for guiding code reviews.
You can also get build server licenses which allows you to run defined sets of rules against your code base on a build in much the same way as you can do with Microsoft’s own static code analysis.
I love mind mapping as a productivity tool. Mind mapping is a diagram used to visually outline information. A mind map is often created around a single word or text, placed in the center to which associated ideas, words and concepts are added. Major categories radiate from a central node, and lesser categories are sub-branches of larger branches. Categories can represent words, ideas, tasks, or other items related to a central key word or idea.
There are many different mind mapping tools you can use, but the one that I have settled on is Mind Genius. I use Mind Genius for task planning, document planning, and most importantly planning posts for this blog.
What I also love about this tool is that you can use it for basic project management. Nodes on a map can be turned into tasks with priorities where you can associate time lines and how complete they are. Mind Genius will then plot all of this on a standard project Gantt chart.
If you are using a mind map to plan a document, once you export the map to a Microsoft Word file, the branches on the mind map form headings in the document. I have used this technique many times to plan complex documents and it really helps to break down the task. I generally write most of the document in Mind Genius as on each leaf of a branch you can open up a note window, so you can just add your content in there. Then when you export to a word document you have all the content exported in the correct place.
For my day job I am a development leader and architect. I quite often have to draw complex architectural diagrams and I favor using the UML modelling language for this. I tried using Microsoft Visio to draw these diagrams but I just couldn’t get on with it, so I started using Enterprise Architect by Sparx software.
Enterprise Architect is a very deep tool that will even let you do code generation from your diagrams, but I never use this feature. I just use it for creating diagrams for documents and this blog. I mainly use Activity Diagrams, Use Case Diagrams, Class/Object diagrams and Sequence Diagrams. You can also get extension packs for different modelling languages like BPMN and the TOGAF architectural templates. It is a bit of a fiddly tool to get to grips with, but once you have got used to its quirks it is a very flexible. It comes in different editions (Desktop Edition, Professional Edition, and Ultimate Edition) which vary in price from inexpensive ($135) to quite expensive ($849). I use the Desktop Edition as this covers more than what I need it for.
If I am doing any user interface work I like to use Balsamiq to design the screen layouts. There are many different tools for designing user experiences, but I favour Balsamiq as it is very easy to use, and I really like the pencil sketch style that it uses, especially if I am using Balsamiq sketches on this blog as they are quite visually striking.
Using this tool you can link screens together to create what look like paper prototypes of your screen flow. This is a great way to get early screen mock ups in front of your customers to get their early feedback.
You can’t beat a good text editor. There are many editors out there and people tend to get very passionate about what editor they use. This can go from the extreme ultra geeky VI editors through to slightly less frightening EMacs through to a good old user interface based editors. My personal favorite is Notepad++. This tool is free and it is very powerful. I tend to use it mostly for chopping through logs files as it handles large files very well and has good searching and sorting capabilities.
Notepad++ also has different syntax highlighting templates for different languages, so if you don’t like using huge development environments like Visual Studio, Eclipse, NetBeans etc then you can use an editor like this for writing code.
Quite often when writing software you need to create images/icons etc so having a decent drawing package is essential. For this type of work programs like Photoshop CS or Elements seems a little overkill. You can use a program like Gimp, but again that is a very feature rich and quite a complicated piece of software to use.
Paint.Net. Paint.NET is free image and photo editing software for PCs that run Windows. It features an intuitive and innovative user interface with support for layers, unlimited undo, special effects, and a wide variety of useful and powerful tools. This package is free to download and is very easy and intuitive to use.
The final tool I want to discuss in this roundup is Dropbox. Dropbox is a cloud based storage solution that lets you store files in the cloud and synchronize them between multiple machines. Dropbox has a web interface (shown below) and a plugin that you can install on your computer where you map it to a folder, and anything in that folder is automatically uploaded and synced in the cloud.
Once you sign up to Dropbox you get 2 GB of free storage and you can pay extra for extended plans. I am still using the free version as I just use it for document syncing between machines and not as an online backup facility. In fact the main thing I use it for is storing my company accounts and drafts of blog posts so I can access them from anywhere.
I hope you found this list interesting. These are 10 of the tools that make my working life easier. There are many other tools, but these are my top 10. It would be great if you could leave a comment on this post saying what your favorite tools are as it is always interesting seeing what other people use in their day to day lives. Plus I like trying out new pieces of software all the time.