Most developers enjoy creating new things. It’s rare to find a developer who enjoys managing or maintaining software created by others. The pace of technological change is rapid, and after just three years, the technology used in a project can feel outdated. Looking back at the tools and frameworks used a few years ago can often leave one feeling like they're falling behind.
However, I don’t believe the root cause of this feeling comes from the outdated technologies themselves. Instead, it stems from the way developers view service maintenance. Many developers tend to view maintaining and operating a service as "simple labor" rather than an engineering challenge. Why is it that we don’t see optimizing and efficiently running an older system as an engineering problem?
If you are merely applying labor to someone else’s design without changing the approach, both personal growth and service improvement are unlikely. Reconstructing and rethinking existing systems is an excellent technical challenge. Solving these problems can foster growth, just like developing a brand-new system. If such tasks are not available within your organization, consider approaching operational problems as if they were new development challenges. The ability to create a new system is closely related to the expertise needed to run and maintain an existing one effectively.
Development work requires cycles. It is frustrating to focus only on operations without any new development experience, akin to preparing for exams but never taking them. On the other hand, someone who continuously wants to do new development without engaging in the learning process is similar to someone who keeps taking tests without preparing. We experience both learning and evaluation cycles in life, and this repeated process is proven to be an effective method of personal growth.
If you're currently tasked with maintaining an old service, instead of feeling unhappy about it, I encourage you to focus on solving the technical problems you can address right now. Simply defining the technical problems in service maintenance can lead to significant internal growth. Furthermore, as you tackle these challenges, the knowledge gained will naturally carry over into future development projects, enhancing your ability to create new systems. It’s not just about technical growth; it’s also about opportunity. Think from the perspective of your colleagues or managers—if you can’t solve the technical problems in your current work, how can they trust you to take on new challenges?
Within a development team, you’ll often hear, "Since that person worked on new development last time, I want to do it this time." But it’s not like a turn-based game, where it's "my turn, your turn." The mindset of "I handled operations, so next time I'll do new development" doesn’t work. You need to create a situation where there’s no one else to handle it but you. While others are doing their part, you should prepare your turn with full dedication. Opportunities are given to those who are ready. We all know this by now.