These questions recognize that at Komli we treat software engineering as much more than writing code! Our process is designed (and continuously evolving) with a view towards improving the quality of our software engineering.
All teams (Product, DevEngg, Test Engg, Ops) agree on the spec. This allows each team to know exactly how to proceed and be unblocked. Dev team designs based on the spec. Tech evaluations may be warranted as part of this. Test teams can design performance tests and build automated system tests. The ops team finalizes the deployment arch with the Dev and Test teams and works on automated deployment automation. The analytics/data-science team runs any multivariate tests and improves our software with newly tested models.
With so many teams having to work in tandem, it is only natural that we have put together the right processes that make building s/w easier for everyone without stifling innovation. At the end of the day, we want to be proud teammates that did everything each one could in their capacity to make our contributions stable, reliable and generally make release/deployment day to be a drama-free uneventful day!
We use Jenkins as our continuous integration system and all team members fix failing builds there before proceeding. Our projects use gradle-ivy/maven as the build/dependency management tool both of which have excellent features to bring order in multi-dependency projects. For automated deployment we use our own RPM-Repo and Capistrano. Automatic configuration is done using a combination of Capistrano and puppet.
