When I first got involved in a startup (before I started to learn how to code myself), I’d ask for “easy” features all the time and would be very frustrated when the developer would tell me that that little feature that Facebook and Twitter and every other consumer app has would take a week or more to build. “Seriously?!” I’d say very surprised.
Well, now that I’m on the other side of the development process, I will never assume that the features that I take for granted as a consumer are “easy” to build. I have been helping out with some of the coding for a new startup, and I now know first-hand that something that should “only take a week” to build will take three weeks or longer.
With development, it is never as simple as adding a feature. In addition to adding a feature, you have to make sure that none of your other code has any bugs (which it probably does), fix those bugs, accomodate your code to include the new feature, and make sure again that adding this new feature did not result in additional bugs (which it probably did).
Although this is frustrating, it also makes me look at the world in a different way. I learned to appreciate the beauty of features that I take for granted and think about how long someone thought about first designing that feature, then implementing it, then making sure it worked so well that the customer takes it for granted.