Software is under a constant tension. Being symbolic it is arbitrarily perfectible; but also it is arbitrarily changeable.
To innovate in computer science, one must first master the fundamentals.