Categories
Technology

How to be a faster programmer?

I am reposting this from my, now dead, blog. Hopefully this time I will be able to finish the series.

Note: This is not targeted at seasoned professionals who would find most of the stuff mentioned here very basic. Instead this is for beginners who unfortunately do not have good mentors.

Know your tools

To start of there is nothing more important than knowing all the capabilities of your tools, be it an IDE, a report generator, database, text editor or the operating system itself. This will help to:

  • Know what is possible, thus saving time wondering how to do something
  • Know what is the best tool to do something

Know yourself

Know your most productive times and plan your day around that. Avoid any disturbances, meetings etc. during your peak times. Get other things, like documentation or responding to mails etc., done during non peak time.

Learn something new

You are proficient in that language of your choice, great! But there are several others out there. Learn about them, it helps. Every language has it set of specialties, which is the reason it is surviving. But how does that help?

  • It introduces a new way of thinking
  • Make you explore the limits of the language of your choice
  • You know which is the best tool (language) for a task

Organize

Organize your desk and your disk. Keep thing that you need often in easy to reach locations, and remove all unnecessary things from there. This will reduce the clutter and make things easier to find. Include your mail box in this exercise. Organize your browser favorites so that the list of resources that you use often are easily available.

Automate

Great, following the advice above, you have a shortcut to your IDE, your folder containing the specs etc on your desktop or a panel. But these things are used only once a while. Think of the task you do over and over again and which take lot more that just double clicking. Here are a few things that help you save time

CODE COMPLETION: Any IDE worth its salt has a code completion feature. Learn the shortcuts, as well create your own. If your IDE does not have it either get a plug-in that provides it or ditch the IDE.

CODE GENERATION: Again lot of IDEs have it, learn it and customize it. There are other ways of code generation as well. My favorite is test manipulation is a editor that can do ‘regular expression’ search-replace. And if you do not know how to use regex, learn it now!

SNIPPETS: Keep a handy list of snippets that you use regularly, be it SQL queries you run often, or those 4 lines of code that is need to integrate your application with something else.

SCRIPTS: Doing the same thing over and over again? Consider writing a script to do it. For e.g. Unit test scripts, batch scripts to check in , check out, build, backup etc. And if you take my advice of learning about a few more languages, you’d agree that a few languages are better suited for such adhoc scripts.

Get a faster computer

Well there is nothing like a faster computer with loads of RAM to make you faster. This will reduce the build time significantly. And while you are it, add another monitor to it. But that’s easier said than done. So the second best approach is to make your computer faster.

There are several utilities that help you do that, so I will provide a few pointer only

  • Close unused applications
  • Disable unused features of your IDE / OS
  • Make sure your PC is spyware / virus free (or switch to Linux)

Learn to use the keyboard

There is no bigger time waster that using the mouse where handy keyboard shortcuts are available. Print the key combination of the tool you use most often and stick it right next to your monitor. Try to give up your mouse addiction. And if you can’t then there is no better cure that to unplug the mouse for a day!

Get help

Stuck with a problem that you just can’t figure out. Seek help. But know who is the right person to ask. Know the strength of your colleagues and leverage them. Don’t go ask someone just because he is your buddy, but because he has a much better chance of knowing the solution. Keep your questions succinct and to the point, so that you don’t waste a lot of time explaining the problem. And in the bargain diminish your chances of getting help the next time.

Work 8 hours a day

There is nothing you can’t do in 8 hours that you can in 10. So avoid long days, they will only reduce your productivity. Its a different matter to do long hours for a couple of weeks for an impending deadline, but making it an habit is a strict no. If you find yourself sitting until late everyday, step back and think of the reasons.

Are you wasting a lot of time in the morning because you don’t feel productive?

Talk to your manager if it OK that you come in late. And as mentioned above try to get not critical thing done when you do not feel productive.

Are you being over burdened?

If this is a constant thing, talk to your manager about it. If all fails get a new job.

Do you routinely under estimate the effort?

Learn from your past experiences. Get help while estimating. If all else fails, start multiplying the effort with a factor you think you normally underestimate by.

Do you have a lot of distractions?

Get rid of the instant messenger, the mail notification and buddies who have nothing better to do. Do not entertain personal calls. Save up all this time and leave office early. You will have enough time to do all social interaction after office hours, especially since you are able to leave office early.

And finally.. think!

I saved the most important bit for the last. Understand the requirements, think through the solution. Scribble on paper. And write code only when you have the complete idea of what you have to do. There is not bigger time waster than writing code for hours and finally scraping it because the requirement understanding / design / approach was wrong.

So what do you think? Leave your tips below.