The way I see it, you should be able to look at program code, and pretty much work out what's going on straight away. And I mean "the big picture", like how all the files and classes work together, and which classes are used by which other classes. Unfortunately, that never happens, cos there is no standard or good way at the moment to see "the big picture". Maybe UML comes close, but no cigar. Is there a good Java class analyser out there?
When you look at code, you're doing just that - looking at 20-30 lines of one file of a program that could come be comprised over any number of files (including source, data, xml etc..). Who knows where this particular file fits in? Is it the Main file? Or is it the code to some abstract "missile" object that gets shot by the player, and is sub-classed for specific weapons? Until we sort this out, programming is always going to be hard.
Before you can take an open-source project and mould it into your own vision, you need to know the whole project, and that takes too long. Okay, you can fix the odd bug here and there, and change the names, but until you know it from top to bottom, you're only going to introduce bugs.