"...by the time you become comfortable with something, everyone else has moved on."
This has more than just a personal relevance to the individual worker. It has a more profound effecton the profession as a whole. It takes a long time to get really good at something, you need time and maturity to master any craft. If the technology is constantly changing and evolving, the people who are "experts" will have just been exposed to the field a short time ago, there will be no experience base, no depth or breadth to those barely qualified to do the job. Everybody working on everything will be a newbie, an FNG.
I've written about this before:
Software people often talk in terms of 'systems', using the dictionary definition of the term as a complex collection of interacting parts. But they usually understand the term to be limited to the machines themselves, and the programs which execute on those machines. But the system also includes the people who use these facilities, those who operate and maintain it, their training and job conditions, the support staffs, even the manuals and the librarians who take care of ordering new ones. This system is extremely complex, and therefore, prone to failure. It makes no difference that you have a suitable routine to solve a particular problem if the new guy you've hired doesn't know where to look it up. It takes a long time to learn the intricacies of how a system is implemented, even if it's just the small part you are tasked to work on, and by the time you start getting good at it the technology changes and the system is replaced by something 'better'. Before long, even the most experienced staff is busy playing catch-up and no one really knows exactly how the damn thing works. This arrangement tends to favor the individual who learns
quickly but superficially, who is satisfied with short-term results, not long term understanding.
An example: NASA has launched many spacecraft to explore distant points in the solar system, and software plays a key role in how these robot spaceships work. But it takes years to get a space probe operational, political and funding delays as well as long development times usually mean that by the time the spacecraft is launched the computers aboard are obsolete. Add to this the length of the voyage itself, which may take years, and by the time the craft gets to where it's going the software systems on board are positively archaic. In spite of this, the operators of these spacecraft have proven themselves to be extremely clever at squeezing totally unexpected performance from these systems, working around catastrophic malfunctions, often remotely under very difficult conditions. This has been possible because mission staffs are devoted to the mission, not the technology, they have risked their careers by learning everything there is to know about a now-obsolete system. And they have had the time to learn to get good at it. This is not the mind set encouraged by the working environment of most technologists, where experts on old systems are considered fossils or Luddites. The result is that for the most part, programmers and system engineers do not know what they are doing, everyone is working in the dark, by intuition. We use only a tiny portion of the capability of our equipment, and we cover up our failure to utilize it fully by constantly demanding even more capability. The situation is not quite as bad in hardware, where it takes time and effort to move a concept from the engineer's mind to the marketplace, after all, there are all those factories and machine tools which have to be mobilized. But in software a fundamental change can be typed into a keyboard in the morning and out to the users in an afternoon email. This is why computer hardware is so reliable and computer software is so prone to failure. Putting it another way, we couldn't afford to build the Panama Canal today, the software costs would be too high.
