If there's one thing us software developers love more than a good geeky joke, it's learning how other developers work - what hardware do they use, their OS choice, and all their developer tools. It's a great way to improve your own working environment - working with great tools makes our job a joy, while the wrong tools can make every line of code painful.
After working on a Linux desktop (mostly Ubuntu of various versions, then Mint) for the past 5 years, I've now been given a beautiful 27" iMac. As I always used Cairo Dock in Linux anyway, the transition has been fairly straightforward (once I'd waited hours to install XCode so that homebrew would work!). I haven't yet had the "a-ha" moment that I was expecting that would persuade me that OSX is the only way to be - I would still quite happily switch back to a Linux desktop, but so far everything seems to be working very nicely.
The backbone of my development environment is
- PHP Storm - the best PHP IDE I've worked with by a long way. It does cost money, but not much, and is so far ahead of Eclipse that it's worth every penny
- github - because everyone needs somewhere safe to keep and share their code
- I'm still looking for a great text editor. Every serious developer should have a text editor that they are fiercely partisan about. When I worked in a Windows environment, it was Textpad - regular expression search and replace, fast find across whole directories of files, syntax colouring, handles large files (like over 1GB), and heaps more. Everyone raves about Sublime, but as a text editor it's too heavy (and too expensive), and as an IDE, I don't find it as productive as PHP Storm. So at the moment I'm using TextWrangler. It's pretty good, but I wouldn't get into a fight in a pub over it.
- Gimp - for all things graphical
Then there are the other things I need to get my job done
- LastPass to keep track of all those pesky passwords
- DropBox - for when I need to work on things at home on my netbook but haven't brought my laptop home. Being able to check up on documents on my phone is kinda nice too!
My actual website development is usually based on Concrete5 - although it is essentially a content management system, it's architecture blurs the line between a CMS and a development framework. Some sites I have built clearly require a CMS, while some others have been almost entirely custom development, with very little CMS requirement.
Although Concrete5 is not neccessarily the best solution for all these, it is always a good solution, and by standardising on a single platform I have a whole heap fewer headaches in terms of learning multiple frameworks and switching between them, server configurations (across development, test and production environments), and keeping up to date with security patches.
What About You?
What are your favourite development tools? What would be your dream setup? How could I improve mine? If you're interested in what some other developers use, The Setup is a really good read.