Occasionally I reflect on the ways I’ve changed as a developer since coming to Atomic. Recently I was struck by how much more comfortable I’ve gotten jumping into new technologies. I’ve come to realization that the only right way to approach new challenges is with gusto (and googling).
Everybody Gets too Comfortable Sometimes
Even before Atomic, I considered it essential to be able to learn new technologies quickly, especially programming languages. At my alma mater, they told us that any Computer Science graduate should be able to become proficient in a new language within two weeks. It’s a perspective that elevates concepts over language-specific minutiae and encourages fearless engagement with new programming environments. My diploma even mentions the “sober fearless pursuit of truth, beauty, and righteousness”.
So I thought I had confidence when it came to learning new things. I remember a meeting of developers at my first job to discuss performance. When someone pointed out that there was a bottleneck in the interpreted language we used for the server, another developer suggested we just rewrite those parts in C. A chill went over the room. I remember thinking how they had all gone “soft” from too many years of writing high-level languages.
However, later on when I worked in the game industry, I discovered that I was not immune to getting too comfortable in your surroundings. My fear wasn’t about languages, but instead about certain technology domains. Learning C#? No problem. Learning how to a write a sound driver? That sounded much more daunting.
At the time I just reasoned that it didn’t matter, since what I was interested in AI and game logic, not sound or graphics shaders or network code. Which was true, but part of it was also fear that I would struggle if I attempted to learn that domain.
Diving in Head First
Atomic made me face those types of fears head on. I had very little web experience prior to coming here, so there was much to learn — ORMs, routing, server configuration, you name it. More than the specifics, though, what made an impact is that I had no choice but to become fearless about confronting new technologies. It was the only way to survive. I couldn’t be more thankful for that.
Now when I think about getting into some new arena of technology, the only real question is: Do I want to explore this right now? I’ve learned that with a lot of googling and a little patience, no technology is too daunting.
I’d also attribute some of this change to getting involved in the open source community, where it is feasible and even encouraged to make changes and fixes to existing libraries. When you are dealing with a sealed-off library, you are forced to approach software from the perspective of this indecipherable black box that you may or may not ever truly master. That wall between you and the software creates fear and anxiety. It makes it harder to take risks and try the latest thing.
I believe that one key element of success is wise creativity, by which I mean that you constantly seek to be creative and that you have a good sense of the right times and types of creativity to employ. One thing I know: if you’re afraid of failure when trying new things, you will definitely miss many of the most-creative solutions to problems. Maybe the anxiety is a signpost as to what you should learn next. For me, I guess that means I’ll be doing a large project in ClojureScript.