every software engineering problem can be solved by adding a layer of abstraction except for the problem of using java