Start a blog post, type some words.  It's crap, revise. Type it up again, brain freeze. Sigh.

Frustrated, computer errors don't help. Unbelievable. Should I check my email?

One thousand projects and priorities. Kids need attention, but I'm busy not producing anything.

To much pressure, inner critic too critical. Damn, vacation failed. Still cynical.

I've got an idea for a cool new app! Start coding, give up before writing a single line. Crap.

Energy sapped, no explanation. Eyes blurry, body aches. Sitting endlessly, body wasting.

But I've no time to wallow. The water from the fire hose demands a mouth to swallow.

Need to work harder, maybe smarter - I'll start tomorrow.

Why cant someone just make a good IDE for PHP?


I think the first IDE I ever used for web development would have to be Adobe Dreamweaver (née Macromedia). Ok, so maybe it was Microsoft FrontPage, but that shouldn't really count. Dreamweaver for the novice held the promise of being able to easily create DHTML animations and offered WYSIWYG perfection for creating web interactive pages. All of the deployment you needed was built in (FTP) and you did get some sense that it was the best product on the market for doing web work (in fact it still might be for your average designer). This post is about my experience moving away from the oft-maligned program and some lessons learned in my quest for the perfect IDE.

Ignorance is Bliss

I wrote a ton of PHP code in Dreamweaver. In fact, I learned PHP while using Dreamweaver to edit joomla templates back when I was a "website manager". I went on to write thousands of lines of code in Dreamweaver for about a year into my programming journey. Eventually though, I started to feel like I was missing out on something. I decided to search for dedicated PHP development software and realized were at least 10 IDE programs available for PHP and clearly Dreamweaver was not among them. I decided then and there that I needed to move forward and ditch my old reliable Dreamweaver.

As a novice, it was an overwhelming experience even trying to pick an IDE. I was writing a large website with CakePHP at the time and figured that I would look around and see what others in that community were using. For the record, candidates included: Komodo, NetBeans, Eclipse PDT, Zend Studio, PHPStorm and a few more. I downloaded a few different programs and had a difficult time evaluating them because after all, how would a beginner know what made for a good IDE? Additionally, some of these programs cost money and I did not have a penny to spare in those days. So it had to be free.


I settled on NetBeans initially. I had heard of this nifty feature called "code-completion" and some people said that you could use it to auto-complete model class relationships and methods for CakePHP. I had mixed results with that, but in time code-completion in general was quickly becoming something that I could not live without. NetBeans also had built-in FTP and SVN integration. That was neat, especially since I had begun using version control with TortoiseSVN recently (it seemed important to learn). Eventually I found the auto-format code button, and realized my coding style was pretty sloppy compared to the corrections it was making.

I gave NetBeans a daily workout for a good year or two, but then I decided wanted to make mobile apps for a living. After learning that I needed a mac to make iPhone applications, I decided that I would have to start out with android. Of course this required me to learn Java, and also introduced me to Eclipse. Once I started using Eclipse in a Java context, I was starting to feel that net beans was lacking a ton of configuration options that eclipse offered. So I downloaded Eclipse PDT, which is basically a free version of Zend Studio.** Now I felt powerful**.

The 7th Circle of Hell is called Eclipse

When I started at a new company, I was assigned a pretty low spec machine to do PHP development work on. The codebase I was working on was also massive. Eclipse couldn't keep up. Things were always building, indexing or validating! I could count on Eclipse crashing at least five times a day. Eventually I began fighting back by disabling validators and automatic project building. I was turning off feature after feature and started to long for the good old days of Dreamweaver.

Once my workstation was upgraded to an HP Intel i7 with 12 gigs of ram, most of my crashing problems started to go away. I also tried several favors of eclipse like Aptana, and finally ended up using Zend Studio on a trial basis. Zend Studio seemed at least a little bit better than Eclipse PDT, because it had refactoring features and a more advanced formatter amongst other things not included with PDT. I found zend studio to be a bit more stable, but ultimately the refactoring featurs never seemed to work for me, and the code formatter was just crappy. Now I found myself spending more time using the backspace, enter and delete keys to correct sends formatting wonkyness than actually coding. That is hyperbole, but I was starting to see why all the Ruby guys used Textmate or vim.

It's just a glorified text editor

I hate vim, and I'm not on a mac so textmate is out. So along comes Sublime Text 2. I started using Sublime Text casually on some of my hobby projects and I started to understand why people preferred a lighter text editor. Sometimes I just felt like the editor was reading mind and I never had performance issues. Still as much as I enjoy Sublime Text, I didn't find that it gave me a productivity advantage overall. I personally don't want to hop around my computer for different tools to get my code tested and deployed, which I don't do as often with an IDE. Additionally, the speed of searching for code in my IDE is lightning fast and I could never achieve those results with a text editor.

So I was stuck with Zend Studio and i was afraid. I knew I was one corrupt workspace away from disaster. But it wasn't all bad. I had a few macros, a few useful plugins and my workflow was sufficiently fast. I could live with this. Things went along fine for months, until I went to a meetup of the South Florida Php Users Group. There I was introduced to PHPStorm. Just another IDE I thought to myself, as I debated the merits of switching from Eclipse. I was so damn wrong.

Salvation is a (PHP)Storm

I tried out PHPStorm for a free 30 day trial. Several ex-eclipse users can be wrong right? Besides I had some side projects to hack on and eclipse was borked on my laptop. Once up and running, PHPStorm made me a quick convert. Everything just worked better. The code completion was faster and more accurate, the settings easier to manage. Unlike Eclipse PDT, Zend Studio or Aptana, it didn't feel like someone had grafted to php support onto a IDE written for programming in Java – although I'm sure PHPStorm is entirely based on IntelliJ IDEA.

Features starting popping up all the time that would pleasantly surprise me: Zen Coding support, inline string language injection, doc block validation and more. PHPStorm had all of the stuff Zend Studio gave me, but is mostly better implemented. Stability is also vey good, as I haven't seen a crash yet in two months. My i5 laptop did have a bit of sluggishness on a really large project, but I tweaked a few settings and everything seemed reasonably fast again. I still run in to some annoyances with the code formatter and some incorrect code syntax warnings, but therein lies another lesson. I don't think an IDE or any tool for that matter is free of blemishes.

Always end on a Cliché

Overall I think I will stick it out with PHPStorm for awhile. Looking back I realize that IDE's have been a constant annoyance and yet have prompted so much growth and development in my skill level. I just plain work faster and write better code with an IDE. I also think that the problems I have ran into with IDE's are true about software in general. We search for better solutions and always fall short.

I am reminded of a famous quote:

Perfect is the enemy of good* –Voltaire* The reality is that I could probably still get a lot done in Dreamweaver, but it is the journey on the quest for improvement that can help us truly master our craft.

Fighting Fear-Driven-Development w/ PHPUnit Slides


I recently presented on one of my favorite topics at my local PHP user group, the South Florida PHP Users Group. The talk was meant to be an introduction to PHPUnit - I chose to dedicate some time to describing the need for automated testing. I think many PHP developers have a hard time seeing the benefit of unit testing. My main point was that developers already do tons of manual testing, so why waste all those precious hours when you could simply get the computer to handle it for you.

These are they slides, feel free to grab them from slideshare. I will gladly answer any questions people have.

explosive web programming MODERN CODE TACTICS

by James Fuller