They say that developers always need to be learning. There’s seemingly endless articles on the topic, and most advise how to keep up with all the fast-paced changes of the tech world. But paradigm shifts happen while you’re busy making pull requests. What do you do when suddenly everyone around you is shouting about functional programming when you’re happily plugging along writing C++? Or when your beloved back-end language is suddenly making moves to the front end? Or when a JavaScript library suddenly seems like it’s taking over the world? How do you flow with the times as they slowly, almost imperceptibly shift beneath your feet?
This month, The ReadME Project Senior Editor Mike Melanson talks to a few developers to get their thoughts on how to keep up (or not) with the times.
Nyah Macklin serves as the Developer Evangelist for Couchbase during the day, and teaches non-binary and women engineers to code at G{Code} non-profit at night. Previously, they were the fourth engineering hire at Suborbital Software Systems, where they built the company’s flagship products. Their interests include the equitable use of data, using #tech4good, and open and free software for all.
Damien Katz is currently working on a new cloud-enabled fork of Oracle MySQL, and is best known as the creator of Apache CouchDB. Written in Erlang, it won him Erlanger of the year in 2008. He was CTO and chief architect of Couchbase, created the JSON full-text index and query system Noise, and most recently worked on Amazon Aurora for MySQL.
Justin Searls is the co-founder of the consulting agency Test Double. His life’s work is figuring out why so many apps are buggy and hard to use, how teams can promote collaboration and trust, and whether it’s possible for organizations to uncover repeatable approaches to creating high-quality systems.
Mike: What was the first paradigm shift that affected you as a developer?
Justin: I started building websites in the mid-90s when everything was basically static HTML. Around 2003, there was an article at the top of Slashdot about how Ajax was this new design pattern made possible by Internet Explorer’s XMLHTTPRequest API that had otherwise been used for nothing interesting. The article had a little proof of concept, and when I saw it, I immediately hammered out my first single page Ajax Javascript app in like three hours. The experience of clicking on a drop down and watching it populate, or watching the page change in some way by fetching new data, was so entirely foreign to my definition of what the internet was. The web was just documents before. I could suddenly see my entire career unfold in front of me.
It was dreadfully obvious, in exciting and terrifying ways, that this document model would be abused into becoming an application runtime. It was a lightbulb moment. I caught the wave and I rode it, and it really defined my entire ideology as a developer. I had four years of traditional computer science doing C, Java, and back-end stuff before that, but suddenly I was hyper productive and shipping way more meaningful stuff with these cool new Ajax web applications.
Nyah: When I was growing up, the tech field was not financially accessible to me. I come from a low-income background and I’m a career-changer. There was a basic understanding in my community that tech was for wealthy folk, whether that’s hardware or software. I didn’t have a laptop growing up, or go to school for computer science or anything like that. I did a boot camp called Resilient Coders, which pays people to learn the skills to become software engineers.
I’m going to take this question into a slightly different direction and say that the biggest paradigm shift that impacted me is the shift toward the expectation that all software be free or inexpensive. Software used to be sold on CDs and the cost could vary widely. Now, many developers will not touch a piece of software unless it has a perpetually free tier. That is now the norm. That allowed myself and so many engineers who did not grow up with the ability to spare a few dollars to spend on hosting fees, for example, to build software and advance our careers in the field. Free and open source software is a big part of that.
Damien: In college, I was thrown right into the fire with an “Intro to C++” course. I loved it so much that I changed my major. I would run to the computer lab after every class and lose track of time because it was so much fun. Object oriented programming (OOP) was really hot at the time, and I really bought into it. But I ended up overcomplicating a lot of code in an attempt to adhere to the OOP paradigm. After several years, I started to realize it just over complicated things, and that being dogmatic about programming styles, paradigms, or processes is very limiting. Looking back, I cringe at some of the code I wrote. I was trying to really shoehorn things that would have been much simpler had I just made that portion of it not object oriented.
Mike: What did you take from that experience? Did it change how you reacted to future shifts?
Damien: After starting out with C++ and OOP, I went the opposite direction and dove into functional programming, because it simplifies things so much. When I was writing CouchDB, I needed to deal with concurrency, and I kept hearing about Erlang, and how good it is at concurrency and making that work safely. So I spent maybe two weeks playing around with Erlang and everything clicked. I’d planned to just write a portion of the project in Erlang, but then I threw away all my existing C++ code and wrote everythin