Building great applications is not a trivial task. On the contrary, it is a difficult and complex endeavor in which many actors need to efficiently work together to create applications that correspond to high-end user expectations.
Today, everything moves very fast and time-to-market is very important for success. This chapter is going to introduce methods, processes, and tools to help you optimize your development processes, thus building high-quality software with short release cycles.
Traditionally, building software is done by planning whole software projects from beginning to end, writing detailed specifications, developing and testing (often in a rush), while hoping that everything will work as expected (V-model).
Sometimes this approach works and sometimes it does not. When it does not work, developers implement features while only testing manually, with the objective of adding unit tests later. Then, at the end of the project...