On legacy code
One thing I enjoy doing every once in a while is to dig up some old code I wrote some time ago and look at how things have changed and, most importantly, how I have changed. I see not only how different conventions and paradigms that are established nowadays would make things different (and not always for the best), but also how I now give more importance to clarity and simplicity, and at the same time how I see more possibilities and different ways to solve the same problem.
This exercise makes me appreciate more the problem of maintaining legacy code. A developer starting work on an existing project will always see:
- Changes in the API
- Changes in code conventions (spacing, variable names, even indentation sometimes)
- Duplicated code
- Complicated code
- Changes in external libraries
- Changes in pieces of the overall architecture
The list goes on and on. The most important thing is always to be aware that today your skill is different (hopefully higher), and your knowledge of the problem and the domain is better, than yesterday. Be grateful and happy for the experience you have gathered so far, since it's experience that brought you to appreciate this.