I worked as a software developer using only Java tech stack for over five years. And I’m pretty comfortable with any Java code. I started playing out with JavaScript, namely node.js, just recently. JS is similar in many ways to Java but it’s different. As Java dev, I’ve seen JS as quite a dirty front-end tool. Using node made me appreciate the language and shift my thinking processes. And the more I used it the more fun I had. And now I’m using MEAN stack at work. And it’s soooo exciting 😀

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

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.

So why should you step out of 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.

Outside of comfort zone

Just outside of 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.

How to know you’re moving forward

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 (like Clojure when you’re programming in Java, C# & Objective-C)
  • if you read only technical books try reading some fiction (really)

Don’t get yourself into panic zone

Outside 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.

Stay in the learning zone

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 endeavours!


  1. I agree with everything you said, however I don’t think one of your point goes far enough. Switching from Java to JS is not a huge leap. I’d recommend learning a vastly different language if only to experience approaches their community uses to solve problems. So, if you know C-like languages (C++, Java, JavaScript, Swift), try something like Erlang, Haskell, or OCaml. Learning those languages has made me a better C++ programmer.

    Thanks for posting this article!

    Liked by 1 person

    1. You’re totally right, and I made that example (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))

      I’ve got my adventure with clojure some time ago and I’ve got my own reasons to learning node and not something functional. Going asynchronous is a shift in thinking as well 😉


  2. Thank you for such an excellent post!
    It is imperative for a developer to step out of his / her comfort zone to avoid stagnation / moving backwards.
    But, another important point that is not stated much, is that software developers need to put in a lot of hard work / effort to be in the comfort zone. As stated in the blog post, comfort zone is where you feel productive, and comfortable. What needs to be conveyed to developers, especially junior developers, is that you first need to become fairly comfortable in a particular set of skills before attempting to learn other stuff.

    Liked by 1 person

Leave a Reply to Rich Neswold Cancel reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s