A Peek at Process: Responsible Software Engineering
Apr 15, 2013
Things move fast at CJ. In order for us to keep up with the demands and shifting landscapes of affiliate marketing, we need to be able to adapt responsibly to rapidly changing requirements before they cascade out of control. We've found a few tools and techniques which enable us to tackle these large ambiguous problems.
Things change fast and often; they change faster than anyone can keep up with. By regularly releasing new versions of our code we get to ride the wave of change instead of waiting for it to crash on us. By regularly releasing small changes we are able to practice iterative innovation. These micro-changes keep risk low and progress high, allowing us to continuously deliver services to our customers.
We get feedback fast. A developer only needs to submit their code to get their changes sent through a brutalizing series of tests. This 'pipeline' is designed to quickly prove that the code is correct. A single command lets each programmer deploy his or her changes to the testing playground and that same set of commands let us expose the software to our customers. It's simple: consistency and simplicity win out above all else.
Even with all this, we still make mistakes. Whether brought on by our environment or by oversight, we encourage the consequences rather than shying away from them. Screwing up is painful, but we've found that if we weather the storm, the resulting hardships make us stronger. Some people have called this hard lesson Continuous Integration, others call it Continuous Delivery, or DevOps, or Agile, or half a dozen other names.