We stand on the shoulders of giants – Here are the shoulders that have let us see farther.
Read Me First
There are hundreds of books on devops and project management. No one can read them all, but you should read these. (Really, you should!)
The Phoenix Project
(Audible) (Amazon) - Teaching through dramatizations (or parables) is an ancient practice that is making its way into IT. We often use construction metaphors in development, like "building" an application. Of course, people also build cars. The Phoenix Project reminds us that software development, like manufacturing, is a pipeline, and that we are only as quick as our slowest constraint.
As a full length novel, the Phoenix Project is the ultimate IT war story. It walks through the fall and rise of a manufacturing company's IT operations department, showing in dramatic detail the problems we all face, and how we can use Lean techniques to pull back from the brink of disaster.
If you need more than dry theory to see how things works, let the Phoenix Project walk you through.
(Amazon) - Even bad code can function. But if code isn’t clean, it can bring a development organization to its knees. Every year, countless hours and significant resources are lost because of poorly written code. But it doesn’t have to be that way.
Noted software expert Robert C. Martin presents a revolutionary paradigm with Clean Code: A Handbook of Agile Software Craftsmanship . Martin has teamed up with his colleagues from Object Mentor to distill their best agile practice of cleaning code “on the fly” into a book that will instill within you the values of a software craftsman and make you a better programmer—but only if you work at it.
Clean code is a must for any developer, software engineer, project manager, team lead, or systems analyst with an interest in producing better code.
If you subscribe to Safari Books Online, checkout the video version of Clean Code. It's like having Uncle Bob over for a brewski!
Writing Effective Use Cases
(Amazon) - Clean Code depends on Clean Architecture, and Clean Architecture depends on Use Cases. Use cases provide a beneficial means of project planning because they clearly show how people will ultimately use the system being designed. This guide provides software developers with a nuts-and-bolts tutorial for writing use cases. It covers introductory, intermediate, and advanced concepts, and is suitable for all knowledge levels.
The core basics of writing effective use cases is covered in the first fifty pages. The remainder Part 1 of the book takes a deep dive into Stakeholders, Conditions, Scenarios, and Extensions. In Part 2 of the book is a very helpful discussion of the frequently discussed topics when writing effective use cases. How do you know when you are done? How do you handle missing requirements? How do use cases fit into the overall process? Part 3 is a series of "reminders", or practices, that you can apply to keep your work spot on.
Use cases are the foundation of a well-architected application, and no one explains use cases better than Alistair Cockburn.
User Stories Applied
(Amazon) - User stories are the handmaidens of use cases. By defining user stories as a starting point, you can be assured that your application is focussed on what users need most. Use cases then fleshout user stories so that we can build the right thing in the right way.
Thoroughly reviewed and eagerly anticipated by the agile community, User Stories Applied offers a requirements process that saves time, eliminates rework, and leads directly to better software.
The best way to build software that meets users' needs is to begin with "user stories": simple, clear, brief descriptions of functionality that will be valuable to real users. In User Stories Applied, Mike Cohn provides you with a front-to-back blueprint for writing these user stories and weaving them into your development lifecycle.
(Amazon) - In Release It!, Michael T. Nygard shows you how to design and architect your application for the harsh realities it will face. You'll learn how to design your application for maximum uptime, performance, and return on investment.
The book itself has been in production since 2007, and updated regularly since, with the most recent edition dated March 2016. You'll find that it all stands up nicely, and that the lessons learned are invaluable.
An instant classic, Continuous Delivery sets out the principles and technical practices that enable rapid, incremental delivery of high quality, valuable new functionality to users.
The authors step through the foundations of a rapid, reliable, low-risk delivery process. Essential to the process is the “deployment pipeline,” an automated process for managing all changes, from check-in to release. The “ecosystem” needed to support continuous delivery, from infrastructure, data and configuration management to governance. (Amazon)
If you subscribe to Safari Books Online, checkout the video version of Continuous Delivery. It's like having Jez over for a spot of tea!
The Scrum Training Series videos
Scrum is a wildly popular framework for software development, put to good use by teams all over the world, including Spotify and Salesforce. The core of Scrum is brevity and efficiency. If you are looking for the briefest, most effective way to learn Scrum: try the Scrum Training Series videos.
Truly, if your organization does any type of project or development work, this video series is the best 90 minutes you can invest in your company's future. Using a working team as a backdrop, the series walks through the core Scrum planning and execution checkpoints. By using dramatizations throughout, the series places Scrum practices into an simple-to-understand context that you can easily relate to your own work.
Salesforce DX (Developer Experience) is a continuous delivery toolset to be supported by Salesforce. Beta and GA offerings are scheduled for sometime in 2018. As resources become available, we intend to migrate and/or integrate our Pipeline process, to meet the needs of large-scale developers.
- Source-Driven Development? Huh? What? (Ted Husted)
Along with the direct experience of its contributors, the DreamOps Guide draws on several references, all of which are recommended reading. Each reference is assigned a key for easy identification throughout the Guide.
Atlassian Cookbook for Collaborative Salesforce Development
|An open, community-driven version of the Atlassian internal documentation for Salesforce development.|
|CMM||Salesforce Change Management Methodology|
This document gives all Salesforce users — from CEOs to CRM consultants, salespeople to software developers — a high-level overview of that formal methodology for planning and making Salesforce changes. In addition, it outlines some best practices for technical architects and IT managers, who can help your organization prepare for and benefit from Salesforce changes.
|FPF||Force.com Platform Fundamentals||Force.com is a platform for creating and deploying next-generation cloud apps.|
|IFG||ISVforce Guide||The ISVforce Guide is written for independent software vendors (ISVs) who want to build and sell applications using the Force.com platform.|
|IFFG||IFG Glossary||Terms and definitions that describe key application and packaging concepts and capabilities. (A subset of the DreamOps Glossary.)|
|PLN||The Pipeline||The Atlassian guide to continuous delivery with JIRA Software, Bitbucket, and Bamboo.|
|PLH||Pragmatic Logging Handbook|
Developers should be thinking about logging the right events in the right format for the right consumer. This eBook will tell you how to do that.
Several well-known lifecycle describe a common four-stage loop.
Different authors start their descriptions in at different stages of the same general loop, and may use the same label with different meanings.
For example, the "Do" stage in PDCA is equivalent to the "Act" stage in OODA, and the "Release" stage in the IBM DevOps Lifecycle.
At the moment, the DreamOps Guide provides the most information about the Develop/Test and Release/Deploy stages. Monitor/Optimize is beginning to flesh-out. Plan/Measure is a stub at this point.
Once upon a time, we would release a software version on a set of removable media (floppy disk, CD, DVD), and customers would deploy (or install) the software on their own systems. So, release means "make available" and deploy means "physically install".
Under Software as a Service (SAAS), we handle deployments on the customer's behalf, so release comes to mean "announce a version" and deploy means "rollout the version to subscribers".
A common Continuous Deployment technique is to "decouple release from deployment". A good example of this kind of decoupling is the Salesforce Critical Update capability. If a change is distributed as a Critical Update, during an introductory period, we can activate and deactivate. Here Salesforce has decoupled "activation from deployment".
As you design a package, a best practice is to "dark launch" new features, and then allow customers to activate a change in their own environment, and also allow yourself to force activation for groups of customers.