Agile vs waterfall: lesson from the trenches