Critical Tools

Some tools are better than others for a developer.  These are the ones that allow for significant gains in productivity, improvement in quality, and reduce our frustration.  Better yet, proper use of these applications can separate Developers from Coders.  There are a couple of areas where any good developer will have a go-to tool early on and get better from there.  These are the areas where you want to “choose your weapon” wisely.

  • Editor/IDE
  • Debugger/Tools
  • Issue Tracking
  • Document repository
  • Version Control
  • Group Communication
  • Mail client
  • Database Tools/IDE

There are other tools you will use.  However, these are the ones you will use the most.  Thus, these are where the right tool will make the most significant impact, or a poor one will hamper your productivity.  Some of these are obvious while others may require some convincing.  Let us look at each one in turn.

 

Editor/IDE

As essential tools go, this is the one used the most as a developer.  Although this combines editor and IDE, I highly recommend you have at least one of each that is your “go to” for coding tasks.  An IDE will provide some useful features, but there is a cost of resources and startup time.  A good editor may have a few critical elements but will be smaller and faster to load.  Think of owning a car and a bicycle.  Each has its purpose and gaps that the other fills.

The IDE

Your IDE choice will most likely (and should) reflect your primary development platform.  Visual Studio is excellent for Microsoft platforms and .NET development.  Eclipse is the tool of choice for many languages, and then there are others that pop up depending on your needs.  A good IDE will help you with your primary coding and other ancillary jobs as well.  For example, Java is not all you use in developing web applications on that platform.  There will be javascript, HTML, CSS, and other languages that need to be supported.  Integration with version control is always helpful, and database tools can be a boon.

An Editor

A good editor will cover a wide range of uses while still being lightweight.  You will often have this running along with your IDE, so you do not want to bog down your system.  This tool should make it easy to work with text files, huge files, and allow you to create macros.  Most IDE editing features have limits that will cause issues if you have to load a 100MB file.  A good editor will let you work with these sort of documents.  You may think that is rare, but I have been amazed at how many times I have wanted to open a large log or data file to do some research.  That being said, the ability to see line numbers and jump to a specific line is always a useful feature of an editor.

 

Debugger/Tools

Most modern integrated development environments include a debugger of some sort.  That is part of what makes an IDE such an essential item in our toolbox.  However, including a tool does not mean we automatically know how to use it.  It also does not follow that every project we take on will be set up correctly to utilize it.  That means we sometimes have to fall back on other tools.

A good debugger is going to provide you some key features.

  • Breakpoints and ability to step through code
  • Variable evaluation or insight
  • Stack trace/Position in the code

A good developer gets familiar with each of these areas.  Yes, there is always the print output to the console or log file approach to debugging.  However, that approach is way too slow and burdensome for professional development.  A good debugger helps you take the guesswork out of troubleshooting pesky code.

I have not run into many students that were taught the use of debuggers in college.  There was a general introduction but not some good examples of how to use a debugger to figure out problems and tune their code.  This missing education is an oversight; I think because good debugging skills (and use of these tools) is a hallmark of a good developer.  It is one of those distinctions that make a developer instead of a coder.

 

Issue Tracking

Reporting bugs and assigning work is an essential part of any job.  Software development is not any different.  However, there are countless ways to track this information.  I have learned from experience that some approaches are far superior and some are cripplingly inferior.  The right tool for tracking issues and tasks will help a developer stay organized and focused.  This is a critical facet of being productive.  There are too many ways to get off track when your tasks are vague, ill-defined, or poorly communicated.

Issue tracking tools are often decided by your employer.  However, I have found more occasions than I would have thought where a software shop has no formal way to track issues.  Several more have a simple process such as a spreadsheet or maybe a wiki page.  In these cases, any tool you use is likely to be an improvement of the process in place.  You might also find that an application for your personal use is worth any extra time required to double-enter tasks.

A useful issue tracking tool is to a developer what a customer relationship management application is to someone in sales.  The goal of this tool is more than a to-do list.  You should be able to quickly make notes related to the issue, attach code or documents, track progress, and refer to historical information.  If this sounds sort of like a version control tool that is a good thing.  Issue tracking works well with version control and integrating these functions can help speed development while improving quality.  For an excellent example of this integration, check out the Atlassian tools.

 

Rob Broadhead

Rob is a founder of, and frequent contributor to, Develpreneur. This includes the Building Better Developers podcast. He is also a lifetime learner as a developer, designer, and manager of software solutions. Rob is the founder of RB Consulting and has managed to author a book about his family experiences and a few about becoming a better developer. In his free time, he stays busy raising five children (although they have grown into adults). When he has a chance to breathe, he is on the ice playing hockey to relax or working on his ballroom dance skills.

Leave a Reply