Originally posted at Jump Start Blog
I wasn't comfortable with using node at first. It made me anxious. I struggled with expressing my thoughts properly in JS. I wasn't sure if the code I wrote follows good practices or any architectural standards. It was outside my comfort zone.
And you also have one. A comfort zone.
The comfort zone in a place where you feel safe. Comfortable. It's where many people operate.Â
Everyday activities that you’re used to or that don’t make you feel anxious and uneasy are part of your comfort zone. It’s the location of the skills and abilities you’ve acquired. You're pretty productive in your comfort zone.
You're safe. You're productive. You don't feel anxious or stressed out.
But then you're bored. You don't feel challenged. You can’t make progress or build skills in the comfort zone since it consists of the abilities we can already do easily. It's a stagnation.
And as a software developer, if you're not moving forward it means you're already moving backward.
The biggest benefit of stepping out of your comfort zone is your personal growth. When you decide on a task that's outside of your comfort zone and then complete it, your confidence will grow. You'll feel accomplished.
Just outside the comfort zone is a learning zone. The skills and abilities in the learning zone are barely out of reach. They’re neither so far away that you panic nor close enough to be too easy.
Since a person can only make progress by choosing activities in the learning zone, it’s important to be able to find your learning zone. The learning zone may be wide for some and thin for the others. But as you start to challenge yourself you begin to extend that zone.
If you don't know where your learning zone is, try testing yourself. If the task at hand is challenging enough to have you engaged (and not bored), but not hard enough to discourage it means you're in the learning zone.
Here are some examples of some task you can try to challenge yourself (bigger and smaller):
- learn another IDE (try Visual Studio Code or IntelliJ if you're using Eclipse)
- use different OS (for example try Linux when you're used to Windows, or Fedora when you're used to Debian based OS and don't feel like working on Windows)
- use command line instead o the user interface
- use vim instead of notepad/scratch
- learn a different programming language (like JS when you're using Java)
- learn a programming language that uses different programming philosophy (for example if you're used to object oriented languages try something functional: Clojure when you're programming in Java, C# & Objective-C)
- if you read only technical books try reading some fiction (really)
Outside of a learning zone is a panic zone. Like the comfort zone, you can’t make progress in the panic zone. Activities in the panic zone are so tough that you don’t know how to approach them. Instead, you become so anxious you can no longer think. Or you're uncomfortable and possibly discouraged.
For example, if you only used object oriented Java over your entire programming life and have no idea how to approach Haskell try learning .net first. Or try using lambdas and learn functional programming in Java.
As you operate in the learning zone, you will get more comfortable with the current skills and they’ll start to move into the comfort zone. As this happens, tasks that were once a part of the panic zone will move into the learning zone and the cycle will continue.
Good luck in your learning endeavors!