Yes, as a software developer it is important to keep your technical skills up to date. Know the programming languages you work with and know how they evolve. Know the software and tools you use on a daily basis and how to use them effectively. To keep exploring new languages, methods and tools and see if you can integrate them into your workflow.
But a critical skill that is often overlooked is one that really makes a developer stand out from the crowd: systems thinking. When you practice this skill you'll be able to oversee the consequences of and foresee unintended effects of choices made during the design and development of a system. You'll be able to reduce the amount of rework required, because you can identify most, if not all edge cases when working on a feature. You'll be able to answer questions like:
But a critical skill that is often overlooked is one that really makes a developer stand out from the crowd: systems thinking. When you practice this skill you'll be able to oversee the consequences of and foresee unintended effects of choices made during the design and development of a system. You'll be able to reduce the amount of rework required, because you can identify most, if not all edge cases when working on a feature. You'll be able to answer questions like:
- How does this change affect the workflow of the user of the system?
- How is a command processed by and eventually persisted in the system?
- At which level in the system can I effectively handle an exception and provide helpful context or alternatives?
- How can operations, management and support monitor (this change in) the system?
- Which part of the system (be it infrastructure, a dependency, custom code or otherwise) is best suited for handling a specific command or query?
- Which long term consequences does the choice for a specific implementation have?
- Which alternatives or potential future use cases are still feasible when implementing part of the system?
Even though our field is known to change quickly, the pace of change is only accelerating with the advance of artificial intelligence. At the time of writing it is seriously considered by experts in the field whether the code we've been writing for the past decades will be considered just another artifact in the near future, just like compiled binaries are now. That would mean that the scope of attention and responsibilities of a software developer will only widen. Specifications, guardrails and other methods to coax AI into delivering reproducible output might become an integral part of our job.
Given all this, it's not hard to see that systems thinking will become even more important in the future, maybe even up to the point where it will be defining what it means to be a software developer. Or maybe "system developer" might be a more appropriate job title by then?