"The future is already here -- it's just not very evenly distributed" -- William Gibson
I recently drove a Tesla for the first time. As a kid that grew up in a car dealership (my father and grandfather both owned one) I grew up with a love of cars, speed, and pushing limits. Driving that Tesla changed everything; as a developer I'm starting to feel a experience a similar set of feelings. Developers love change -- and technology provides a constant stream of bright shiny objects for us to chase. Fortunately we're being blessed by many of these objects to chase lately -- to the point that the current velocity of change _around everything we do_ is starting to take my breath away! I equate it to driving a Tesla at the edge of ludicrous mode; incredibly exciting with the knowledge that one false step means sure peril. The areas that are currently exciting me are:
The Web plumbing is changing. Earlier this year the Internet Archive put out a call to help building the new distributed web. They point to a number of challenges around the current web -- it's fragile, not reliable, not private, and needs a way to keep track of changes over time. Fortunately some early options are appearing about that I'm digging into, particularly Ethereum, IPFS, Blockchain, and HTTP/2. Each of these brings significant change to how we build, deploy, and scale applications.
Formula One has gotten us all used to amazing speed. In as little as three seconds, F1 pit teams replace all four wheels on a car and even load in dozens of liters of fuel. Pit stops are no longer an impediment to success in F1 — but they can be differentiating to the point where teams that are good at it win and those that aren’t lose.
It turns out that pit stops not only affect speed; they also maintain and improve quality. In fact, prestigious teams like Ferrari, Mercedes-Benz, and Red Bull use pit stops to (usually!) prevent bad things from happening to their cars. In other words, pit stops are now a strategic component of any F1 racing strategy; they enhance speed with quality. But F1 teams also continuously test the condition of their cars and external conditions that might influence the race.
My question: Why can’t we do the same with software delivery? Can fast testing pit stops help? Today, in the age of the customer, delivery teams face a challenge like none before: a business need for unprecedented speed with quality — quality@speed. Release cycle times are plummeting from years to months, weeks, or even seconds — as companies like Amazon, Netflix, and Google prove.
Mobile developers change people's lives every single day -- they create innovative experiences, reshape how we spend our time, and give us continual access to Facebook and Twitter (the latter being especially important to the author!). The pace at which these new experiences are delivered continues to amaze, yet continues to speed up. As a recovering enterprise mobile developer myself, I'm always tracking the new tools and technologies that developers are using to maintain this pace and provide new innovation. With that in mind, we've published a report on the mobile development predictions for 2015; the changes that will allow developers to continue to produce amazing innovation at a continually faster rate. We've highlighted 8 in the report, but the ones that are especially exciting to me are:
The modern business world echoes with the sound of time-tested business models being shattered by digital upstarts, while the rate of disruption is accelerating. Organizations that will win in this world must hone their ability to deliver high-value experiences, based on high quality software with very short refresh cycles. Customers are driving this shift; every experience raises their expectations and their choices are no longer limited. Like trust, loyalty takes years to build and only a moment to lose. The threat is existential: Organizations need to drive innovation and disrupt their competitors or they will cease to exist.
I hear people talking about Agile 2.0 a lot. But when I look at what’s happening in the application development and delivery space, I see that many organizations are just now starting to experience Agile’s true benefits, and they’re not yet leveraging those benefits completely or consistently. So let’s stop talking about Agile 2.0 for a moment and instead digest and operationalize what’ve learned so far. There’s plenty to improve upon without getting into inventing new practices and acronyms to add to the Agile transformation backlog!
What I see is that app-dev leaders want to understand how they can optimize existing use of AD&D Agile practices like Scrum, XP, Kanban, improve the practices around the more advanced ones like TDD, continuous testing, CI and CD and leverage all with what they’ve learned over the years (including waterfall). Scaling the whole thing up in their organization in order to have a bigger and more consistent impact on the business is what their next key goal is. We fielded the 2013 version of our Global Agile Software Application Development Online Survey to find out how. I present and analyze this data in my latest report. The survey addressed common questions that clients ask me frequently get in inquiries and advisory, such as:
How can we test in a fast-paced environment while maintaining or improving quality?
How can we improve our Agile sourcing patterns to work effectively with partners?
Agile software development practices have been transforming AD organizations for more than a decade. With more rapid development cycles has come a bottleneck at the deployment boundary - at the frontier between Development and Operations. The DevOps movement is working to remove this bottleneck, and in the process is transforming both Dev and Ops for the better. In many respects it is a logical evolution of the agile movement, but practices like continuous deployment are deeply transformative of the way that organizations think about customer engagement, business engagement, testing, development and requirements - in fact, nearly every aspect of agile development is subtly but powerfully affected. The implication of a check-in resulting in code being deployed to production gives a whole new emphasis to the word "commit"!
At the OpenStack Summit in Portland last week, the open-source cloud platform got real, to echo Forrester’s cloud team predictions for 2013. At the busy gathering attended by over 2,400, suits mingled effortlessly with hoodies and deep-tech design committee meetings were sandwiched between marquee-name customers sharing success stories. Three core themes drove the show, as outlined by Jonathan Bryce in the opening keynote: the OpenStack technology platform has matured, the ecosystem is vibrant, and the global user footprint now includes enterprise customers doing real business.
The show followed on the heels of the Grizzly release, the 7th release of the OpenStack platform. Along with stronger support for VMware and Microsoft hypervisors, Grizzly widens block storage options and includes 10+ new enterprise storage platform drivers and workload-based scheduling. A wide range of new network plugins expand the platform’s software-defined networking options and a sexier Dashboard to access, provision and automate resources.
In theory, the agile Product Owner is a simple yet compelling solution to a tough problem: the development team needs, and often does not get, clear direction from the business. The ability to eliminate the confusion caused by the cacophony of voices of multiple stakeholders, and the ability to have continuous engagement with the business, certainly make the Product Owner attractive to the development team. And the business benefits, too: they, in theory, get continuous visibility into project health and status. Buried in that last sentence is the phrase that often sinks good ideas: "in theory", and therein lies a problem.
When we are developing software and find components that have responsibilities too broad for one component to encompass, we "refactor" it, breaking it down into a set of components with more manageable and cohesive sets of responsibilities. We have an analogous problem with the Product Owner, whose responsibilities are so broad as to be nearly impossible for one person to fulfill. In brief, the Product Owner is expected to:
Understand the needs and desired outcomes of the business
Negotiate consensus among stakeholders
Represent the interests of all stakeholders to the development team
Define the characteristics of solutions that meet the desired outcomes
Be a change agent in the organization to support the solution
Communicate and promote the vision to all interested parties
Define and prioritize items on the Product Backlog