Good Engineer/Bad Engineer

Good engineers deliver. Bad engineers delay.

Good engineers release before refactor because they know code quality means nothing until the product is proved valuable. Bad engineers refactor before release.

Good engineers invest time making codes easier to maintain. Bad engineers spend time chasing beta releases of trendy libraries and put codebase on an unstable state.

Good engineers understand modular design very well. Bad engineers tend to design entangled components which are very hard to maintain and reuse later.

Good engineers spend time on things that will make the most impact first. Bad engineers lacks a proper sense of priorities and tend to spend too much time on trivial tasks.