If the code is readable and the programmer has the knowledgde and time to read – basically yes.
But: Software mostly is too big to be written by a single person. It is even much too big to be fully read and understand by a single person. You typically pick out the parts you are interested in. “Pick out” can be a hard task. And then you need profound knowledge of each the materiae the software is about and software engineering (including knowledge of the used language).
Software is better readable if it is commented well.
It looks like commenting doesn’t pay off (I don’t fully agree – software can be maintenanced better if commented well; so if your business includes maintenance commenting may pay off). In commercial software in money, in open source software in lust and appreciation. So don’t expect well commented code. (Basic libraries are typically commented better, end user applications worse.)
Commented software is so much better. For if you ever decide to look back you know what each piece of code is doing & or if someone else looks at your code they know what its doing. Generally Open Source code is well documented as so many people look at it, it needs commenting for the program to last.
A good programmer could and does, assuming enough time and patience to ‘digest’ the code.
From my experience, it helps to have a basic idea of how the program reacts or what it does when it is run. Secondly, it would help to focus on one particular area of the program. Then, you would go through the source, until you find an entry point, and follow the code from there…
Why on earth would you reverse engineer open source software? The whole idea of open source is that the source code is open, I.e. files are offered for download, fully accessable in the language it was made with (and i would asume it has the coder’s comments too)