You Can't Learn Everything
There is a lot to learn about software development. I’ve heard many jokes about how many front end frameworks there are. Back end frameworks are joked about less often, but they’re just as numerous. Every month I also hear about a new programming language that I simply must try because it will solve all my problems.
How can one person possibly keep up?
I think the problem boils down to basic math. Over time the need for developers grows. People go into the field to fill that need. Eventually a number of those people are going to form strong opinions on how things should be. They will build new technology that everyone else simply must use.
I love this by the way. I think it’s great that there’s a diverse and growing eco system out there. It gives developers more choices. The problem is that the number of choices will continue to grow over time, but the amount of time a person has in a day to learn about those choices will be static: 24 hours. No more. No less.
Despite this, I also still think there is plenty to gain from cross-disciplinary knowledge. Context is important. That’s why learning about sysadmin work makes developers better at their own work even if they don’t do sysadmin stuff very often. Front end developers benefit from learning a little bit about back end development and back end developers benefit from learning a little bit about the front end.
The thing that makes learning about so many topics feasible is that you don’t actually need to be a master of everything to get context. You only need one focus that you actively enjoy doing research on. I enjoy backend development. I will play with new languages, new patterns, new data stores, etc. It is fun for me. I don’t enjoy being a sysadmin and I definitely don’t enjoy working on front ends.
Fortunately for me, I am rich in smart friends who do. I can rely on them to do research in those areas. We can come together and exchange knowledge. Instead of me spending 10 hours playing with back end tech, 10 hours playing with front end tech, and 10 hours playing with sysadmin tech, I can spend 30 hours playing with back end tech. My friends will do the same in their respective fields and we spend a couple of hours sharing results.
Since we are all focused, we will get more out of the amount of hours we spend doing research in our respective fields. This is because we start to specialize and gain a much deeper understanding of our chosen domains. The result is we have the ability to grasp much more complex concepts and find a way to explain them clearly. Two hours of research for a specialist may take 10 or 20 hours (or maybe even more) for a novice.
Utilizing the strengths of multiple people is the only way to escape the trap of being a jack of all trades. Becoming a master of one area makes a single individual extremely efficient at improving in that area. Getting a group of masters together allows them to share the benefits of their respective skill sets and get the context needed to make themselves even more efficient in their own domain. We’re all stronger as a group than we are as individuals.