Agile Zone is brought to you in partnership with:

Dror Helper is an experienced software developer has written and designed software in various fields including video streaming, eCommerce, performance optimization and unit testing tools. He is passionate about programming best practices and all things software development, and has been a guest presenter at several user group meetings and ALT.NET events. Dror's blog can be found at http://blog.drorhelper.com where he writes about unit testing, agile methodologies, development tools, programming languages and anything else he finds interesting. Dror is a DZone MVB and is not an employee of DZone and has posted 49 posts at DZone. You can read more from them at their website. View Full User Profile

Be-Aware of Productivity Tools

06.25.2013
| 4036 views |
  • submit to reddit

In his post Beware of Productivity Tools Mark Seemann explains why he shun from using so called “productivity tools” – tools like Resharper, CodeRush, JustCode or any other tool that is runs on top of Visual Studio in order to enhance development.

While I don’t know Mark personally, I’m in the middle of his book on dependency injection and I enjoy reading his posts – which I find well-written and enlightening.

Unfortunately this time I think he missed the point…

It’s not about productivity tools

I find it difficult to discuss “productivity tools” since the term productivity is misleading. Instead let’s put things on the table – I’m a  Resharper user, in the past I’ve used CodeRush and in the distant past (and probably near future) used Visual Assist. All these tools were not used for productivity's sake. I’ve used them to perform two things: navigating my code and refactoring my code. Some of the tools perform additional tasks for me - i.e. run unit tests, background compilation, but most of the time I find myself returning to these two features.

So instead of calling them productivity tools – a category which my alarm clock belongs to – let’s discuss the merits of the tool instead of the abstract term of “productivity”.

It’s about getting the job done

There are two points in the post that I agree with:

  1. It’s difficult to measure if a developer is “more productive”
  2. Developers are doing more than just writing code.

When I do use Visual Studio without any tool enabled I find myself looking for files, classes and methods while using my mouse to traverse the solution tree. Instead of thinking of the problem I’m trying to solve, I play hide and seek with my files. I have Resharper installed on my machine and I use it when writing C++ code just because I can still use it to locate files without my hands leaving the keyboard.

As for refactoring these tools functionality exceeds the built in refactors and the find-replace dialog which leave you depending on compilation or (god forbid) runtime errors.

I can perform these tasks quickly and with precision, which means I have more time and focus to do the more “interesting” tasks – solving actual business problems.

It’s about writing better code

But there is more than that – more often than not I’ve seen developers shy from a certain refactor just because it’s difficult to execute by hand without fault.

The tools above can do amazing things from encapsulating code in a new method to renaming method/variable across multiple files and technologies (fore example code and XAML).

My boss and/or client would probably care less about how I call methods or if my code is readable if each time I change a method name it takes 1 more hour of testing to make sure I didn’t break anything.

I’m sure that a good developer would refactor his code to perfection (or he just wrote it perfectly) but lack of proper tooling (I’m looking at you VS) cause the average developer to refactor less and write less readable code.

Without proper navigation you get a certain solution organization “method” – when it’s hard to find specific classes developers tend to write all of the at the same file where a simple “find” command would suffice.

A word about zealous users

Some people love a certain tool and take it to the extreme. If a member of the audience complain that Mark has failed to use Resharper during his talk at NDC – I just feel sorry for him.

I use Resharper at work not at my talks!

Showing code during a session is difficult task to begin with – it’s hard to teach code in a limited time frame with a large audience – if I start to jump around with my “keyboard tricks” I would probably loose most of the listeners.

Conclusion

I don’t think that tools create dumb, lazy developers. I think that the lack of tools create frustrated one.

I think mark got it right when  he wrote:

I'm writing because I think you need to be aware of the issues presented here. It might make you a better developer if I can get you to actively and consciously consider a choice you may have taken for granted.

And I couldn’t agree more – don’t use Resharper just because some Guru told you so – do it if it helps you.

The opposite is also true – some developers prefer not to install additional tooling on top of Visual Studio due to many reasons from performance considerations to plain “I’m just using official MS products” – please don’t do that, try them before you decide - it might make your work easier.

Published at DZone with permission of Dror Helper, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)