Self improvement through software engineering