Writing code requires two important things: creativity & discipline. The creativity to create the unknown, unexplored, exciting parts of software. And the discipline to create the dull & all-too-well-known parts of software / documentation.
You may come up with new ways (or use frameworks) to reduce repetitive work. Effectively beating discipline with creativity. But boring stuff will still always be there in some form. And on days when creativity is low, you may need to tap into that jar of discipline so you can still be productive, by doing things you never feel like.
But every now & then, there is a day when both creativity & discipline are low. To prevent such a day from going to waste, I figure I can do 3 things:
- Drink coffee, get back at it
- Drink some more coffee, get back at it
- Use this day to learn & invest in tools & skill
Recently I had a rough night involving little sleep & one or maybe two drinks. I'll spare you the details. The next morning my two coding fuels: creativity & discipline were at an all-time low. I ended up repeating steps 1 & 2, but they just didn't cut it ; ) It was clear that this day was not going to be my best coding day in the world ever.
So I turned to step 3 and decided to invest that day in learning tools. This may not result in immediate production, but that's why it's called investing ; ) I'm now learning & investing in things that will hopefully increase my productivity in the future. As an added bonus: on a day otherwise lost.
A programmer's primary tool is his IDE. The end-product is in your head but the tool will help you craft it. Good tools will help you craft it better or faster. Or both. Readers of my blog may have noticed my love (1) hate (2) (3) relationship with my current IDE: Eclipse PDT. We have our ups & downs, this has never changed. Winston Churchill once said:
"…democracy is the worst form of government except all the others that have been tried"
This best illustrates how I feel:
"Eclipse is the worst IDE except all the others that have been tried"
But now that blog posts on a 'new' 'radical' IDE called 'NetBeans' have been clogging up my RSS reader, and I had an entire day of coffee & learning ahead of me, it was time to give it a try.
NetBeans is an IDE by Sun and has been around for while. What's new in 6.5 is it's support for PHP. That's what makes it interesting for me.
The base install is no different from Eclipse PDT. Download the archive, extract it, run it. That's it.
What complicated things with Eclipse were the steps afterwards: adding CSS support, adding SVN support, having to struggle through their ever so poor plugin & update system. Manually selecting mirrors & dependencies. Not to speak of performance issues.
And if a feature is missing, the NetBeans plugin system Just Works. Go ahead & install additional features. No need for a science degree there.
Code completion is fast & accurate. Manuals are integrated. Existing Eclipse projects can be imported, no need to keep separate workspace directories. Just switch back and forth between NetBeans & Eclipse (or your other IDE of choice) until you've made up your mind.
If you want a complete list of features just check out one of many other blog posts about NetBeans or checkout a screencast by the creators. For me it suffices to say: It's like a lightweight Eclipse, with a couple of very powerful additional features (all out of the box), and it Just Works.
In fact, I wasn't prepared for such a smooth ride. I continued in fully working environment, learned some keyboard shortcuts, played with the refactoring tool (awesome). And maybe it was the coffee, but before I knew it, my creativity kicked back in and I even got some serious work done that day :) Who would have thought.
What to Do Next
Pictures say more than a thousand words. So checkout some of these links:
- SQL code completion in the PHP editor
- Demo of the PHP distribution of NetBeans 6.5 - Part II
- Marking occurrences improved
Want to give it a shot? Here the download link. You can choose your flavour: Java SE, JavaFX, Java, Ruby, C/C++, PHP, or just All.