What is my Agile Way? Production Deployment within the first week, then every working day
The proper Agile way of software development that many software professionals don’t know about.
After mastering real Test Automaton, I loved Agile so much that I named my company AgileWay in 2006. Some curious colleagues and clients occasionally asked me, “What is your Agile Way?”
My answer was: “Production Deployment within the first week, then every working day.”
By the way, AgileWay does not provide software implement services to the public. We develop and own our apps. So, this article is not marketing.
Some “Agile Coaches” or “ScrumMasters” might be shocked to hear that. Yes, I have accomplished my agile way for all my apps, TestWise, ClinicWise, SiteWise, BuildWise (international-award-winning), WhenWise, SupportWise and TestWisely. All these apps are quite complex (you can check them out). A business analyst colleague from the UK found it unbelievable after my demonstration of ClincWise. He previously worked on a similar system with over 50 staff in the team. ClinicWise was just one of 5 apps (at that time) I did in my spare time, thanks to my Agile Way process.
Frankly, I don’t think there is another way I want to develop software.
Table of Contents:
· It is what Agile/Scrum should be
· How can you achieve deployment to production within the first week?
∘ 1. Preparation
∘ 2. Assumption
∘ 3. Efficiency
∘ 4. Persistence
· How can you achieve daily production deployment?
· A couple of recent Continuous Testing Reports
It is what Agile/Scrum should be
In case you think, “this man was bluffing” after reading the article, I would like to borrow some credits from the world’s top Agile Authorities.
Every sprint => production release, by co-creator of Scrum
2. Daily production deployment, by the Father of Agile.
The above proved that I am just doing the proper Agile Way, as it should be. If you are so surprised by my practices, you must have never witnessed the real Agile in your life.
How can you achieve deployment to production within the first week?
Easy. Just follow the below practices:
1. Preparation
An experienced software engineer should have a pet project to practise. Along the way, he/she should have accumulated some common working modules, such as:
User Authentication
User Authorization, e.g. Role-based
A web template using a known web design framework, such as Bootstrap
User Sign up, Forgot Password, Change Password, …
Database Setup (e.g. MySQL) and Database Migration
…
A set of automated tests for the above
Continuous Testing process
Deployment scripts
I can get a generic working Ruby on Rails app with the above done in under 10 minutes. If a software engineer is willing, this is quite easy to achieve.
2. Assumption
Agile means that the requirement will change constantly. In other words, it is perfectly fine to show customers an early version of business features and refine it based on feedback.
“With a solid Automated End-to-End regression testing process, you don’t have to fear!” — Zhimin Zhan
If a customer assumes my first version is final, of course, my Agile Way model will not work. But in reality, all customers welcome this “OK-to-change” approach because I respond to their feedback promptly, usually the next day. Once customers feel their opinions are respected, they will easily adapt to the Agile development approach. This worked every time, a few “difficult customers” (who usually care about the product the most) turned out to be very helpful ones.
3. Efficiency
Besides the common web app features (listed above), you must implement at least a business feature related to the customer in your first version. This requires a certain degree of skills because you need to understand, research and implement it within a few hours. For example, in ClinicWise, a practice management software, I implemented a basic booking page in the first production release.
I consider myself a 100X software engineer because of my test automation and Continous Testing skills. You might have heard of “Test Driven Development” or “Test Driven Design”. Test automation is the quickest way to grow software design. Not convincing? Let’s see what Patrick Copeland, who led thousands of Google engineers, had to say.
“In my experience, great developers do not always make great testers, but great testers (who also have strong design skills) can make great developers. It’s a mindset and a passion. … They are gold”.
- Google VP Patrick Copeland, in an interview (2010)
Also, don’t forget JUnit was created by Kent Beck (father of Agile) and Erich Gamma (the first author of the classic Design Patterns book).
Sadly, few programmers nowadays read and are willing to learn.
4. Persistence
Do it every day (night for me, as I develop the apps in my spare time mostly). My day job is Test Automation Coaching and Consulting.
How can you achieve daily production deployment?
It is certainly possible.
“Facebook is released twice a day, and keeping up this pace is at the heart of our culture. With this release pace, automated testing with Selenium is crucial to making sure everything works before being released.” — DAMIEN SERENI, Engineering Director at Facebook, at Selenium 2013 conference.
The “secret” is Test Automation and Continuous Testing. Here I mean:
Keep reading with a 7-day free trial
Subscribe to AgileWay’s Test Automation & Continuous Testing Blog to keep reading this post and get 7 days of free access to the full post archives.