I work for a company that develops its own software, and I get to watch them first hand since I support the hardware that runs it [the whole system is still in testing]
In my observation, writing ANY software is a lot like being "in over your head" in that you start at the bottom of the ocean. Your goal is to see the light of day and be able to breathe. You know that you only have so much time in front of you to make it to the surface, but along the way, no matter how hard you fight upwards, you're invariably drug back down from time to time by bugs, changes, adjustments, additions. . and the longer it goes on the more you fight, the harder and longer you work. Fatigue starts to set in as you're trying to move 10-16 hours a day to reach the surface, causing even more issues that need to be sorted out. Eventually they'll make it to the surface [ver 2.0, minimum]. That may be in 6 weeks, 6 months, or 6 years. Occasionally it's a little bit longer [think Duke Nuke 'Em] and entire teams die and pass their legacy on. Once in a great while, a team dies and nobody is there to pick up the code.
Now the next time you wanna give the developers a hard time over bugs, balancing issues, design decisions. . you just think about what I wrote, and realize that the reality of it is probably a thousand times worse. They're the professionals, give them some time to work
Edited by Sen, 25 January 2013 - 10:23 AM.