I felt that I had a pretty good grasp of what the technology world was like when I graduated from college. After all I just built a series of programs for my classes (of varying quality), none of which had real world applications. I had built systems using live APIs like Twitter and used cool frameworks like Google Web Toolkit. So in the end I felt pretty confident in my abilities even though I had no exposure to the industry.
Even still, I was able to land a job at a bank and start doing development work. I felt like I was learning a ton and really starting to grasp new and exciting concepts. When given the opportunity to go to training, I seized it and became the sole developer on my team to start building web services. Our team started trying to incorporate “agile” development practices and I felt like I was really understanding the industry.
Looking back at this early part of my career I realize that I was missing something very important: understanding trends. It is a given that technology is always changing. What is old becomes new and what is new becomes old. Languages and patterns seem to change weekly and debates over implementation become almost boring after a while. College and companies can sometimes become echo chambers where developers only seem to get to hear or talk about technologies and patterns in their little worlds. This was the trap that I fell in early in my career and is something I always worry about falling into today.
I was fairly ignorant towards which way the technology industry was heading. I graduated in 2011 not having heard anything about: agile (or extreme) development practices, domain driven design, test driven development, or cloud native applications. To put this in context the Agile Manifesto was written in 2001, Domain-Driven Design Distilled was written in 2004, Kent Beck wrote Test-Driven Development: By Example in 2002, and AWS was launched in 2006. Needless to say that I had not heard anything about any of this (minus AWS) until much later in my career.
Now I feel as though I need to catch up with everything and keep up with everything new. Luckily, I’m not the only one who seems to be doing this. When you watch feeds from Hacker News or Reddit, you’ll see articles or discussions that reference materials that are five or ten years old. Or if you listen to a talk on Youtube you might find someone referencing a paper that was written years ago. Yet these same sites can show new languages or ideas that are up and coming helping you keep up with trends.
As things continue to change you are going to want to keep up with new trends and upcoming technologies. I find that an RSS Feed aggregator can help with keeping up on industry trends from a higher level (sites like TechCrunch, Engadget, etc.) can help see what direction things are going in the long term. I then also like to keep up on resources that tend to be community driven like Twitter, Reddit, and Hacker News. These sites allow users to post what they find interesting and therefore tend to be newer. Typically I find that if a culture is forming around a specific language or pattern you’ll eventually find plenty of YouTube videos and if you’re lucky they’ll have a conference that will post their videos.
The trick is to try to understand what is a trend and what is a fad. Languages, frameworks, and architectures all go in and out of style. But some are longer lasting than others. To find a language that has a lot of potential early on so that you are easily involved in the community can help you later on in your career. However, if you’ve invested that time on a language that never takes off can be a waste of time.
I’m not an expert in this by any means but some things that I have found helpful are:
Is there a community around this language, framework, or architecture? How much support is there? Are any “big” companies using this? Do they have conferences? Do I like it?
The last bullet point, in my opinion, is the most important. If you find it enjoyable you’ll want to learn more, get involved more, and will take the time to invest in it. The other points are really just indicators to whether it will survive long term and will provide a future for you.
There are a number of things that I feel as though I have missed on journey and have come around to reading. All of these resources were specific to my interests in microservices but have been applicable to other aspects of my development career. I don’t think it’s necessary to list them here but it’s important to understand what tract you find interesting and keep a running tab of things you want to keep looking into. Eventually you find that you are in a unique space with a wealth of resources around you and a ton of knowledge that can help you do what you want to do. The next big step is determining if your interests align with your career. And that is a completely different topic that I have yet to explore.
Ultimately what I think I’ve discovered is that we work in an industry abounding with opportunities and it’s your job to find your place among the vast technologies that are out there. Once you find yourself in a realm you are comfortable with take the time to see adjacent areas. If you do distributed systems in Go look into Elixir and see how things are done differently there. If you are a developer then spend some time reading DevOps books or Project Management blogs. We don’t work in a vacuum and no one area has everything solved and it’s incumbent upon you to understand the patterns and practices of the industry outside of your normal work schedule.