Blacksmiths were in an enviable position: they could build most of their own tools. Need a pair of tongs, start hammering out a pair of tongs. You may have to borrow a hammer but a bad hammer is not much worse than a good hammer and then you can pound out a better hammer. And it builds from there.

Programmers are in much the same position; they can build their own tools. This started early on with compilers and editors; we needed something to start off with then we used them to build better editors and compilers. And it happened fast. As a matter of fact there is some kind of designation when a compiler can compile the code used to build itself.

Through the years, programming has created many of its own problems; version control, sprawling projects, poorly written and hard to maintain code. It has also created its own solutions; MVC, Git and Visual Studio, are the current pinnacle of progress.