What Is The Value Of Experience?
I often say that one of my favorite quotes is:
“There are developers with 30 years of experience and there are developers with 1 year of experience repeated 30 times.”
This was said by a professor of mine who had 30 years of experience. It’s an important thought because some developers may have a lot of experience on paper, but they aren’t actually very good developers. They stopped learning early on which means they operate at a junior level despite the number of years they have been developing software. This issue is exacerbated by the fact that technology moves fairly quickly making their poor skills also out of date skills.
Others who have made good use of their years by constantly learning are some of the best people I’ve ever worked with. Yet, if technology changes so quickly, where does the value of this experience come from? It’s certainly not from using specific technologies that may or may not be around. Or even versions of the same technology that change so drastically that they may as well be something completely different.
There’s a quote often attributed to Mark Twain:
“History doesn’t repeat itself, but it does rhyme.”
For example, most web developers have to account for the fact that network requests take time to load. Anytime an action has to go to a server, we should consider the delay and how a person may react to that delay. A typical e-commerce site will show some kind of feedback when you click “Add to cart”. This is so you know the site isn’t broken and that it received your desire to add an item to your cart. Otherwise you may think something is wrong and click “Add to cart” again… and again and again.
Nothing is going to change the fact that there will be a delay here. We may engineer all sorts of tricks to make the delay as small as possible, but in the end we are bound by the laws of physics. Data takes time to travel from a web browser to a web server. No matter how fast technology changes, until we can make some revolutionary scientific discovery, this issue will be a constant for all web developers.
There are other examples. Working with server clusters often means thinking about quorum. Working with master-slave replication setups means thinking about replication delay. Working with caches means thinking about keeping that cache up to date. The specific technologies used may change from year to year, but the problems with those types of technologies are fairly constant.
Having experience with these problems provides a number of advantages. The most obvious is being able to create solutions much quicker with existing technology. Yet, in a situation where new technologies are popping up left and right, experience allows a developer to evaluate and learn about those new technologies quicker. An experienced developer will have a better understanding of a new technology’s value proposition as well as its limitations.
More importantly, an experienced developer will know how to look for limitations. Few builders of technology are very open about their limitations. They mostly talk about their advantages. Without experience, a developer will have a hard time knowing what to even look for. They may try out the new tech in their development environment, but limitations often don’t crop up until production. The value of experience is making sure those limitations are found so that weeks or months of development aren’t spent building something that is unlikely to work in the long run.
This knowledge also provides an underrated benefit: peace of mind. Let’s use an analogy.
Say you’re buying a house for the first time. What are all the things you need to worry about? You need to get a good interest rate. You need to inspect the foundation. How do you check the pipes though? Is there asbestos in the walls? What about the history of pests? Is your furniture going to fit easily through the foyer? Are there frequent brownouts in the area? Is there an environmental disaster nearby affecting your drinking water? Are you likely to get flooded? Is the house one inch on someone else’s property line?
There’s a lot to worry about for a first time buyer. Some of those things are important. Some of those things are not important. Some of the important things are easily fixed later even if they are a problem. Experience with the actual problems of home ownership allows a person to differentiate between what is important, what isn’t, and what can wait.
The same is true of software. There are a million things that you could worry about when building software. An experienced developer can help filter out the ones you actually need to worry about immediately. This makes it easier for the rest of the team to process the smaller set of problems that they actually need to solve and provides comfort in knowing that things will be ok.