Writing Fast Programs: A Practical Guide for Scientists and Engineers