Hardest Things in Software Enginnering Catche Invalidation 2)Naming Convenctions and things 3)Off-by-one errors