Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I just came here to ask for some advice. I've just graduated from university and now started my first real programming job. Basically I will be working on the middle tier of a large application but was n't sure how I should start learning the system and I will need to familiarise myself quite quickly. I've been looking at the code and already feel a bit overwhelmed at the complexity.

I feel that I have a lot to learn i.e. the domain and terminology, understanding the large code base and on top of that learning new technologies which I have not covered in university.

What would the best approach be to trying to understand the system? I have done very little work in the middle tier and its using several technologies which I have never come across.

For example currently I'm not even sure how the data is brought into the system. I've done a little Spring jdbc but at no point do I see any queries being made, just code for setting up database connections in config files.

Usually I try to understand code by running it in a debugger and seeing what data is being passed through but the only way I can run the server is by running a script on a unix box so I can't really use a debugger can I? I've not run it yet.

I've already bought a Spring book but I'm still not sure how to tackle the system and where I should start. I looked at the endpoints but it never really helped. It is using soap but I don't even know what the content looks like.

My manager is currently on vacation so I've been told to look at the code for 2 weeks until he comes back.

Can anyone give advice on how they dealt with coming into a new team etc, there is almost no code documentation and the only manual I've been given is how to set up the project.

Also just wondering when I start writing code, how would I be able to look at the data contained within the objects in the system? I can't do a simple print line to check, yes I could do logging but it would be nice to see what the data used is.

In the past I have been able to verify and understand the system by looking at the UI, but now I think I will either have to make new tests or run existing ones to check if my code is correct.

Cheers

share|improve this question

closed as too broad by Jim G., GlenH7, Thomas Owens Dec 7 '13 at 14:48

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs.If this question can be reworded to fit the rules in the help center, please edit the question.

1  
If your developer environment is set up correctly, you should be able to debug through the application. Perhaps the production code is hosted on a Unix box, but I don't see why you wouldn't be able to run the application from your own developer environment. Have you tried asking your colleagues for some help on where to start with learning the application and configuring it to run locally? Is it a web application? (e.g. Spring MVC?) –  Ciaran Gallagher Dec 7 '13 at 1:31
1  
possible duplicate of How do you dive into large code bases? –  GlenH7 Dec 7 '13 at 14:27
    
Well, they have an environment setup document and it does not mention anything about tomcat, merely how to run the code on a unix box. It uses Soap for input/output and is using Jax-WS and is a desktop application with the UI done in either winforms or WPF I believe. I would have liked to have seen what classes are called and what data the objects contain to help me understand. I've also seen code which performs marshalling and yes I have now seen some queries made in the system, but not as many as I thought there would be. This middle tier is used for a couple of applications not just the one –  user1424720 Dec 8 '13 at 2:04

1 Answer 1

Before you start investigating the code, get to know the system on a higher level of abstraction. Throughout the whole process, try to use existing information as much as possible, rather than researching on your own. You say you are working on a large project, but there is close to no documentation. However, there should at least be some documentation about business goals, the domain, system requirements and the architecture. Furthermore, you can ask your coworkers about these things.

My approach to this is to start with the company itself. Try to understand what the company wants to accomplish and why it does so. Gather a list of business goals and its stakeholders and get to know how the system is connected to them. Determine use cases and system requirements from that. Concurrently to this analysis, try to make a model of the domain and terminology.

Familiarize yourself with the architecture later on. Now that you have an idea about what the system should do, this might give you an idea of the kind of components needed within the system. Try to imagine what the architecture could look like and compare this to the actual system.

Finally, look at the code. Try to make out the architecture components within. The terminology you now have should be reflected by some of the module names.

share|improve this answer
    
Thanks I been reading up on the domain further on the internet, I will ask for more information which is available internally next week. I certainly hope they have more information about the system which I can read. –  user1424720 Dec 8 '13 at 2:10

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