It’s been an interesting few weeks because I’ve been fighting with my development tools. Years ago I decided on Netbeans because at the time it was the best PHP IDE I could find. Then I kind of got stuck there. You know the old “If it ain’t broke, don’t fix it” routine.
Then I went to WordCamp and met a zillion developers all of whom were kind enough to share their workflows with me when I asked them. I got a lot of new ideas and played around with different workflows and tools and tried to see how I could fit them into my own processes.
Netbeans had most of the features I needed, Git, SASS compiling as well as automatic FTP upload because I don’t develop locally.
Here’s a breakdown of my own workflow and the tools I tried and how they measured up.
My Requirements from an IDE
I need an IDE that will:
- Compile my SASS files automatically whenever I save.
- Pull, push and commit to Bitbucket.
- Upload changes quickly to my server.
- Highlight errors.
- Be portable so I can use it on my work laptop as well as my computer at home.
I don’t develop locally for the simple reason that I don’t have time to be constantly shifting WordPress installations back and forth between servers. If I’m building a new website with a new domain then I’ll install and build the site right on the domain (behind htaccess security). This makes it really easy to publish.
If I’m rebuilding a site, then I’ll develop on my server with a domain name such as thenewsite.craftycoding.co.uk, also behind a username and password. To publish a site on my server, it’s just a case of adding the domain to the account. If it’s being moved to somewhere else then I’ll zip it up and move it.
On sites more complicated than WordPress, for instance, OpenCart, Flynax or a custom application then I’ll have a beta site on my server, then push to live when I’m ready.
I did develop locally for a long time, and it has its good points (mainly not waiting for FTP), however, it didn’t speed up my development in any remarkable way, so it got the boot. Workflows for teams are completely different and I can see how they should develop locally before committing and branching etc. Since I’m a one-woman-show then it makes no sense to make life more complicated than it needs to be (as taught to me by my first computing teacher, Keep It Simple Stupid).
Also, I only ever store my actual theme code in Git and on Google Drive because WordPress and plugins get updated. I don’t want to accidentally overwrite any settings files or WordPress core and I don’t need the files so I just leave them be.
+ Compiles SASS easily.
+ Full Git support.
+ Uploads to FTP server.
– Debugging is pretty bad.
– Portability is a pain in the bum.
– Different settings in different places and frequently forgets FTP settings.
– Crashes and freezes every now and then.
– Stops uploading to FTP sometimes during a project (probably FTP timeout).
I wanted to try out a few cloud-based solutions because I like the idea of being able to work from anywhere without having to mess about with settings all the time.
+ Editor is easy to use, can browse files no problem.
+ Git support from the terminal.
+ Can edit code straight on an FTP server.
+ Debugging is better than Netbeans.
– Security concerns with saving server connection information on the cloud.
– Can’t trust the straight to FTP connection, would much rather deploy to FTP when I’m ready.
– Currently (May 2017) you have a limited amount of containers, 10 on the freelancer plan.
– Each Git repository needs a container, and I guess you’re supposed to copy the files over to FTP when you’re ready.
– It just doesn’t mesh with the workflow I’m trying to build.
This is also a cloud-based development environment.
+ Nice editor.
+ Nice integration with Git and Bitbucket.
+ No restrictions on how many workspaces you create so you could store all your projects.
+ I really liked this one, but the lack of any FTP support killed it for me.
– Couldn’t find FTP support anywhere (believe me I looked).
– Can’t fit it in with my workflow because there’s no deployment included.
– Suffers from the same security problems as Codeanywhere.
To round it off I thought I’d try some of the most common IDE’s just to see if there was anything good going on.
– No proper SASS support.
– Seems complicated.
– Doesn’t appear to give me anything more than Netbeans did.
+ Editor is easy to use.
+ Can be installed as a portable version on Google Drive so I can work from anywhere.
+ Full Git support and interface.
+ Auto upload to FTP on file changes.
+ Debugging is awesome.
+ A lot to explore and digest.
– Not free but luckily they have a monthly subscription option too.
This is not an IDE but bridges the gap between Git and deployment wonderfully. If I was working in a team then I’d definitely be using this. However, it does have some drawbacks.
+ Easily deploy to different servers i.e dev, staging and live from a repository.
+ Keeps track of file commits and what’s been sent to each server so it will only upload changes.
+ Can browse and comment on other people’s code before merging etc.
+ Good for bigger projects that might have a staging and live server.
– No good for dev server as it only pushes commits to the server. This means you have to commit your code before you can even see whether it works.
– You still need to develop locally or upload automatically via FTP to your dev server.
What I Decided On
I settled on a portable version of PhpStorm. I have the program as well as all my settings all synced on Google Drive so when I go home I am able to easily pick up where I left off by opening the project and pulling from Bitbucket. It automatically uploads my changes on the dev server so I don’t have to mess about with that and fight with the settings (like I had to do with Netbeans). It also shows me any errors I’ve made.
There’s still a lot of functionality of PhpStorm that I don’t know anything about yet, but I’ll explore it more when I have time. I like that my SASS files put a wee square of whatever colours been used on the left of the row. This makes things easier when going through a file and picking out colours etc. So far so good! Let me know if you have any questions or to share your own workflow. I’m always looking for ways to improve!