For a moment, I’d like to you remember what you can about The Matrix. Now, only think about the first film, and not the other two, as if you’re anything like me, you’ve spent considerable time and effort to suppress the memories of those even existing, and I’d hate for you to undo that hard work.
Why mention the Matrix? Because eventually there comes a point in the life of every developer where they must make a choice: red pill, or blue pill.
You take the blue pill, the story ends, you wake up in your bed and believe whatever you want to believe. You take the red pill, you stay in Wonderland, and I show you how deep the rabbit hole goes. – Morpheus
In the film, Neo takes the red pill, and is freed from the clutches of the Matrix. He learns how to enter and exit the Matrix at will, and essentially gains superpowers. Neo is able to move fast enough to dodge bullets, fly, and have incredible strength, all because he has learned how to fully take advantage of the environment that he’s in.
In development though, what are our equivalents of the red pill vs. blue pill? It’s the difference between simply getting something done, and getting it done more efficiently. As developers, we need to learn how to fully manipulate and control our environments and development tools, so that we can be as efficient and as powerful as we can when writing our applications.
So how do we do this? The first step is to look at the tools and applications that you are currently using. How well do you know these apps? Is there something you could learn that would make using them easier, or would make you faster? Why do you even use one application over another? An IDE is designed to make you more productive as a programmer. Unfortunately, too many developers seem to treat their IDE as a glorified text-editor, using a bare-minimum of it’s available features. Worse yet, other developers actively avoid using them, citing reasons such as “Application X is too expensive”, “I can code faster without one”, or “Real coders write binary”.
As an example, I’ve heard the expensive argument too many times with Flex Builder. Sure, you can download the Flex SDK for free and start building Flex and ActionScript 3.0 applications without spending a dime, but if you’re seriously considering doing all of your Flex work using the free SDK, because it’ll save you money, you’re living a lie, and wasting both your and your client’s money. When I first started learning Flex, I was using the free SDK – writing my code using a text editor, and compiling everything using the command-line compiler that comes with the SDK. It was enough to get me started with learning Flex, but there was no way that I was ever going to attempt a serious project using that workflow. It was just too time consuming. Once I finally purchased a copy of Flex Builder, and could take advantage of its code-hinting, searching, class browser, and other features, I was kicking myself, wishing I’d purchased it months earlier.
Most IDEs are targeted towards a specific type of development, be it web, Flash, iPhone, or whatever. They all have their strengths and weaknesses, and I’m not going to declare that what I use is better than what you use. What I want to encourage is that regardless of the IDE that you use, really learn to use it. Learn IDE kung fu.
Each IDE (or other application you use) has various features that are designed to help you work more efficiently. Many have several shortcut keys for text editing, or dropping in snippets of text. As a few examples, in Eclipse, one of my favorite shortcuts is Opt-Up/Down Arrow. This will move a selected block of text up or down one line at a time, which is incredibly handy, and much faster that a Cut, then Paste of the same text in most situations. In Xcode, using CMD-Opt-Up Arrow will toggle between the header and implementation files of the class you’re working in, which again, is very convenient to know. As you may know, the more time you can keep your hands on the keyboard, the more time can be spent writing code.
However, as useful as these shortcuts can be, there are often hundreds of them available in an established app. When you first begin using an IDE or other application, it can be a bit daunting to think about learning all of the various shortcuts or tools available. So where to begin? One thing that works really well for me is either printing out a cheat-sheet of shortcut keys, and taping it up next to my monitor. I’ll then try to be sure and use those new shortcuts as much as I can to get them into my brain. If you’re using an app that has more than 12 users, the odds are pretty good that someone has posted a cheat-sheet of all of the shortcuts an app has online. Usually, a simple Google search can help you find what you need. If you can’t find one, then make one yourself! It doesn’t need to be pretty – it could even be a Post-It note with a few keystrokes scribbled in crayon. The key is to figure out some method that will help remind you that they exist, and what they are. If you find yourself using a feature on a regular basis, it’ll definitely be worth your time to discover if there is a shortcut key associated with that feature. If not by default, many apps will allow you to add custom shortcut keys.
In addition to keyboard shortcuts, many apps have additional features that are designed to help you out, but not many users know about them. I’ll often spend a few minutes each day to browse the menus of an app I use often to see if there’s some feature I’ve been neglecting or haven’t even know about. By browsing the menus or help docs of an app, I’ve found some pretty useful stuff that has really improved my workflows in various applications, or made my life easier. You can often find out little tips & tricks for your apps by searching online for tutorials for that particular app.
Also, learn to customize your apps if you can. If an app is scriptable – learn how to do that. As an example, Flash and Fireworks can be scripted via JavaScript, or have custom panels added, which can be written using ActionScript. Many Mac applications can be scripted through AppleScript. If you find yourself doing the same basic task over and over, see if that’s something that can be automated through an app’s scripting engine. You may spend an hour writing a script, but if you’ll use that script on 15 different projects over the next year, you may save yourself a considerable amount of time.
Applications and IDEs are designed to make you more productive, and when you learn how to fully take advantage of what they have to offer, they can make you feel like the only thing stopping you from writing the code you want to is your typing speed. You don’t need to learn every little detail about the tools you’re using, but it can’t hurt either. You work hard to make sure that your code is as efficient as possible, so why not make sure that you are as well?
Learn kung fu.



Great article, well written, fun, and so so true. Thanks Josh!