A common problem for me while coding is having more than one unrelated, on-going task that I’m working on simultaneously inside a large (500+ file) project.
So for example, lets say I’m working on Bug #1 (or Feature, or Task, whatever you want to call it). Bug #1 involves editing 5 files: A, B, C, D, and E. This is fine, I’ll just open files A-E and get to work. There also exists Bug #2. Bug #2 uses files B, D, F, G, H … L, and M. To switch between working on Bug #1 and #2 (and vice versa) involves closing a number of files, then searching through to find the files used by the other Bug and opening those.
Now imagine for a moment, that I also have Bugs #3 through #24, with new bugs introduced or resolved daily. In addition to the pain-in-the-ass-ery of manually closing and opening these files, I also have to remember which files are associated with each Bug.
This leads to a common problem: When switching between Bugs/Tasks, I usually open a handful of files I know are involved, then extrapolating from there what the rest are. Long story short, this causes a great deal of overhead and un-necessary duplication of work (revisiting a bug from a week ago can seem like I’m completely retracing my way through files).
Enter Mylyn. Provided out of the box with the latest Eclipse installs, it provides a way to associate resources (usually files) with particular Tasks that you define. While this is pretty great on it’s own, Mylyn goes one step further: Complete integration with your Bug Tracker of choice (my company happens to use JIRA). So now when someone assigns a bug to me, it pops up in Eclipse where I can then easily switch to it, add files, and get to work. I can even comment, update, close, re-assign (etc, etc) from within Eclipse.
It only took me about 20 minutes from hearing that it existed to having it up and working on my development machine. If you find yourself annoyed when switching contexts, I highly recommend trying it out.