Tuesday, April 22, 2008

The top 10 tools every (Delphi) programmer needs

This week I was at a client site to talk about our ways of developing software. Our client uses Delphi for developing their software too and are contemplating using DevExpress' components for their next generation software.

I was stunned to find that (until now) they only use Delphi. That's it. No other support tools or component libraries (apart from the Virtual Tree List).

That meeting inspired me to list the tools I think are absolutely necessary or at least very helpfull in developing (Delphi) software.

1) A professional component library.

As you may have guessed DevExpress is my top one favorite. I hardly need any other components to implement a professional user interface. There is *no* way you can get better results for the amount of money you need to spend on the library. I would always recommend the VCL subscription. It will set you back $500-$1000 every year but you will get a ton of components for that.

There are a couple of alternatives that you might want to look into. I'm sure that I will get some recommendations in the comments on this post :-) Let the list grow...

2) A logging tool / component

Of course you can use OutputDebugString to print debug statements or you can write your own logging tool. But there are a couple of professional libraries out there that already have done that for you (and more than you probably think of at first) and that are extremely usefull.

My favorite is Raize's CodeSite, but SmartInspect is very good also. Again, I'm sure there are others out there.

3) An exception catcher

I don't know another word for this type of tool, but I'm using two actually. Madexcept (which is my favorite, and only $25 for a commercial license) and EurekaLog. It will help you explain exceptions, especially when your software is already in the wild out there.

4) A bug administration tool

There are a couple, but my favorite is FogBugz. It's reasonably priced and does the job very well. It also has a simple but very effectie planning and time tracking feature. It will handle registering the status of issues, mailing to clients, handling received mail, et cetera. Excellent stuff.

5) Version control system

Now, I was perplexed to find that the client I visited didn't use a version control system. I couldn't think of a workable environment without it. We are using Visual SVN Server and Turtoise as a client. Even if you are in a single developer environment you should take the time to set this up. Don't let the costs scare you: it's free...

6) Creating setups

Every piece of software should be delivered in a setup. There's a couple of free (and not so free) tools out there, but we are using Wise for Windows. That's a bit old actually, but does the job very well.

7) Build tools

Now, eventually you have to deliver your software. You can build your software and assemble and distribute the setup by hand, but invest some time in setting up a professional build tool. Once you got the right scripts set up, delivering your software is a snap. We use Automated Build Studio. I actually wrote a testimonial on that which you can find on their website. Good support too.

8) Debugging tools

I don't use many other debuggers from the one in Delphi, but if you need some special things (like profiling the performance of your application), you might want to look elsewhere. We are using AQTime but I don't need it that much to be true. It's only at special occasions that I start that.

9) Unit testers

Every other month or so I tell myself I have to develop some unit tests. I never get to it, but writing this piece makes me a firm believer in unit tests again. I will, honestly, setup some unit tests.... Really, you should do it to.

10) Documentation

Now, here's a bit of plugging our software. How could I ever use anything else but our software for that? Google does it, SAP does it, Microsoft does it, so I'd better use it myself too :-)

If you want more information on what our products can do to your documentation (not only as a technical documenation tool, but for a great variety of documentation needs), please don't hesitate to contact me.

That's my list. What do you have to add, strike or comment?

Bye,
Bart

12 comments:

Bob Swart said...

Apart from useful software, I would also add 2 or three screens with a resolution of 1900x1200 or at least 1600x1200 pixels.

And developers stay sharp if they also attend training on regular basis - if only to see how 'others' do it, or what the new hype is all about, or just how Delphi can be put to good use. And with training, you also need good documentation for all software you use, not just for the software you write yourself ;-)

ajasja said...

What I use (as a single developer):


1) None. I wrote my own grid (based on TThemeDBGrid)
2) Wrote my own. Uses the debug window from GExperts.
3) madExcept. (It’s excellent!)
4) trac or Unfuddle
5) SVN or Unfuddle
6) InnoSetup (It’s the best! and written in Delphi!)
7) Batch files or rake
8) Delphi
9)dUnit with dUnitLite
10) None. There is Pasdoc out there.


What you forgot and what I absolutely couldn’t
live without are IDE add-ins:
GExperts
DDevExtensions % DelphiSpeedup (http://andy.jgknet.de/dspeedup/index.php)

Price for everything together 25$ for madExpect + donations :)

Unknown said...

On the Delphi Wiki there is apage full good tools for Delphi programmers:

http://tinyurl.com/6s9zfk

Unknown said...

Some of the add ons you mention are totally, but totally unsuited for more complex development environments.

In a BIG shop, you write your own framework, to keep developers at bay, for one (the VCL can distract, give 'm just what they need), or because you need a different middleware altogether (f.e. industry standard TIBCO Rendezvous doesn't come (properly implemented) from 3th parties)
And MadExcept is a piece of shit that can be used for debugging purposes but NOT for one of its intended uses: to deliver in/to your clients software. BIG NonNo. It is far too infringing, unstable and causes more problems than your helpdesk can solve unless you upgrade it to proposterous size. And, because of the information it leaves all over the place (including clientside) it is a mayor security risk.

Just my five cents ;-)

ajasja said...

>In a BIG shop, you write your own framework...
Hehe, funny:)

>And MadExcept is a piece of shit...
Works for me. What version are/were you using?

Bart Roozendaal said...

We keep 'ourselves at bay' by specifying guidelines and a set of VSL components, based on and using DevExpress controls. Organizing software development should *not* restrict developers, quite the opposite. Make sure your developers can try things freely and you'll get more process.

About madexcept: I've been using it for years and not in a single instance I found that it was the cause of a problem. Since you're quite absolute about this, are there some specifics that you can give about the problems with madexcept?

Bart Roozendaal said...
This comment has been removed by the author.
Unknown said...

I used Wise in the past. Good, but once you've used InnoSetup you'll never go back. Especially if you need Pascal scripting.

As for must-haves, ModelMaker Explorer definitely rates above GExperts.

TridenT said...

For documentation of code source, I made DelphiCodeToDoc
http://dephicodetodoc.sourceforge.net/

but you also have commercial Doc-o-matic
http://www.doc-o-matic.com/

Chris Miller said...

I'll second what Bob had to day, having two monitors makes a big difference in development work. Being able to step through thode on one screen while running the app on another feels so natural, you can't imagine doing it any other way.

Another tool that saves me a great deal of time is FinalBuilder. I can create QA ready builds that will go from source control to installer and be able to launch that build from a web page.

Imagine said...

MadExcept: no issues here - it's saved me on more than one occasion.

SetupFactory: you mentioned InnoSetup, I think SetupFactory is by far better.

John

Senthil Kumar B said...

Beyond Compare too is Good