Possible Duplicate:How do you dive into large code bases? So there is a question about understanding code. Mine is a similar problem. It started when I joined my current org. and like I always do at beginning I tried to get a feel of the code starting from high up and working my way down to details. Only, there is no detail, or to be more precise I have not been able to discern any design to the this big ball of mudness.Application is riddled with duplicate/unnecessary data, there is no attempt at encapsulation or abstraction  or hierarchy with same code copied in multiple classes/modules for the same functionality (of course this means that the duplicated code is out of sync everywhere). Majority of the code concerns the manipulation of POD style classes entirely obscuring business logic in between, DAOs are horribly mutated.To illustrate following is a typical statement in the codeW.X[Y].Z = A.B.C[D]To summarize the code is to OO programming, sorry make it any programming, what Freddy was/is to teens at Elm street.Now I would like to gradually refactor this insanity away, but I for that I must somehow get a hook on the code.So my question is, does anyone know of any systematic approach to this situation , or do I have to hack till I get the job done.Update: Just to add some additional information. Ours is a new team so we can't talk to anyone who is familiar.I have switched to a new domain as a result I am not familiar with it.We don't have any direct interaction with the customer.
How do you dive into a big ball of mud?
design;programming practices;architecture;bad code