5 Tools Every Developer Should Know

To be an effective developer you need to be organized, and you need to be efficient.  These are 5 tools I use on a regular basis to help plan my day, communicate effectively, and code efficiently. If you find yourself bogged down by your busy workload, try one of these to streamline your workflow.

1) grep

I know, I know, no one uses command line anymore.  Well I do, and if you’re dealing with servers, you probably do too.  Weblogic Server is a powerful tool, and the log viewer is an excellent way to expose diagnostics while still controlling access to the server.

But when you’re developing against your own server, you’re going to want the power and speed of a tool like grep.  It’s fast, it’s versatile, and let’s not forget the Regular Expressions! I use grep all the time to search through large codebases quickly, and find I am able to filter and narrow my results much faster than using a GUI search tool.

Even if you don’t use a Linux system on a regular basis, there are similar tools like findstr for Windows, or tools such as Cygwin, which allow you to use a Linux-like syntax and toolset on a Windows machine.  While GUIs are nice, sometimes you just need to know command line.

2) Notepad++

Eclipse is everyone’s Java IDE, JUnit is impressive, JDeveloper offers tremendous support when working with Oracle technologies.  Why would you use anything other than a feature-rich IDE?

#1 - Performance.  All those features come with a cost.  Sometimes you just need a slim, robust editor to make a batch of changes across multiple files.  Tabbed editor windows, syntax highlighting, tons of plugins (including code completion and FTP, to name a few), Notepad++ is my go-to when I don’t want the overhead of a full IDE.

And just like grep, let’s not forget Regular Expressions!  The find/replace functionality using regular expressions is impressive, and let’s you perform massive refactorings quickly, efficiently, across multiple files simultaneously.  I’ve seen this functionality in various IDEs, but none quite to the level of what you can do in Notepad++.

3) GIT

Nothing needs quite as much organization as code.  Not only does it need to be organized well in the filesystem, it needs to be organized well in history, and between developers.  That means source control.

While we have clients utilizing everything from TFS to SVN to everything in between (or nothing at all!), for our internal projects we use Git.  It’s lightweight and flexible, making it easy to get up and running.  The distributed nature of Git allows for just about any workflow you can think of from a tightly controlled and centralized system, to a completely distributed setup where developers are sharing code directly with each other.

Utilizing GitHub or BitBucket, self hosting using a server like GitBlit, or just running locally off of your machine, Git is a great way for every developer to start using source control on everything they write.

4) Google Drive

Stepping away from the code oriented tools, we find ourselves looking at communication.  Simply put, spreadsheets are a great way to track lots of things, but emailing them can become a hassle. Who has the latest version?  Was everyone included on the email?  Which of the 7 versions on my local machine is right?

Google Drive gets rid of that with shared documents you edit collaboratively.  Add comments, see revision histories, set editing and viewing permissions, you name it.  There are still some features of the more established desktop tools by Apple and Microsoft that aren’t quite there (Microsoft Excel and Apple Keynote come to mind), but for most documentation, switching to Google Drive saves overhead and headache.

As a bonus, with Google’s Apps Script, you can even build in custom functions to a document, or create a standalone web service or site which integrates with your Google Apps.  Apps Script APIs cover 11 different Google Apps, including GMail, Documents, Spreadsheets, Sites, and more.

5) Asana

What do I have on my plate?  Where did I leave that project I got roadblocked on last week? What’s left on this project?  Who’s going to finish this assignment?  If you don’t have a good answer for these questions, you’re in trouble.

Asana is a tool used internally at Zirous for a number of our projects.  I use it to plan out daily tasks and assignments within my projects, but also for the other non-project tasks that are a part of many developers’ days.  One-on-one’s with my boss, introducing the interns to Git, even writing this blog post; everything goes into Asana.

With tasks, subtasks, due dates, assignees, followers, descriptions, and comments, Asana is a robust task tracking tool which helps to manage a team, a project, or just your busy day.  If you want to extend the functionality, check out the API and write a tool to integrate it into your existing systems.

Questions? Comments? Other tools you like to use? Leave us a note below!