Good Engineer, Bad Engineer
Good engineers are a thing a beauty—they can change the course of a company’s history.
Good engineers don’t just realize the dreams of a restless and reactive entrepreneur but deliver resilient, scalable solutions to real business problems.
Good engineers don’t architect novel constructs of obtuse, cutting-edge technologies simply to test their own mettle. Good engineers forge forward on unwalked paths to provide elegant and brave new solutions to problems previously unsolvable.
Good engineers don’t rebuke customer feedback but rather whittle and lose interest in their work without it. Good engineers want to build software that is used, that solves a problem. Good engineers want to build for their customers, not their peers. Good engineers want to be recognized by the customer, not (just) the engineering community.
Good engineers push back on product managers who don’t deliver enough market intelligence to make strong engineering decisions, who spend more time on the solution than on the problem, who fret over button colors before business value.
Good engineers don’t push back on deadlines: good engineers set their own, with good process and practiced estimation and tense-but-healthy negotiations with product and among themselves.
Good engineers push back on leadership who don’t provide a well-concieved and clearly-articulated roadmap—one that gives them the foresight necessary to succeed in planning. Good engineers demand more vision, more focus, more clarity, more specifics — not more runway.
Good engineers change everything, not because they build the future but because they are the optimists who can always find a way to solve a problem. Good engineers turn a company’s doubt into its belief.
Good engineers have a better effect on morale and company culture than any amount of free food and unlimited vacation ever could. Good engineers will keep you from taking vacation because you’re kicking too much fucking ass to want to stop.
But good engineers have a fatal flaw: they are hamstrung by bad engineers.
Bad engineers are quite often excellent developers. Bad engineers have written some of the best code the world has ever seen—there are bad engineers at Uber, Google, Facebook, and in every company I’ve ever worked at. Bad engineers are everywhere, as are bad product managers.
Bad engineers prioritize elegant solutions over solved business problems. Bad engineers drive decisions by threat rather than consensus. Bad engineers don’t collaborate: they dictate.
But worst of all, bad engineers don’t realize that the single most important skill of an engineer, whether it’s software or a physical structure, is communication and execution as a team.
Bad engineers value code over cooperation.
A single engineer does not build a 1,000 year old building that withstands age and act of God alone, nor does a single engineer build a software platform that can stand the test of scaling from a couple of customers to a couple million.
Bad engineers kill dreams, kill passion, kill morale, and kill companies — more than any other function in the business. But damn, do they build some great fucking software.