Today was the last day of DevWeek
Well, it has been a long, but enjoyable, week at DevWeek, and today was the last day. Today was another full day workshop, and I decided to attend the Continuous Delivery Workshop with Neal Ford.
People who have been following this series of posts will know that I have been rather lucky, winning both a Surface RT and a Telerik DevCraft Complete License. There were no prizes won today, but you will all be happy to know that I have purchased a Euro Millions lottery ticket. I will keep you posted on whether I win anything :-)
Review of the other days of DevWeek can be seen here:
- Day 1 - Pre-Conference Workshop
- Day 2 - Conference Sessions
- Day 3 - Conference Sessions
- Day 4 - Conference Sessions
- Day 5 - Post-Conference Workshop (this post)
Post-Conference Workshop at DevWeek
Topic: Continuous Delivery Workshop
Getting software released to users is often a painful, risky, and time-consuming process. This workshop sets out the principles and technical practices that enable rapid, incremental delivery of high quality, valuable new functionality to users. Through automation of the build, deployment, and testing process, and improved collaboration between developers, testers and operations, delivery teams can get changes released in a matter of hours – sometimes even minutes – no matter what the size of a project or the complexity of its code base. The workshop materials are derived from the best-selling book ‘Continuous Delivery’, and were created in collaboration with the authors and other of my ThoughtWorks colleagues.
Overall, I have to say that this was a very well structured and executed presentation. Neal obviously understands this area very well, and was able to field a number of questions from the audience. There was loads of active conversation from the audience, which made it even more interesting. Lots of conversation regarding real-life situations, and experiences.
The one thing that I thought was missing from the Workshop was some demos. There was lots of description of the deployment pipeline, and using puppet to automate the configuration of a server, but I think what really would have cemented these ideas was an example. Even if this was a simple website application being packaged, and deployed onto even a single server, at the click of a button. This would have made for a very cool end demonstration to summarize the whole discussion.
There really was loads to think about in this talk. Some of the stand out questions, takeaways were as follows:
- How often do you release to users?
- Correct answer of course is that you should be ready to release to users whenever they require it. Software should always be in a deployable state.
- How long would it take your organisation to deploy a change that involves just one line of code?
- Thinking about the above, can you do this in a repeatable fashion, that doesn't involve crazy amounts of over time?
- Make sure there is a clear delineation between Unit Tests and Functional Tests, and run these as separate parts of your delivery pipeline
- Features Toggles gives you an alternative to creating many Feature Branches, avoiding the problem of merging
- Going Live should be just another deployment that you are already practiced at internally
- You should strive of Continuous Integration of your Databases as well as code
- Look to make use of Puppet and Chef to configure development and staging environments, and store the configuration within your source control
- When implementing Continuous Delivery, first gather metrics of current state of deployment, i.e. lead times and cycle times, and then compare after implementing Continuous Delivery
- "Melt down silly architectural barriers between different areas of the organisation"
- "If it hurts... Do it more often!"
- "Bring the pain forward"
- "Rational ClearCase i the most hostile pice of software towards Agile Development"
- "Git is one of my favourite tools"
- "Avoid life in the knitted Castle"
- "The biggest PITA around software updates is data migration and schema changes"
- Continuous Integration: Improving Software Quality and Reducing Risk - Paul M. Duvall, Steve Matyas and Andrew Glover
- Continuous Delivery: Reliable Software Releases Through Build, Test, and Deployment Automation - Jaz Humble, David Farley
- Succeeding with Agile: Software Development Using Scrum - Mike Cohn
- Specification by Example: How Successful Teams Deliver the Right Software - Gojko Adzic
- Growing Object-Oriented Software, Guided by Tests - Steve Freeman and Nat Pryce
- Refactoring Databases: Evolutionary Database Design - Scott J. Ambler and Pramod J. Sadalage
- Release It!: Design and Deploy Production-Ready Software - Michael T. Nygard
As I have said in my other posts, I have had a really good time at DevWeek, and I am happy to say that I have learnt a lot this week. Hoping to be able to take back a lot of what I have learnt and start applying them at work.
Huge congratulations to the organisers of DevWeek, they did a great job, and a huge thanks to all the staff of the Barbican and the helpers at DevWeek!comments powered by Disqus