Jeff Carouth

Web and mobile developer. Agile apprentice.

Working Outside Your Comfort Zone

| Comments

No, I’m not going to inundate you with quotes of famous and not-so-famous people about how stepping out of your comfort zone will revolutionize your life. Instead, I’d like to simply encourage you to step out of your box every once in a while if for no other reason than the potential to learn something.

What is My Comfort Zone?

The absolute first step in this technique for improvement is to figure out where you comfort zone is. For a lot of the people the knee-jerk answer is in whatever language they are currently using. This is not a bad answer but it will most likely lead to a shallow experience. For example, my obvious comfort zone is in PHP development. To step outside my comfort zone, then, I’d merely need to read through someone else’s project written in Python or even Ruby and then pat myself on the back for each concept or technique I can extract from such projects. However, doing so doesn’t really answer the question what is my comfort zone and doesn’t force me to get outside of it.

My real comfort zone could be working with a relational database or even using scripting languages. I could easily follow the noSQL revolution for a sample project or work on a project written in, e.g., .NET using C#. These technologies are so different from my normal tools that I’d be forced to think about problems and solutions in a different light.

Different Technologies, Different Approaches

Working with differing technologies is not guaranteed to help at all. In fact the experience can be extremely frustrating because you will come across innovative solutions that simply won’t be possible in your “home” environment because of language or technology barriers. This is natural and should be expected. If this weren’t the case we wouldn’t have such a deep pool of languages to chose from.

Instead of focusing on the negative, keep digging into the project. Given enough time you should be able to find a few concepts from the new environment that you can either adopt or at least adapt into projects in your preferred languages and tools. In my case I inherited a few projects that are written in .NET. Instead of immediately grumbling about how awful it is to work in that environment, I’ve embraced it and gone on some bug hunting/fixing expeditions through the code. As a result I’ve learned quite a bit about how another developer uses a different technology to accomplish some of the same tasks.

Read Other Developers’ Code

This leads me to the final benefit of stepping out of your personal playground: you get to read other developer’s code. I don’t remember where but I recently read a comment in which the author stated that it’s silly for a developer to assume he or she can continue to expand his or her knowledge without reading peer code. He or she went on to say that this is like a person deciding to become an author without ever reading other works.

At first I resisted the notion that an author must read other’s work before becoming a talented author. After all, it’s quite possible that a person can be naturally gifted. However, the underlying meaning became apparent. We all must learn ways that work and some ways that do not. Without seeing a variety of approaches there will be no growth. This does not mean that you must immediately adopt what you read. You should look for similarities to your own work as much as you find differences.

A Real-life Example

Like a lot of other web developers I’ve always held contempt for JavaScript. It’s a language that was once far outside my comfort zone. However, the Dojo framework came along and converted me. Using and reading through the code led me to appreciate all the nuances I once despised about the JavaScript language. I listened to talks on the language’s history, I learned some of the advanced techniques and concepts presented by Douglas Crockford, John Resig, et cetera, and then I read the specs for upcoming versions of PHP. I had unknowingly adopted some of the functional programming techniques and concepts prevalent in JavaScript and now I could apply them to my PHP projects.

Stepping out of my comfort zone was one of the most influential decisions I’ve made. I hope you will take some time to do the same.