Apart from all the IDE's and their features or plugins (and lets skip version control systems too), what tools do you use which help you with development? This can be almost anything, but please keep it computer related. Not that i have something against your dog being very helpful with bug-fixing, but i do like cats more ;)
A calculator which does hex<->dec conversion without needing 15 keystrokes
Things that help me:
- Code analysis tools (such as NDepend)
- Unit testing and coverage tools (xUnit, xCover)
- StackOverflow & Google for Q&A and reference lookup
- A good text editor (I use notepad++)
- Calculator that converts dec and hex
- Batch files for automating those pesky little repetitive tasks
- VisualAssist from Tomato software - a plugin to VS. Brilliant, saves days of work
- Reflector (.NET specific)
Proper hardware. Your workstation should be able to keep up with your thinking process, instead of lagging behind.
Some of mine are:
ClipX - clipboard manager. Makes it really easy to paste from history.
UnxUtils - to bring unix commands to Windows
xplorer2 - a powerful file manager
Textpad - for text manipulation (especially regex find/replace)
- Expresso, building & testing regular expressions
- NDepend, code analysis
- ANTS profiler, performance & memory profiling
- Reflector, code disassembly
- Google, general Q&A
- Stackoverflow, general Q&A
- Thunderbird, newsgroups
- VirtualBox and VMWare - for testing
- Google - for search information
DBWin32 (an external outputdebugstring catcher).
HexEdit (durrrr... hex editor)
IcoFX (icon editor)
WinDiff (file differ)
Depends.exe (dependency viewer)
GuidGen.exe (it generates GUIDs)
NotePad++ (for looking at log files etc)
Yeah, I'm just a native code dinosaur, basically.
A spreadsheet can be a very useful tool. You can use it to model algorithms (operation and performance), debug complex algorithms, log bugs, analyse performance data, track "to do" items, etc.
Quicksilver makes it easy to do just about anything!
Mac only unfortunately..
This is what I use daily (except IDEs like Visual Studio & Delphi and programming libraries & components):
- Mediawiki - for knowledge base
- TortoiseSVN & MS SourceSafe - for source code control
- Mantis - for bug & tasks tracking
- Dr.Explain - for help files & documentation manual writing
- TheBat - email & communication
- 7-Zip - file compression
- FAR - file & FTP manager & colored text editor
- Skype, GMail, ICQ - for instant communication
- Truecrypt - for data encryption
- MS Virtual PC
- MS Office - ... you know :)
Occasionally:
- GIMP
- Paint.Net
- Group Mail
- Inkscape
- and tones of utilities for specific tasks
Good tools are saving time and do not block me in any way:
e.G.
Source Code Tools
- GIT http://git-scm.com
- Gitolite (SSH based pseudo server for git) http://github.com/sitaramc/gitolite
- Trac http://trac.edgewall.org/
Test Tools
- NUnit http://www.nunit.org/
- PartCover http://sourceforge.net/projects/partcover/
- Testlink http://www.teamst.org/
Continuous Integration
- TeamCity http://www.jetbrains.com/teamcity/ (Commercial but free for up to 20 users/projects and 3 build agents)
- CruiseControl http://cruisecontrol.sourceforge.net/
- Hudson http://hudson-ci.org/
Build Tools
- good old make, rake whatever
- msbuild
Dev Express Code Rush
Notepad++
XML Notepad 2007
My Generation
RED GATE SQL data compare
Reflector
Ch Interpreter, which includes many *nix commands & utilities not found on Windows.
Red Gate SQL Toolbelt - Auto complete/Intellisense features in particular speed things up
Not specifically a development tool but:
Slick Run - To quickly launch apps (All those seconds will add up over the years)
Sometimes you just can't beat a good book relating to your primary coding language.
Paint.Net - It's free!
I use these almost every day while developing .Net Solutions.
Even when working in Visual Studio, sometimes it's quicker to copy a block of text into Emacs, run a macro or two on it, then copy it back.
Multiple monitors help immensely. It's great to have an IDE maximized in one monitor and use the other(s) for various tools or browsing resources, rather than having to constantly ALT+TAB back and forth. Jeff Atwood has written a lot about this topic.
Also, check out Terminator. Having multiple terminals open and connected to each other can be quite handy. A terminal for Emacs, one for man pages, and one for compiling programs and seeing output or running scripts -- all in one window. That's an essential setup for me when coding in C or Perl on my laptop.
Beyond Compare by Scooter Software. Invaluable comparison and merge tool. Have it linked to the version control system in favour of the diff and merge that comes with that. Would hate to develop without it.
Resharper Great coding assistance
NDepend Great static code analyzer
Reflector Great disassembler
NCover Great tool for code coverage by tests
TestDriven.NET Great VS addin for all test related task
DotTrace Great memory and performance profiler
A few not yet mentioned. Must haves for me working on Windows 7
- FileZilla - FTP manager
- Qttabbar - explorer enhancement (adds tabs!)
- FileLocatorPro - blazing fast search through source files (especially not your own). Comes with a free version called Agent Ransack
- Ditto - best (multi-)clipboard manager
- Notepad2 - as notepad replacement for blazing fast code previews
- Power Menu - for setting windows on top or making them transparent (eg. for overlaying two windows and comparing changes)
- PHP Storm - best PHP IDE
Ultra Edit - My favorite text editor
Dependency Walker - Valuble for seeing what is in your native binary.
For file comparison's, I use Compare It!. It's feature rich and also has a companion program called Synchronize It! that let's you compare, synchronize, etc. the contents of two directories.
The absolutely essential for me, apart from editors (read: vim), IDEs etc., is "meld", a diff and merge tool.
When you use it just once, you won't be able to live without it.
A couple other tools that help where I work:
Storyboard & Post-its - tracking stories and progress in a sprint.
Excel spreadsheet to hold the backlog and monitor priority of stories.
Bugzilla - open-source defect tracking software
Mercurial - Version control.
CPAN- used for getting perl modules
FireBug - used for debugging javascript css et cetera
Google Chrome Inspect Elements - used for debugging javascript css et cetera
Java web development:
Git - The BEST open source version control system
JUnit - For unit tests
JMock - Indispensible for mocking components. Once you know how to use it it's hard to give it up.
Eclipse - An excellent IDE
- vim (clipboards -- called registers, etc. all there)
- Jinja2 -- a Python macro system. It makes it a lot easier to deal with redundant languages, and is a quick metaprogramming language. I made a script so everything "name.jinja2" gets codegenned into "name" when I hit
F1
in vim. You can also call Python logic from Jinja2 templates for more intense metaprogramming. - google codesearch
- stack overflow, when answers cannot be easily found
- avoiding work whenever possible. Learning to be satisfied with libraries is hard. For example, I think many GUI libraries are littered with asynchronities, low-level details and thread difficulties. But unless your goal is to write a GUI library, use them.
(I'm still looking for a good DSL generator -- Python's SPARK works, but was too much of a pain for me to recommend).
On OS X my setup is generally something like:
- IDE: Netbeans/Eclipse/XCode
- Text/Quick coding: TextMate
- FTP: Filezilla
- VCS: Versions, Changes
- Office: Thunderbird, OpenOffice.org
Headphones (with or without music) - people bug me less when I have them on.
Balsamiq Mockups.... for the most important stage of any development project..
If you debugging websites, you cannot work properly without Fiddler (http://www.fiddler2.com/fiddler2/version.asp), and also Firebug.