The Software Developer's Guide