Thoughts on software engineering