Over the last decade of developing, I’ve noticed two major schools of thought when it comes to software development. They’re really two ends of a spectrum, and most developers fit somewhere on that line between them. The extremes of the spectrum are the Hacker, and the Architect. I won’t argue that one is better or “right”, but each lend themselves to very different situations.
Hackers focus on a visible end-result, and obtaining it as simply and quickly as possible. They are fast to cast off any baggage that slows them down, and build their software “just in time.” A common mentality is “I’ll build it when I need it”. If it would take them 3 hours to hack a solution together, and 5 hours to integrate a 3rd party library, they’ll opt to build it themselves. They concern themselves with “time to market” and are adept at cranking out working prototypes within hours or days.
Architects focus on beautiful, robust software that is elegantly constructed and flexible to future changes. They will often delay the immediate gratification of an early ship in order to get the technology “right”. They pride themselves in their focus on systems engineering. Characterized by a fear of technical debt, architects can be known to bring a touch of OCD to their work. A common mentality is “If we do it right now, we won’t have to gut it later”. They always plan for the long term, even if it takes more time in the near-term. They concern themselves with “overall cost of ownership.”
Obviously, each school has its pros and cons, which suit themselves better to different scenarios. Are you most concerned with immediate delivery (at the expense of long-term cost)? If so, you need a hacker. Is reliability, security, or stability a concern? Get yourself an architect.