Reinforced concrete did not exist back in the day. Surprisingly, some people still got work done.
It's tempting to be dismissive of modern development practices (TDD, for example) using the argument that a lot of great software was written before it existed. If the icons of the past could write Unix without TDD, why do we need it to build a CRUD app? This is an extremely poor argument against improving development practices.
People were getting building done before reinforced concrete, doing particle physics before synchrotrons, and designing mechanical devices before CAD. Since we have had these things, however, each of these fields has advanced significantly due to their use. It would certainly be possible to design the complex solid forms of something like an iPad without CAD, but it would be much more difficult and expensive. It's the same way with development practices. Modern development approaches, in many cases, significantly reduce the cost and risk of software development.