Top 10 Tools and Productivity Tips for the Solo Developer
As a solo developer myself I've come to use these tools and techniques to help save me time and be more efficient. I prefer tools which are both cheap and simple so the tools I present here will have an emphasis on both. Besides, if you're a solo developer you need all the time you can get which means not trying to figure how to use the tools that are suppose to make you more productive.
#1 Time Tracking
There are tons of online time tracking tools and sometimes it's tough choosing one over the other. I tried several before settling on Harvest. It does everything I want, nothing more, nothing less. What's even better is that there's a free (as in beer) version which includes: tracking 2 projects, 4 clients, and unlimited invoicing for 1 user. If want to have programmatic access to Harvest they even have an API. Have an iPhone? No problem, you can track your time anywhere with an iPhone which is also included in the free version.
#2 Issue Tracking
If you prefer not to host your own issue tracking software, I suggest Unfuddle.com.
If you like to get your hands dirty and hosting your own issue tracking software, nothing beats JIRA from the folks at Confluence.
Both Unfuddle.com and JIRA have free versions and are very easy to use and install in the case of JIRA.
#3 Source Control
If your working on closed source or the source is the intellectual property of a client, then nothing beats setting up a local source repository in which case I suggest Subversion. It goes without saying that it's crucial to also setup a daily or weekly backup schedule.
#4 Consistent Time Schedule
If you are working on a project that has a deadline, then it's important, especially when you're going solo, to keep the momentum going. One thing that helps a lot for me is having a consistent schedule and sticking to it. For instance, I find that I work best and have the least amount of interruptions in the early morning. I'm not necessarily a morning person but I find that I'm more refreshed and have the energy to work 2-3 hours in this time.
#5 A Text Editor That Works For You
Whether it's a full blown IDE or a simple text editor, find one that works for you and your productive with. I tend to use IntelliJ IDEA for my IDE. I also use TextMate when working on the Mac and Notepad++ when I'm on Windows. TextMate and Notepad++ work well for quickly opening files for a quick look or edit while IntelliJ IDEA works well for long coding sessions and refactoring support. Again, these are the tools I prefer and they may not necessarily work in your environment.
#6 Automate Everything
Time is money! A lot of what a typical developer might do during a project can be repetitive and tedious. Whenever I find myself doing these types of tasks, I stop to think about how the task could be automated. For instance, deploying a new release of software to a remote server. There might be several steps involved but usually they're all done in sequence the same way every time. This would be a prime candidate for figuring out how to bring yourself away from the process so that you can work in parallel on something else.
Once you start thinking about everything you do and how you might automate it or make it faster, it becomes natural and you save tons of time that you could be using to fix bugs!
#7 Outsource When Necessary
Just because you may be going solo on a project doesn't mean that you need to actually do everything. In fact, it's probably better that you don't. If you have no idea how to design a logo or layout a web page, chances are the project won't look professional. You may have implemented a great new algorithm that will blow away competing products, but if the website or brochure you use to sell your shiny new algorithm doesn't look professional you have wasted your efforts.
#8 Don't Re-invent the Wheel, Leverage OSS
If you know there's an open source library that does all or even 50% of what you need, don't re-invent the wheel by starting from scratch. Download the library and extend or enhance it to do what you want. Even large corporations with near unlimited resources recognize the value in leveraging open source software. In fact, a lot of large corporations came to be by producing commercial products which use open source under the covers.
#9 Communicate Effectively
By communicating effectively with your clients, you're making sure you are meeting (or exceeding) expectations and prioritizing the right aspects of a project. Communicating effectively means answering AND asking questions and being proactive about initiating communication. Keeping in regular contact with your client shows them that you on task and making sure that their needs are taken care of.
Beyond the usual ways of communicating like email, an excellent tool to have at your disposal is Skype. You can IM, talk on the phone (hand's free with a headset), or teleconference all done via your internet connection so there's no extra phone line required.
#10 A Satisfying Workspace
It makes sense that if you spend hours at a time in the same chair, at the same desk, in the same room, that you should be comfortable, right? If you're not comfortable then you need to take steps to make sure you are whether it's buying a new chair or placing a book under your monitor.
Now that you're comfortable, you realize that you keep getting distracted by reading blogs and chatting with friends. This may happen a lot if you have to wait a while for your program to compile or your new release is taking a long time to upload to a server. So budget permitting, you should make every effort that your workstation and internet connection are as fast as possible.
Being comfortable for long periods of time in front of a fast workstation with the right tools and techniques at your disposal makes for satisfying and productive solo development!
Feel free to share your favorite tools, tips and techniques for staying productive.