How to quickly understand if code is maintainable or not?

If your millions of lines do not already have JUnit tests, or equivalent, then it is surely a very risky project. Is this project already used in production by other companies? If yes, ask them whether they encounter many issues with it and how fast bugs have been corrected.

If not, then you are nearly sure these lines will contain many issues. Does the programming language support OO? If not, then you are probably dealing with a lot of spaghetti code which will have to be rewritten sooner or later.

This is bad news. Try to obtain a good estimation of the amount of technical debt in the code. Take a look at the issue tracker for old incidents not closed for a long time.

Try to find why. If there is no issue tracker, this is very very very bad news. Probably not worth the effort.

Talk in private to people who have encoded the lines so far. Listen to those who have been in the trenches. If owner won't let you have access to them, this is bad news.

Which framework have been used in this project? Do these framework have a good reputation? Is it easy to find skilled people in the market?

How much documentation is available? What is the quality of the Javadoc? Does the code smell?

Is it well-written? Are the original implementers available for questions? If not, this is bad news.

Some projects need radical decisions or redesign, which usually means huge commitments in efforts. Are you sufficiently empowered to take those decisions and will management support you or is there going to be a lot of red tape and negotiations? If this project is not critical AND profitable to your employer (or the people paying for it), management will always find an excuse to not spend time on it or will ask you solve this bug but not that one.

ANSWER TO P.S. If code is in production, then it is good news. 30-40% test coverage is not bad at all. If you can bring it to 70% (or more), then it would be great.

Once there, things will more or less fly by themselves. I guess the bottom line is: do you have access to enough knowledgeable people on this project (or good doc. ) and/or people who have the skills regarding the used technology?

If yes, then it is even better. But my biggest concern would be, is this project critical and profitable to your employer? If not, then don't go for it.

If would be the right business decision to take. EDIT For the records, I have recently started using Sonar. It is a true silver bullet.It definitely helps analyzing the quality of code and maintaining it.

I definitely recommend it.

1 Although I understand your point about OO, I've seen some terrible spaghetti code in Java. And stepladders, lots of them. – biziclop Aug 8 at 18:27 @biziclop Yes, I agree that OO does not necessarily mean code quality, but what I mean is that it provides the mean to write quality code (or at least to encapsulate it more or less properly).

Modularization is possible in most non-OO language, but often, people don't have the discipline and the integrity. When dealing with huge projects, it sinks everyone. – JVerstry Aug 8 at 18:36.

I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.

Related Questions