Before you worry about making it faster/smaller/smarter/prettier ... the first thing is to get it working *at all*... the rest qualifies as improvement.
Generally what happens is you will notice certain things about your program while it's running and, of course being the programmer you know where to look in your code... so you go in and do little fixups... Over time you will achieve your goals.
This is what kills me about the RAD crowd... they have tools and code blobs to assemble almost any program in a matter of a couple of days. But lets get real... how much testing and improvement do you think goes into that code... They are, essentially unleashing untested code onto their bosses and customers...