I have to continue feature development, issue fixing of a halfway completed code base.

There is a no documentation, all developers had left the company.

The technology stack is somewhat familiar to me (Spring, Hibernate, Web Services (Rest, SOAP), MySQL).

Also there are non descriptive JIRA items that the team had worked over 3 years. Seems code has implemented in consistent way like layering, ant file per project, DAO classes. I would like to get feedback from all our experts.

What should be the approach to get familiar with the project?

Do you recommend to use profilers, bug track tools like Sonar to get some hints?

Any other approach I can try out?


In short: read the book.

Michael Feathers wrote an excellent book for people just like you, who are tasked with maintaining or extending legacy systems. There's a lot of little gems in there, but his main approach is simply based on his definition of legacy code. I may be paraphrasing here, but the gist is that

Legacy code is code without tests.

Hence, his proposed approach is to add tests to the existing code and a lot of the book deals with how to do that in more or less complicated situations.

Interestingly enough, you did not even mention the existence of any test code. If you have some, it is a good starting point to see how the individual pieces work and depending on the presence of integration tests, how they fit together.

Not the answer you're looking for? Browse other questions tagged or ask your own question.