I have learned many valuable lessons while applying Agile to my day-to-day programming practices, none of was more influential to the past week than the rule of thumb "make the deployment process a routine, predictable, non-event." Although my company does not formally make use of any Agile practices, I personally follow several Agile principles in my daily workflow and I reaped the rewards when I took the steps to move my application in to processing Production sales orders.
This was my first true release experience and I was quite pleased that only two minor bugs were found as we ran the first order through - the total price was wrong on the confirmation email that would have been sent to the sales associate. We also caught a small check to be made in the case of an order with an error that needed to be run back through after its Sales Order GUID had been assigned.
My manager and I were not surprised that the total price field contained the wrong value. It had not been put under the scrutiny it deserved during development and I realize now that was a mistake - this confirmation email is sent to the sales associate and forwarded to their customer. It acts as a billing or payment received statement, and absolutely must reflect what the customer expects.
I finished out my week diving back into the application to get down and dirty with the pricing problem. I was able to resolve the issue after a lot of back and forth with my manager; this was a process that had been reworked a great deal. Along with the fix, I added a conditional ahead of the email confirmation method: If our unit price does not match the total price reflected on the Salesforce quote, an error email is sent to myself and my manager and the confirmation is not sent on to the sales employee. This prevents any future potential unit price bugs from ever reaching the customer.
Another rule I follow is to never release on a Friday afternoon, so I'm looking forward to sending the application back into production on Monday morning... Hopefully for the final time!