"I don't care if it works on your machine! We are not shipping your machine!" - Vidiu Platon
It was my last year at R.I.T and I was working on my Senior Project. My team although randomly assembled by faculty was made up of a bunch of Software Engineers I have come to respect. We were tasked with building the web app that will be used in the newly built Innovation Center. Although we were a kickass team we embarked on what will become one of the most frustrating projects I have ever worked on. At the time we assumed this was entirely because we had an evil client (which we did), but as time has passed and I retospect, there were a ton of lessons to be learned from this project on both managing a client and managing a software project. Many of them I hope to share but I just have one for today.
The best advice I ever got
At the time of doing this project I already had a couple side projects under my belt and I was quite comfortable launching web applications. On the first day of coding, immediately after we created the empty django app one of my classmates quickly said "lets deploy it to the server [production]" . I remeber thinking "already?" in my mind, and I was a little confused. He quickly followed with "Well it is better to do that now, so we know we can properly deploy the app, rather than to wait weeks down the road and when it does not work we do not know what went wrong". In that moment it made all the sense in the world. I was no stranger to working on an app for a week or two, deploying to the server and it just did not work. Your only clue, a cryptic error in a log file and by that time you have totally forgotten about all the things you had setup on you computer to get it working in the first place.
Today Docker and a slew of other software are created just to solve this problem, ensuring that what works on you computer works on the server. This is a big problem yet highly underestimated in launching web applications. Deploy first is definitely one of the best advice/ideas I have ever recieved about creating web applications. It has saved me TONS of hours and I do it EVERY time.