KCDC - Building a plane while flying it - Developing in production!

21
Building a plane while flying it - Developing in Production! Shahzad Zafar Manager, Cerner Corporation @m_shahzad_z, @CernerEng

description

Have you ever been on a project, where you are defining a new product, a new platform, new architecture, new languages; the whole nine yards. On such projects, there is a constant struggle with balancing the need for the business and software development. Agile principles state that "Working software is the primary measure of progress" and "Simplicity -- the art of maximizing the work not done -- is essential". In an effort to achieve these principles, it is easy to get into a state where the first release, becomes the final architecture and creates endless amount of technical debt and hacks, which eventually make the system brittle and complex. In this talk, we will go over some of the patterns that need to be built into the system; code, team and culture, that would enable you to deliver early, deliver often and all along constantly learning from your implementation and refining or even redesigning your complete architecture to incrementally build the product, with higher quality, higher business value and minimal technical debt. We will also go over how these patterns were implemented in our projects for successful delivery.

Transcript of KCDC - Building a plane while flying it - Developing in production!

  • 1. Shahzad Zafar Manager, Cerner Corporation @m_shahzad_z, @CernerEng

2. www.youtube.com/watch?v=L2zqTYgcpfg 3. Shahzad Zafar Manager, Cerner Corporation @m_shahzad_z, @CernerEng 4. To deliver projects fast Attain business value faster With higher quality 5. Short timeline to deliver Leads to hacks to get the project done Which leads to brittle design 6. Brittle design makes it harder to refactor And cost is living with the bad decision 7. Less refactoring decreases the overall quality of the code 8. Simplicity--the art of maximizing the amount of work not done--is essential Working software is the primary only measure of progress Continuous attention to technical excellence and good design enhances agility 9. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software Build small, release small, deploy small -- Deliver value early and often 10. Build the team Platform component owner and team Horizontal and Vertical Communities Pair Programming 11. Design to refactor Software half-life Look for new technologies to incrementally enhance the solution Plan for feature flags 12. Continuous Integration Automated Tests Focus on quality BUT have a path to deprecation 13. The easy button Automated (chef) Fewer steps the better Should take minutes, not hours or days Incremental release options Dark launching Blue/Green deployments 14. Its about the people Dev helps in supporting production With tooling to deploy code and monitor solutions Ops helps in designing solutions that will run better in production Can be two teams but working as one Dont need all teams but some dev and ops teams to be working together 15. Starts with the people and ends with the people 16. Contact: [email protected] [email protected] @m_shahzad_z