How Important are Productivity Tools, Really?
Join the DZone community and get the full member experience.
Join For FreeI am very much a minimalist when it comes to programming. I love things like dependency injection and other cool techniques, although they can sometimes create a certain level of complexity to your application. A good deal of the time the small amount of complexity is greatly outweighed by the benefits. There are sometimes, however, where the benefit doesn't justify the added complexity. If I am building a basic console app to do a very small task, things like dependency injection may get in the way as they may not add very much benefit. Not saying that all small tasks may not truly benefit from dependency injection, but there are certainly cases where your application may now. I have personally fallen in love with it and love to use it where ever possible. That being said, I don't like adding complexity just for the sake of adding complexity.
So what does this have to do with productivity tools? The productivity tools I am referring to are things like the Productivity Power Tools for Visual Studio 2010, ReSharper or CodeRush. There are many examples out there, but those are 3 that I have personally used or use currently. Just as I am a minimalist with code, I used to be a minimalist with my IDE as well. I customized window layouts and such, but that was generally it and almost never installed any add-ins to Visual Studio at all. Having heard other developers rave about how awesome ReSharper is, I decided to give it a shot and I have to tell you, it's like crack for a developer.
I guess it's not totally like crack, because the addiction isn't always immediate. The first time I used both ReSharper and CodeRush, they got in my way. I was used to doing things my way and when either jumped in to help, it was annoying. I have probably installed and uninstalled both several times before I had that "ah ha" moment. If you have done much with ASP.NET MVC, you may notice that Visual Studio has great intellisense, even for web, but it pretty much dies when you are using code inside of a string. For example, I have a code block that I need to write a value from say, view data, to a url. Imagine the following HTML code:
Suddenly one of my biggest pain points with doing web development in Visual Studio was now gone. It was a truly awesome day.
When it comes to the actual tools, both ReSharper and CodeRush are great tools, but I have found that it really just comes down to personal preference. I really can't qualify that one is "better" than the other based on anything other than just personal preference. Both JetBrains (maker of ReSharper) and DevExpress (maker of Code Rush) are very active in supporting the developer community so my recommendation would be to take both for a spin.
I have recently discovered the Visual Studio Productivity Power Tools which give some really cool things like tabs colored by project, unifying tabs vs spaces, a new cool add reference dialog and other cool things. I tried it on a whim one day and it seemed pretty cool, but once again didn't really seem like something I couldn't live without. It actually caused me a bit of trouble because I didn't realize that there was a new Add Reference dialog until the day after I installed it, which just happened to be during a presentation (oops!). During the presentation I was showing off StructureMap and needed to add a reference to it in a project and was presented with a dialog I hadn't seen before. And I have to say that the new one is really cool, it can just throw you off when you are in the middle of a presentation and had never seen it before.
In addition to add-in productivity tools, Visual Studio contains some awesome features, mainly the aforementioned intellisense. Intellisense is a wonderful thing and can really help you write code faster by not having to remember full class names or at least not have to worry about typing them. ReSharper's additions to intellisense can even further enhance this. However, it can come with drawbacks you may not realize right away.
Intellisense and other productivity tools can make programmers lazy. Don't get me wrong, I'm not saying that every programmer who uses them is lazy, but it can lead to lazy development. While they make some tasks super easy and require almost little work to do, they can also cause you to forget how to do those tasks without the productivity tools. I have heard several developers say (and I have said this myself) that they cannot live without tools like ReSharper.
As programmers, we must be careful to not become too dependent on those tools to the point where it actually degrades our coding ability. A couple of months ago, I needed to do a demo for someone using Mono. To show the cross platform capability, I created a bunch of code from scratch in a terminal using Vim. The first time I really struggled with certain parts because I was so used to Visual Studio doing them for me that I had all but forgotten how to do them myself. It all came back pretty quick, but the longer I go without doing an exercise like that, the more basic stuff I may forget.
So to answer the question in the title, how important are productivity tools really? I would say they are and can be very important. Anything you can do as a programmer to make it so you can get more code written faster the better off you will be. Just make sure that you are not letting it degrade your skills at the same time. And, if you haven't given tools like ReSharper and CodeRush a spin, I urge you to do it. It's an addiction that you will likely want to live with forever.
So what does this have to do with productivity tools? The productivity tools I am referring to are things like the Productivity Power Tools for Visual Studio 2010, ReSharper or CodeRush. There are many examples out there, but those are 3 that I have personally used or use currently. Just as I am a minimalist with code, I used to be a minimalist with my IDE as well. I customized window layouts and such, but that was generally it and almost never installed any add-ins to Visual Studio at all. Having heard other developers rave about how awesome ReSharper is, I decided to give it a shot and I have to tell you, it's like crack for a developer.
I guess it's not totally like crack, because the addiction isn't always immediate. The first time I used both ReSharper and CodeRush, they got in my way. I was used to doing things my way and when either jumped in to help, it was annoying. I have probably installed and uninstalled both several times before I had that "ah ha" moment. If you have done much with ASP.NET MVC, you may notice that Visual Studio has great intellisense, even for web, but it pretty much dies when you are using code inside of a string. For example, I have a code block that I need to write a value from say, view data, to a url. Imagine the following HTML code:
<a href="/products/<%= productId %>"></a>The productId variable contains something that you need to append to the url and would probably be the variable in a foreach loop or something in that example. You get full intellisense as long as the <% %> code block isn't inside of a string like href="". I had been using ReSharper for a couple of days and noticed that with it I now have intellisense inside the strings! I can't even begin to express how awesome it was when I discovered that. (On a side note, I tend to be one of those people who has to find things on myself and doesn't read instructions so I might have found this if I had read some documentation. I still haven't read any documentation on ReSharper either...)
Suddenly one of my biggest pain points with doing web development in Visual Studio was now gone. It was a truly awesome day.
When it comes to the actual tools, both ReSharper and CodeRush are great tools, but I have found that it really just comes down to personal preference. I really can't qualify that one is "better" than the other based on anything other than just personal preference. Both JetBrains (maker of ReSharper) and DevExpress (maker of Code Rush) are very active in supporting the developer community so my recommendation would be to take both for a spin.
I have recently discovered the Visual Studio Productivity Power Tools which give some really cool things like tabs colored by project, unifying tabs vs spaces, a new cool add reference dialog and other cool things. I tried it on a whim one day and it seemed pretty cool, but once again didn't really seem like something I couldn't live without. It actually caused me a bit of trouble because I didn't realize that there was a new Add Reference dialog until the day after I installed it, which just happened to be during a presentation (oops!). During the presentation I was showing off StructureMap and needed to add a reference to it in a project and was presented with a dialog I hadn't seen before. And I have to say that the new one is really cool, it can just throw you off when you are in the middle of a presentation and had never seen it before.
In addition to add-in productivity tools, Visual Studio contains some awesome features, mainly the aforementioned intellisense. Intellisense is a wonderful thing and can really help you write code faster by not having to remember full class names or at least not have to worry about typing them. ReSharper's additions to intellisense can even further enhance this. However, it can come with drawbacks you may not realize right away.
Intellisense and other productivity tools can make programmers lazy. Don't get me wrong, I'm not saying that every programmer who uses them is lazy, but it can lead to lazy development. While they make some tasks super easy and require almost little work to do, they can also cause you to forget how to do those tasks without the productivity tools. I have heard several developers say (and I have said this myself) that they cannot live without tools like ReSharper.
As programmers, we must be careful to not become too dependent on those tools to the point where it actually degrades our coding ability. A couple of months ago, I needed to do a demo for someone using Mono. To show the cross platform capability, I created a bunch of code from scratch in a terminal using Vim. The first time I really struggled with certain parts because I was so used to Visual Studio doing them for me that I had all but forgotten how to do them myself. It all came back pretty quick, but the longer I go without doing an exercise like that, the more basic stuff I may forget.
So to answer the question in the title, how important are productivity tools really? I would say they are and can be very important. Anything you can do as a programmer to make it so you can get more code written faster the better off you will be. Just make sure that you are not letting it degrade your skills at the same time. And, if you haven't given tools like ReSharper and CodeRush a spin, I urge you to do it. It's an addiction that you will likely want to live with forever.
Productivity
Opinions expressed by DZone contributors are their own.
Comments