10 real-world engineering challenges every dev should try to solve