viernes, 13 de julio de 2007

Development Tools

Here is a list of open source software development tools that I can't live without:

1. Javac, the java compiler. Firstly because Java is multiplatform and WORA (Write Once, Run Anywhere), secondly because Java's dynamic proxies are a dream come true about writing less code to perform more and thridly because Java is open source, so it can be ported to any platform. Could you imagine developing all that software in Java only to find out 10 years later that your software no longer runs? Java is the best way to protect your investment.

2. Svn and ant. Svn let me store projects using version control and Ant lets me compile those projects out of the box, without manual intervention. This means all the time invested in individual projects is never lost.

3. TortoiseSVN: Let me do code reviews before check-in. TortoiseSvn is integrated with Windows explorer, so you just right click your project, select "commit" and it shows you the list of files to commit (and code review).

4. JUnit: Test all classes. Period. It doubles the amount of code you need to write, but programmers like to write code, right? Besides the code becomes untangled, or else you can't test it. You save at least 60% of the project time because you debug a lot less. Whenever a Java project is in trouble, I know for sure they are not using JUnit.

5. Eclipse: Those refactorings are breath taking. Besides that, it is a fine tool.

6. Insecticida: My own pet project, it is a task tracker that is iteration aware. I can know exactly how the project is doing. I can't live without it.

7. LuntBuild: You need to dedicate a machine for this monster, but it really pays off. It compiles and run the tests in your project after any check-in. If you use Svn and Ant, you would be irrational not to use Luntbuild, although it can be done: Just ask your developers to run ant before any check-in (which they normally do, don't they?) and after any check-in, to grab a brand new release of the project in a new directory and run ant. They beg for LuntBuild ;-)

8. Wiki: For achieving conceptual integrity in the project, all concepts must be written in the Wiki. Nice and easy! The only problem si that I haven't found a Wiki that I really like, so I will have just to build one.

9. Selenium: For doing automated functional tests. Defining tests is as complex as running the application while using the Selenium IDE plugin for Firefox. Any user can do it. Then you save the fiel generated by Selenium (it is an HTML) and run it using Selenium Core.

10. Power designer: Not open source, nor free. Very expensive, but worth it, this tool allows to model the database and generate the SQL script.

11. IBM Heap analyzer: Analyses the JVM heap when it cores dump. Core dumps are not fun, neither this tool.

12. Checkstyle: Checks the style of the code automagically. Fine tool.

13. HP JTune: Garbage collector visualizer. First you generate stats from the Java runtime, and then you analyze that data using this tool.

No hay comentarios: