Escaping the South Indian Monkey Trap

When I joined Atomic Object, one of the first books that I read was The Passionate Programmer by Chad Fowler. In this book, Fowler shares his collection of tips and tricks for becoming an exemplary programmer. As an entry-level software developer, I found many of these tips incredibly helpful, but the one that stuck with me the most was called The South Indian Monkey Trap.

The South Indian Monkey Trap

The South Indian Monkey Trap, as described by Fowler, is a way of catching monkeys which involves digging a hole in the ground, making sure that the bottom of the hole is larger than the opening. The hole is then filled with food, with the intent that a curious monkey will reach for it. Upon grabbing the food, the monkey will no longer be able to pull its hand out of the hole. However, it places so much value on the food that it doesn’t realize it could be free if it were just to let go of the food.

The monkey is trapped because it believes the value of the food overrides all. It can no longer objectively question the predicament it is in. This is a concept known as “value rigidity.”

You might ask how catching monkeys relates to software development or question why Chad Fowler included it in his collection of tips. After only working in the field for a few months, you will likely have had numerous discussions with colleagues about how programming language X is better than any other language, especially language Y. These claims could very well be legitimate, as there is a plethora of criteria to judge a programming language. However, to assume there is one language that is vastly better and should always be used is a prime example of the value rigidity that Fowler warns about.

Recognizing that you are stuck in this trap is the first step, but here are some tips that will help you let go of that food:

1. Complete a side project in another programming language.

One of the greatest forms of professional development is completing a side project, whether it is in a new language or one you already know. This is one of Fowler’s tips, and I think it is excellent advice.

Side projects are useful because they provide a real problem to work through, unlike a “Hello World” or “To-Do List” application that you’ve already made 12 times. Even if it is a side project that you have completed before, learning a new language might inspire ways to make it better and implement it differently.

2. Attend conferences, events, or meetups.

Back in college, I was introduced to Common Lisp, which of course I loathed at the time. After attending a few local events as well as Strange Loop, I spoke with many software developers who all suggested that I should check out Clojure. Because of their recommendations, I have had an excellent time learning Clojure in my spare time, investigating the fundamentals of functional programming in a Lisp-based language.

The software development community is a powerful resource. Make sure to utilize it to your benefit.

3. Re-evaluate the “all-powerful” language.

The last tip I want to share is to re-evaluate the language that you deem to be so powerful. Objectively review previously completed projects: Did it take a significant amount of time to complete a trivial task? Were there countless errors with managing the development environment or build steps? Was the type system getting in the way of what you wanted to do? Was the lack of a type system causing frustration?

The South Indian Monkey Trap is quite easy to escape as long as we realize that we need to let go of the food. Have you ever been caught in the trap? Let us know how you learned to let go.