Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What do you do when you're suddenly thrown onto a large project? [closed]

I recently started a career in software development after graduating a couple of years ago in CS. The current project I'm on is a large ongoing project that has it's origins in the 90s with a mix of C, C++, and Java. There are multiple platforms (UNIX, WIN, etc) being supported, older technologies in use like CVS, and some dated documentation in some areas.

The extent of my software development skills stem from going to university as I've had little real world experience. I felt like I had a decent foundation in CS but I cannot but help feel slightly overwhelmed by it all. I'm excited to be part of something so huge but at the same time I feel like it's a lot of information to absorb.

My coworkers have been great people and answer a lot of questions I. My employer hired me knowing that I am entry level.

I've tried poking around the source code and examining how everything gets built but it's on a scale I've never seen before.

How do more experienced people situate themselves when joining a large ongoing project? What are some common tasks you do when getting yourself up to speed?

like image 229
SFWPolo Avatar asked Jul 23 '10 06:07

SFWPolo


Video Answer


2 Answers

Good question. I haven't had your exact experience, but in cases like this I like to think, "how do you eat a whale?" The answer is (predictably) "one bite at a time." Reasonable people won't expect you to grasp the whole thing immediately, but they will want to see progress. Perhaps there are some small areas of the larger project that are not too complex, without too many dependencies. Work toward understanding one of those and you're one 'bite' (and/or 'byte') closer to expertise on the whole project.

like image 131
Rab Avatar answered Sep 21 '22 15:09

Rab


Being familiar with all existing documentation I would try to get the big picture. Literally.

  • generate a TreeMap of the source code

I would use GrandPerspective on Mac or WinDirStat on Windows. It will give you some insights about the structure of the project's files (sometimes it gives some hints about the code structure). Having this, you can ask your colleagues for some of the clusters, what they do, how they relate to each other.

  • learn how to build the project

This is important to have it compiling all the time if you are about to do any changes. Having tests executed at the build time is always a good thing, so ask for it also. Even better if there is some kind of continuous integration server in place. If there is, look at its configuration - figure out how the build is done. If there was no CI server, but you already got the knowledge how to build the project, create such a server on your local machine, and show it to your fellows - they should fell in love with it.

  • browse the source code with Structure101 or similar tool

This is useful especially for Java projects. This tool does great job. That will give you more details about the code structure, and sometimes about the system architecture. This experience may be sometimes hard, you may learn from this tool that a code is basically a Big Ball of Mud ;)

  • look for tests, and explore them

If you will be lucky there may be some JUnit, or CPPUnit tests. This is always good to try to understand what those tests are doing. It may be a good starting point to explore the code further.

like image 39
UserPioneer Avatar answered Sep 20 '22 15:09

UserPioneer