I started programming in the mid-90s when I was a senior in high school. Since then I’ve gone stretches in my career where I’d actively code followed by several years where I didn’t write a single line of code as my duties as a CEO took priority.
A few months ago I decided to dust off the terminal because I thought programming could be the creative outlet that I was missing. But could I just jump back into writing code? It had been since 2011 that I wrote any substantial code. Eight years is a long time in the technology world. I had a lingering question that maybe my time had passed me by and I couldn’t be a productive programmer again.
After looking around at some of the newer languages and frameworks, I decided to go with Ruby on Rails as that’s what I became proficient with during the late 2000’s as I was working on StatSheet.com and Automated Insights. I felt a little like Rip Van Winkle, where I fell asleep in 2011 and woke up in 2019. Would I recognize the place?
Two months into programming again, I’m happy to report good news. Not only am I a productive programmer again, I feel I’m even more productive than any point in my career. It’s been surprising, and there are two big reasons for it.
It shouldn’t be too surprising that after eight years, Rails has improved in a number of ways. It’s not always the case that technology gets better with age. In fact, there are lots of examples of that not being the case. Elon Musk likes to point out rocket technology got worse since the 1960s. But at least with Rails, the community has done a great job making the framework more stable and less buggy. Also, for certain types of functionality, certain winners have emerged (e.g. Devise for user authentication) whereas in 2010, there would be a half dozen, half-baked solutions for most tasks. Now, as a developer, I have to spend a lot less time rolling my own solutions.
Outside of Rails, other aspects of building a web app have improved too. AWS is not known as being the most user-friendly to work with, but they're considerably more tooling available to manage EC2, S3, and RDS. Things like Let’s Encrypt make the job of setting up a certificate so much easier. In general, I’ve run into less issues compiling tools/libraries from source and getting things to work. I remember spending days getting all the different pieces of a web app up-and-running compared to now it was pretty easy.
Availability of answers
While the technology getting better certainly helps, it’s not the biggest difference. The one thing I can point to that has made programming more enjoyable now compared to 10 years ago is the availability of information, but even more than that, it’s the availability of answers.
I don’t know if it’s like this for everyone, but my productivity level is inversely related with how much time I spend debugging. The less time I have to debug code or other components, the more time I get to spend writing new code or improving what I’ve already written. While it’s true that you learn a lot by debugging, it’s inefficient time. You can spend hours and in a few cases, days, trying to find the resolution to a problem you are encountering.
Since I’ve started programming again, I’ve had none of the blackhole debugging sessions that were common before. And the primary reason for that is the Internet. Or more specifically, Google. Or even more specifically, Stack Overflow. Ten years ago both Google and Stack Overflow existed (SO started in 2008), but back then, you’d be lucky to get search results that were even tangentially related to your question. Now, (and I’ve done this dozens of times) just about any programming-related question I search on Google, it comes with a Stack Overflow entry that is either exactly what I was asking or pretty darn close. Occasionally Google will point me to a blog post or perhaps Reddit, but 90% of the time, it’s Stack Overflow.
So it isn’t just “availability of information” that’s different now. You could argue that Ruby and Rails were well-documented even back in 2010. The biggest change is the availability of “answers” to virtually any programming question or issue.
The purpose of me writing this article was to report from the field something that most programmers probably take for granted. I may sound like an old-timer for saying this, but things are definitely better now for programmers than they were 10 years ago.
It’s kind of like when you see a child as a toddler and then see them again several years later. It’s easy to be amazed at just how much they’ve grown whereas their parents didn’t notice it as much. When you are around them every day, you don’t see the incremental changes. But when you add up those incremental changes over the years, it’s significant.
It’s interesting to think about this effect applied across ALL programmers. I know I’m just a sample size of one, but I’d venture to guess most programmers are more productive now than they were 10 years ago. And the entry-level programmer now is more productive than the entry-level programmer in 2010. Does that mean the rate of technology advancement is also faster now? There are bumps along the way to advancement (I’d argue all the time spent on microservices was one such bump), but even if there is one step back, usually there are two steps forward. The only caveat to this is whether making the answers to the test questions so easily accessible actually makes us worse as programmers overall. This is similar to the question of whether Google is making us stupid. As I look back, I do value all that time spent debugging early in my career, just as I value not having to do a lot of debugging later in my career — after I hopefully learned many of the useful lessons from debugging.
The slow march of progress is well-documented, but even over a 10 year period (which is a relatively short period), there are substantial improvements. I imagine startups now are in a better position to rapidly take products to market, which means more rapidly find product-market fit or not — certainly, there are more investment dollars available. As someone that is building a company to help anyone start a company, that’s exciting.