The simple truth of being a software developer after certain period of time is that, what programming language you use does not really matter. The decisive factors of a software's success or failure is its performance, security, scalability and robustness.
Unfortunately, most of developers put too much effort on arguing what programming language is the most state of art, and what new features is now available. And completely ignore the fact that none of those will really improve the software in a grand picture or is to users' concern, but to simply satisfy developers' own ego.
In order to achieve the self improvement of being a developer, we should think more about the architecture of the software in a greater scale. The idea may sound simple, but it is actually a long way, which requires not just rationale thinking while coding but also innovative thinking, how tiny little changes in the way we code can change or improve the software.
There are a list of things that we need to start thinking before programming:
- Development Methodologies, e.g, Agile, Scrum
- Design Patterns:
- Domain Driven Design
- Continuous Integration and Testing
- Automated Deployment
Also some good hobbits to cultivate:
- Learn a new programming language every one or two years
- Learn news technologies and have in depth understanding in at least one
- Learn new tools that can improve productivity and efficiency
- Learn different project management methodologies
- Code to a high standard, DO NOT do quick fixes or workarounds
- Practice different design patterns, architectures, programming languages and etc, and know their pros and cons
- Keep a record of what you read, do and think, writing will help you to think deeper
- Improve communication skills, target different audiences, no matter it is developers, end users or project owners, you must be able to explain in their language
- Join conferences, groups or discussions to widen your horizon and make friends
Always remember that, there is no perfect solution to the software, but the most suitable.