Due to the nature of things we build in our day to day job, writing software can wear out even the most fit of us. Most software jobs make you constantly deal with complexity. The amount of things which can lead to a complex software project are immense. A poor first design, and failure to redesign. External dependencies..