A trait of a successful software developer is the willingness to be a constant learner. Software technology changes rapidly, creating new opportunities for learning every day.

In my career I’ve shipped software using C++/MFC, C++/COM, C#/.Net, Visual Basic, Python/Django and Ruby on Rails. Each job change brought an opportunity to develop new skills, in new areas of technology.

It feels easier to focus on one narrow area, and master that niche. However the day will come when the industry has moved on, and your opportunities will become limited. Ask yourself how many javascript frameworks or have been relegated to the dustbin?

Of course there are exceptions. COBOL isn’t going anywhere in the banking industry. But even those codebases have to change and migrate as the hardware and operating systems update underneath them.