writing software is hard