Head first software development - Pilone, Dan (Head first series, 2008)