The hard part about software development is not designing a perfect architecture, but making a good enough one, having tough time-constraints.