Here are a
few recommendations with respect to the projects. Feel free to develop the
projects in any way you want, using whatever development tools you're
comfortable with. But some of this advice might be helpful.
Use some sort of development
environment. Syntax highlighting, project navigation, and debugging utilities
are the relevant features here. There are a multitude of options available,
including:
- Eclipse, which is quite
nice for Java development, assuming you have access to a workstation with
excessive memory. For extensive development, this is my tool of choice.
- Emacs is quite popular in computer science
circles. JDEE is recommended.
- Vim is the natural foil to Emacs, but doesn't have anything fancy for Java in
particular. Despite the arcane interface, skilled hackers are known to be
inordinately productive with this editor.
- For Win32, there are a multitude of
niche programming text editors, including UltraEdit32, Textpad, et ceteras.
Source
control is a way of maintaining various versions of your code. Think about the
way you program. Do you sit down and write an entire program in a single night?
Unless the project is trivial, the answer is probably no. Using source control,
after implementing certain features, you can create a "check point"
in the code. Continue doing this as development progresses. Why is this useful?
- It helps in debugging. If you find a bug in your code, it
might not be immediately clear when the bug was introduced --
especially if features tend to overlap. If you encounter a bug, you can
revert to previous versions of the code & check to see whether it
persists. Much easier than pouring through thousands of lines with no
direction!
- It provides a natural backup mechanism.
rm
can be pretty unforgiving at times.
Various source control utils:
- Subversion (SVN)
is the source control system of choice du jour.
- Concurrent Versioning
System (CVS) is the next oldest; SVN was essentially created to
address shortcomings in CVS
- Revision
Control System (RCS) is even older. Both CVS and SVN are tailored to
environments where multiple people are working on code; RCS doesn't
really care about that. So despite RCS being ancient, this might be worth
considering.
Might I note that for SVN and CVS,
exist very nice GUI tools called Tortoise[CVS|SVN]. Back