I'm a Java developer with a bit more than a year of experience which places me somewhere above a junior, but not among mid-level developers yet. Recently I was offered a long-term project which is about studying an existing banking application code for 4 months and then introducing changes when needed. As a not-so-experienced programmer I'm looking for ways to develop and I wonder what such a project might give. Would you consider dealing with a big and probably not-so-well written application a good practice for a beginner?
Does dealing with legacy code help one evolve as a programmer?
learning;skills;maintenance;legacy code
Troubleshooting exisiting code is a super way to develop as a programmer. If the code is bad, you will learn the impact of the mistakes they made and maybe avoid some of them when you are doing the designing. If the code is good, you will learn something about how to make a maintainable application.  You will also learn to deal with the complexity of a real business application. Since this is in banking sector, you will learn about things like federal regulation and internal accounting controls that you may never have even thought of. These are good things to know when you get asked to design something else in the financial world. And financial programming can be quite a lucrative sector to work in, so getting banking experience may be very good for you. You may even learn that just because something was written 15 years ago in a language that you would prefer not to use, it is not necessarily bad. It has been running successfully all this time after all. If, as most legacy apps, the application doesn't have the unit testing you need to really be sure a change won't affect something else, you may learn how to add that testing and how to sell management on why adding that testing is a good idea.