When I first got into web development the world felt full of possibilities. I thought I had the tools to build anything. And, sure I had the tools to build just about anything I wanted, but what I didn't realize is just how complex a large scale application is. I didn't realize the time and effort that goes into an application of this scale.
I also didn't realize the importance of thoroughly planning out the project. I thought it would take roughly the same amount of time to just code the HTML and CSS as it would to mock it up in Photoshop. So for the longest time I diving right into the code.
But, the more I work in this industry the more I see the value in planning. Planning is how you get feedback from your clients on what they like and what they don't before you spend countless hours writing the software. It's how you realize that there is an entire chunk of software you don't need to write simply because working on the mock-up allowed you to see that you didn't need a dashboard. Creating the mock-up also forces you to slow down and think about the smaller details like, "how the website header will look when you scroll down" or "will the website header look different on the about page than it does on the home page". It's those small details that you usually don't think about, but still add to project time and cost.
Obviously the bigger the software project the larger the cost, but that cost doesn't seem to scale linearly. Project complexity can scale exponentially with size. The more moving pieces you have to fit together the more time it's going to take to make sure each moving piece fits in with each other moving piece. So you can end of with a web of moving pieces and each link between them has to be managed and maintained.
You can think of it like engineering a car. If you want a bigger engine, well then maybe you'll have to move the alternator farther forward. And because you moved the alternator farther forward now the hood of the car is bigger than you'd like. So you try to squeeze the engine farther back, but that pushes that dashboard of the car farther back. I don't know that much about cars, but the point is that every piece has to fit together perfectly and changing one thing can dramatically impact another.
To build Shadower, a project very similar in concept to AirBnB, it took three people almost a full year of development to build. That's almost 6000 hours of work. Not to mention that without Dan's experience and know-how from his 14 years of web development experience it probably would have taken at least another 2000 hours from all the fumbling around that I would have had to do. Plus, it would have been a much worse application.
Needless to say, software is hard, and years ago when I started this company I had a much different picture of how software worked. Fortunately, the company has grown since it's founding and we've all learned a lot. Today, we are quite (notice how I didn't say easily) capable of creating large scale applications, and I think our latest project does a great job showing that.