5 Ways to Speed up Your Development
Mathias MeyerThey say that time is money. So logically, one wants to find ways to improve their speed and make more money with their time. If this is your goal, then here you’ll find a list of what I’d recommend for the toolbox of every software-developing freelancer.
Automation
If you’ve had to do something twice, automate it. Whether it’s recreating a database, transferring new files to the web server, or just crunching a handful of data, doing it by hand twice is already once too many.
Learn a scripting language, get comfy with the automation tools your applications offer you (think snippets in TextMate or macros in Photoshop), and start using them, so that you can focus your valuable time on the important things.
Imagine your tools doing the work for you in the background while you’re sitting in the sun with a coffee, and reading everyone’s favourite freelancing site.
Learn Keyboard Shortcuts
I know, I know, you love your mouse. It’s such a handy device, and it feels just like an extension of your arm. But think about how much time it costs you to move it to an item in the menu. Now compare that to how long it would take you to press a couple of keys (that’s a sequence of keys for you Emac users out there) to achieve the same effect.
Keyboard shortcuts are a time saver, and it’s well worth knowing the ones your favourite tools offer. Photoshop has a huge load of shortcuts, and so do most text editors and development environments.
Learning shortcuts will be a time investment in the beginning, but there are loads of handy cheat sheets out there to keep on your desk.
Write Tests
Tests are the most effective development tool I’ve gotten to know since I left university. It’s a pity they didn’t tell us about them then. A test is basically a piece of code that checks an isolated part of your application for correctness. Whether you adopt test-driven development or just test your code, is up to you, but do test it. It not only ensures that your code works correctly, but it shows your clients that you value your own work and that you ensure the quality of your own code.
If you test, don’t rely solely on them by any means. If something’s not working when your client tests the application, pointing out that you are running a test suite is not the answer. A problem is there to be fixed, not to be argued about for hours and hours.
Learn How To Use A Shell
The shell has to be one of the greatest inventions of all time. Okay that might be an exaggeration, but it’s still one of the most valuable (and free) tools out there. It doesn’t even matter if you’re working on a Unix-like system or on Windows. Both come along with a shell, and it’s well worth your while knowing your way around.
A shell is focused on your keyboard, and oftentimes it’s a lot faster to do things on a shell than say, clicking your way through a wizard in your development environment.
Use Version Control
We’ve all seen it happen. You or someone else made a change in your code. It’s just a small patch and it’s immediately deployed to your production environment. Putting aside that this shouldn’t be done anyway, the code breaks something. You want to switch back to the older version. Unfortunately your team works on a network share. Your administrator can help you out with a backup, but it takes a while to find the right file, and it might not even include all the latest changes. Meanwhile the client keeps on asking why his application is broken. After several hours you finally have a working production environment.
Now compare it to this. Since you’re using version control, you can easily fetch the revision before the broken change and replace the file on the production system. Throw in an automated deployment which you can tell to automatically deploy a specific revision of your application, and you’re in a more comfortable situation.
Basically version control, used correctly, stores a backlog of all your changes. When your application’s undo is out of changes, you can go back to the last revision and start over.
A version control system is a valuable tool not only for developers, but also for designers, copywriters and photographers. The latter are now spoiled by applications like Aperture or Lightroom. The most common system these days is Subversion. If you’re not already using version control, do yourself a favour and get comfortable with it. It’s not only a time saver, it lets your mind rest in the knowledge that you can switch back and forth between all your changes and have a history of when you did what.
All these things can help you increase your development speed. Get into them one by one, and bask in the joy of more time for things that matter. Some of them are not only valuable tools for developers, but also for designers and copywriters. They take some time to learn, but in the long run it’s more than worth it.





















Tarique Sani
June 28th, 2007
A bit controversial - but - one more is to Use a framework RoR or my personal fav CakePHP. Another which is somewhat opposite of using the shell is to use an IDE
Ivan Nikolic
June 28th, 2007
Very useful, thanks!
Mathias
June 28th, 2007
That’s a good one Tarique. And it should be in that list too, be it controversial or not. Some developers tend to redevelop everything with every new project. With the rise of full-stack frameworks like RoR or CakePHP that’s more and more unreasonable these days, in my opinion.
Matthew Pennell
June 28th, 2007
I’d agree with Tarique - I use Code Igniter and Aptana for all app development and it speeds me up no end.
On the subject of keyboard shortcuts, all Mac users should install and learn how to use Quicksilver, the ultimate in keyboard shortcuts.
warren
June 28th, 2007
A few more suggestions from the school of hard development knocks (ie things I’d tell myself if I could go back to my first day on the job):
On tests, it’s not enough to simply guess as to what tests you need - use a code coverage tool, eg rcov for Ruby to identify which code is not being hit by your test cases.
If you’re writing compiled code, eg C#, Java, etc - or even if you’re using Python or Ruby - use some kind of Continuous integration tool, which can notify you of code which doesn’t compile and/or pass your test suite.
Learn to use a debugger - breakpoints and stepping are far superior than the “guess the problem area, print some debug data, recompile” approach that I still see people using.
Finally… learn how to understand compiler errors. Sure, they may all seem the same to begin with, but they *are* telling you *something*, you just need to learn what it means.
Brett Derricott
June 28th, 2007
Frameworks are definitely a great way to speed up development while also reducing the number of bugs in your code due to reuse. Tarique is right on with that point.
Great article, Mathias!
Tom
June 28th, 2007
What are shells? You explained everything else in great detail, but just left that one hanging. How might they be used in web development?
Rajesh Shakya
June 28th, 2007
Very good tips to expedite the development.
One more thing I would like to add, write reusable codes. Writes classes and create your own frequently used libraries.
Rajesh Shakya
http://www.rajeshshakya.com
Helping technopreneurs to excel and lead their life!
Jose Enrique
June 28th, 2007
Tarique is right, I personally use as Matthew CodeIgniter with Aptana and my own CSS framework and save me a lot of time on my projects, but when I am coding only XHTML prefer Intype, is just coding on steroids.
Geoffroy
June 28th, 2007
It’s good to work with framework, I use php eclipse, with aptana, but I find that if you don’t know the core, the shell, then you are missing the basis. I use sdf.freeshell.org for my geek shell time and it has prove more that valuable to know my way around the dark side of the shell
Thanks for the article !
Robert Dempsey
June 28th, 2007
As someone mentioned RoR already, I will add Red Bull and/or coffee to the list as well. Seriously though, it is all about time management for me and knowing when to take a break. Thanks for a great article. Automation rules.
Chris Hoeppner
June 28th, 2007
I use scribes, the “textmate for gnome”, and it rocks. For anything database-needs-to-show-results kinda stuff, I use Django. And this is not only website related stuff.
If you’re on linux, take care to learn something about cron, anacron, and bash scripting. I’ve made up a whole backup solution just with those three. There’s a major benefit about the fact that every thing’s a file, and everything has a command line interface somewhere. There’s just nothing to match it under windows.
Joshua Curtiss
June 28th, 2007
Great tips. Especially the testing and version control. These are things that frequently aren’t done because they aren’t taught in school or are seen as extra work.
Philip
June 29th, 2007
As usual fine information!
Since starting out on my own developing Industrial Automation software I’ve forced myself to adhere to the version control that I set out. Its paid dividends already as I needed to go back a build on my current project.
Craig Campbell
July 5th, 2007
I’m a web designer, and one of the things I specialize in is Flash. I’ve often had customers ask for a similar type of Flash piece for their website (ie, a small slide show), so I keep a directory of oft-requested pieces that I can just pull up and modify quickly. Great post!