From the days in open source project, one will encounter following:

  1. design the structure more flexible
  2. cooperate with strangers
  3. manage a team with degree of uncertainty
  4. write documentation clearly for people who only has 2 minutes to read but try to do everything
  5. explore the infinite possibility of breaking code(including “stupid” code)
  6. “unreasonable” feature request, like i want the array be sorted in “jeff’s order”(means whatever i want it to be)

It might sound an unmanaged project and impossible to happen to an “enterprise” project, like what one does for real work. But, if you think again, it happens in every project. It sounds sad but truth. We all naively believe that there is an order by rules and regulation. But, it is not. developing software is just like life, full of unexpected events. In another words, shit happens.

Therefore, i believe that how react and adjust is more important planning(not saying planning is not important).