software development problems