This article mainly focuses on three major aspects: working methods, building a knowledge system, and planning a career early. The article is a bit long, but it's based on my personal step-by-step experiences and reflections. I hope you'll forgive any shortcomings.
I. Working Methods
When working for a company, we are essentially part of the workforce that serves the enterprise. Therefore, as employees, there are specific work methods worth summarizing and sharing.
If you're interested in starting your own business, pursuing a government job, or working as a freelancer, this article may not be very helpful for you.
1.1 Do Your Best First
Adopt a proactive attitude: First, try to solve problems independently. Then, engage resources and team assistance, and inform your leaders or colleagues of your progress.
Slacking off is inadvisable, as labor is rewarded with compensation. If your performance or productivity is unsatisfactory, it will likely impact your income directly.
When estimating workload, always leave some buffer. Balance others' expectations—if you think a task will take three days, it’s safer to estimate a week, as other tasks will likely interrupt you.
Abide by professional ethics: If the service you manage malfunctions or you find a serious bug, as a developer, it is your responsibility to fix it promptly.
Reduce complaints and grievances: When facing challenges, focus more on finding feasible solutions, and communicate effectively with stakeholders.
Focus on issues, not people: At work, we are dealing with projects and specific tasks. Concentrate on solving problems rather than getting into unnecessary conflicts with people.
These might not have been easy for the fresh-graduate version of me, but after two years of managing projects, I gradually began to understand and adapt.
1.2 Focus on Personal Growth
No employee is 100% loyal to their company; it is the company policies that matter.
You should consciously refine your daily work achievements—develop your own code libraries, tools, system architectures, and potentially even frameworks for solving common problems.
The difference between novice developers and experienced ones is this: Newcomers often start from scratch when completing tasks, while experienced developers solve problems by reorganizing their reusable modules and libraries.
This doesn’t mean that all reusable code must be written by you. You can also collect and organize other people’s mature, tested solutions into your knowledge base.
1.3 Work-Life Balance
The balance between work and life is an evergreen topic.
Programmers often find this balance hard to achieve: there are always meetings pulling you in, bugs nagging you, or extra tasks assigned by your leaders that make it difficult to focus.
Yet, work is still meant to support a better life. Here are some of my thoughts:
Avoid unnecessary overtime: Focus on improving work efficiency during the regular 8-hour workday. Even if there are urgent tasks, don’t silently work overtime alone—see if the team can assist.
Healthy lifestyle: No smoking, no excessive drinking, no staying up late. Don’t overeat, try to rest for 30-60 minutes at noon, and engage in some exercise to stay fit.
Manage stress effectively: Seek the company and support of family or partners. Take walks after dinner, and maintain a good mindset to deal with work pressure.
Develop hobbies: Weekends are perfect for hiking, taking short trips, or simply enjoying cooking with family. These activities can add joy to life.
II. Building a Knowledge System
A knowledge system is an organized and continuous body of knowledge that reflects one's learning and cognitive integration. For a developer, not updating their knowledge within one or two years means they might no longer belong in the industry.
2.1 Strengthening Fundamentals
The foundation is key—it determines how far a developer can progress in their technical career.
No matter how long you've been working, at the core, advanced topics are often decomposed into basic concepts. Here’s how I’ve personally reinforced my foundations:
Core concepts in Java, such as classes, interfaces, abstract classes, methods, and properties.
Object-oriented principles like inheritance, encapsulation, and polymorphism.
Java collections, data structures, utility classes, and Stream APIs.
Spring framework’s AOP, IoC, and the application of Beans.
Nurturing coding and problem-solving skills, integrating code with business logic, and learning from real-world experiences.
2.2 Abstract Thinking
Abstract thinking allows one to transcend sensory perception and grasp the essence and patterns of things. How can programmers develop abstract thinking? Here are my thoughts:
Read good code and reflect on the fundamentals. Learn how others improve code efficiency, optimize logic, and handle high concurrency.
Summarize and reflect: Take lessons from handling bugs, refactoring code, or learning new middleware. Reflection is not about blame—it’s about understanding the 'why' behind good and bad outcomes.
Not everyone is willing to confront their weaknesses. Initially, I didn’t see the point of reflecting on my work—so long as I could give my leaders answers, that was enough. However, after managing more projects and seeing the influence of excellent colleagues, I realized that reflection is a key to rapid growth.
Broaden perspectives: Try looking at problems from a higher vantage point to see different solutions. As a developer, you may focus on interfaces, database design, middleware, and exceptions; whereas, your Team Leader may focus on high availability, performance under high concurrency, or resource costs. The department head might care more about project scalability and business value.
2.3 Breadth and Depth
At different stages of your career, the focus on breadth versus depth may vary:
Junior/Mid-level: Start with breadth—explore mainstream technologies and solutions to design systems more effectively.
Senior/Expert: Specialize deeply in one or a few domains, mastering universal architecture and solving business-critical problems.
In both cases, the path typically involves mastering the structure, familiarizing yourself with the basics, and then producing solutions.
III. Early Career Planning
Around a year and a half into my career, I started thinking about career planning. Time moves forward, and people grow. It's important to gradually explore different directions to see what you want for the future.
Although our jobs might not significantly impact the world, we can still create value in our own way.
3.1 Market Status
First, the market is currently saturated.
From 2010-2020, the internet industry boomed, and companies popped up everywhere. At that time, there was massive demand for talent, and the employment market was thriving.
Now, that golden age is over. Many companies have stalled in their growth. After years of development, product architectures have stabilized, reducing the need for large developer teams. Thus, companies are optimizing by reducing the headcount of less efficient workers.
Additionally, the allure of high salaries in the IT industry has attracted a large influx of young talent. With less demand but more supply, competition intensifies. Higher education has also become more widespread, leading to talk of “degree devaluation.”
3.2 Breaking the Mold
The core issue is that software code is iterative. Developers’ output is software and code—both of which are constantly evolving.
Therefore, to stay relevant, focus on cultivating skills that can’t be replaced: communication, problem-solving, planning, organization, management, and networking. These "soft skills" become increasingly valuable over time.
You can accumulate these skills through daily work and gain theoretical knowledge through certifications.
Expand your skill set beyond just technical abilities—improving your comprehensive career abilities is key to breaking out of the mold.
IV. Conclusion
In conclusion, technology is gradually becoming more "affordable." Advanced technology is no longer exclusively within the realm of highly experienced developers.
One of the major reasons for this is the power of open source. Consider how much open-source software is used in your projects. In a typical backend project, technologies like MySQL, Redis, Elasticsearch, RocketMQ, Nginx, SpringBoot, Jenkins, CI/CD, Docker, and more are likely involved.
The role of developers is to take these components and integrate them according to business rules. Nowadays, open-source components can handle most functionality, and with cloud-based services, things become even simpler.
Given this, we must prepare for continuous learning, constantly upgrading our skills, and enhancing our comprehensive capabilities. That way, our experience will genuinely grow in proportion to our age.
After all, all those seemingly ordinary days will eventually come together to form your life.