programmer-needs-to-know