From the movie The Matrix:
"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."
Talking with some Java developers about new technologies and languages on the JVM is often like being in the Matrix. I feel like Morpheus trying to convince people that there is a completely different world outside of the Java Matrix. Many Java developers are completely caught up in the Java Matrix and its false boundaries. Some of these developers do not want to see the real world from their comfort zone in the Matrix. Others will even argue in bright, and sometimes colorful, language, if it's not the Java Matrix, it cannot be “real". They give explanations like [this] tool is just a toy, real work is done with [my technology]. Sometimes it is the [that] is just a fad, Software has is to make money, not waste it, or This is just marketing propaganda from [Company X]. The best one I have ever seen (and my personal favorite) is: To me, those frameworks aren't 'the right way. Wait, that's highly opinionated!
Developers Are [or Should Be] Curious
I believe developers are curious by nature. We want to solve problems in cool and interesting ways. In many ways, we are just adult kids that get paid to play with “programming lego blocks.” We love to find creative ways to solve the problems assigned to us, and show off our creations to our fellow developers. Or least we should be. Sometimes, the responses from some developers I talk to makes we wonder if that curiosity has been suppressed in favor of the Java Matrix.
The software development industry is constantly moving forward at a rapid pace with new ideas and technologies every day. Sometimes it can be difficult to keep up with all the changes. Some technologies come, some technologies go. Some don’t stick around for long and some fundamentally change how we approach development for all-time.
“I have been using [3 letter acronym] for a decade and there are no reasons to use anything else,”
― Unnamed Java Developer
When I read comments like I have been using [3 letter acronym] for a decade and there are no reasons to use anything else, it really makes we wonder what type of developer is behind that comment. It's as if they are not interested in any new ideas from the last ~10 years that could make their job easier. It's almost like they have learned a specific technology have no interest or ability to learn anything new. I hope I never have that attitude when working with code. If I ever have that attitude, I think I should step away from the keyboard at that point.
Reinventing my own wheel
Our industry is all about find ways to get applications written in less time, with less money, and less cost to maintain down the road. That has fostered one of the fastest growing industries on this planet. New technologies, frameworks, languages, libraries, processors, and GPUs are coming to market every day and we write new creative solutions to take advantage of those new things.
With this in mind, I have made sure to keep up with these changes during my career and I have re-invented my “skill set” to keep current with the needs of industry. This is been very beneficial for my career and has allowed me to continue in the industry as a leader and architect of software solutions. Now in my third decade of professional development, I have re-trained myself and the technology stack I develop in 5 times so far. When Java became the Matrix for me, then Scala became the red pill. My current toolset is Reactive (Scala, Akka, Play, Futures, Monads) in a Microservices architecture. This may not be the last incarnation of this effort. However, it will last for a while due the programming powerhouse of tools it gives me.
Red Pill or Blue Pill
Over the course of my career, I have been offered a choice many times. As a lead developer and architect, I have repeatedly taken the red pill to see where a new technology can offer. I have often been curious about “Idea X” and what is could do to improve my productivity and capabilities. This has not been a bump-less road; I have taken few wrong turns when looking at a new technology and realized that this is not an improvement but a step in the wrong direction. Thankfully, I can make a U-turn, and continue where I was at before the pivot. Even the mistakes have been very important learning tools to help me understand what does not work for me as a developer.
So I leave you with the question: Blue pill or red pill, which will you choose?