Beauty Within: Reinventing Software Development at Juniper Networks
“Be good on the inside.”
My parents repeatedly hammered this life “code” into me since I was young. Am I good on the inside? Not nearly enough, but I try relentlessly to be. To this day, that statement guides me. In fact, I’ve committed to teaching this to my own children, as well.
The idea is that goodness on the inside allows you to execute genuine goodness on the outside. It can apply to the spiritual, physical, or mental aspects of life. Be kind. Exercise. Eat healthy. Learn more. Think positively. The list can be endless.
As it turns out, I eventually found myself applying this rule to organizations, too. At Juniper, it has driven our approach to engineering for the last several years. We must constantly question the status quo, not just with respect to our competitors and our industry, but especially our own “insides.” How can we strengthen our culture? Are we organized optimally? Are our routines and processes designed more for our own comfort or more for our customers’ benefit? Are we good on the inside?
How you do things matters just as much as what you build. If you look internally and see acceptance of the ordinary, apathy, or stagnation, it’s only a matter of time for it to reflect in your products and value. So, when we decided to proactively redefine how we build software at Juniper, it was a major initiative, but not uncharacteristic. After all, it makes us better on the inside.
Our codename for this project is Software Studio 3.0. I have often been told that people don’t think of Juniper as a software company. They are always surprised to hear that the opposite is actually true. Over 80% of the engineers at Juniper work on software. Software has been a cornerstone of our value for over 20 years.
Obviously, we cannot build software with the same technology and processes as we did 20 years ago. A high-performance athlete like Cristiano Ronaldo trains much differently today than Diego Maradona and Pelé did in the past. Can you imagine using Windows 95 on your laptop today?
Yes, the world is more dynamic and more accelerated than ever before. We see it when we wake up. We feel it at the end of the day. In terms of our data and our network connectivity, it can be even more extreme. Everything is going to the cloud. DevOps and rapid iteration are the new normal. As a trusted networking partner, Juniper is committed to this journey with our customers through this new reality and mode of operation.
However, this new mode of operation required that we do things differently. Throughout our history, we have had two big shifts in our software model. Software Studio 3.0 is the third. This most recent shift, however, was our boldest and most substantial. Here is a small peek into some of the things we did with Software Studio 3.0.
We virtualized development and testing equipment and put it in the cloud.
We use our own virtualized products (e.g. vMX or vSRX) as development and testing platforms. This eliminates logistical obstacles (e.g. rack space, availability, wiring) associated with hardware that could slow us down.
Virtualized platforms in our private cloud can elastically expand, contract, or be reassigned with a click of a mouse. We increase resource utilization and save oodles of time. For example, if a 100 node network is required to test a new feature, an engineer could build it in minutes.
Ultimately, this means more high-quality features delivered more quickly.
We automated all testing.
No code is submitted without an accompanying automated test procedure. The code is vigorously spot tested upon submission using automation and avoids the heavy overhead of full regression tests that can delay release times by months. The developer, who is intimately involved with the code, addresses quality issues in the moment. It could previously take more than a week to simply understand regression needs. Now, information is given back to the developer within 24 hours.
As a result, we are able to make more code changes more frequently with more confidence. Instead of traditionally releasing software 2-3 times a year, we can now fast-iterate ‘micro’ releases to co-create new functionality with customers. As an example, this past year we delivered over 100 software releases to a top-tier service provider - at their request - so they could test just as quickly as new software was developed.
We expect to see more intimate co-creation like this, higher customer satisfaction, and lower volumes of support calls to our JTAC as we expect the number of defects to be reduced through our process.
We collapsed all development into a single branch.
The simplicity of “one JunOS” becomes even more powerful. Without virtualization and automation of software development, the status quo continued by many of our competitors is to build “special trains” to customize features or to address specific defects for customers and meet time-to-market. For some of these competitors, it is not unusual to have well over twenty variations of software in release.
Obviously, that legacy practice becomes very inefficient, very quickly. Development slows as resources are diffused. Lots of work gets repeated in different places. Support becomes a costly nightmare. With Software Studio 3.0, Juniper can simplify all development into a single branch.
Our Software Studio 3.0 journey has been challenging. Thousands of engineers have had to change old habits and old ways. Not everyone was happy about it initially. But striving to be good on the inside takes work. Physical, mental, or spiritual fitness is a commitment. But in my humble opinion, it is worth all of it - every drop of "blood, sweat, and tears" shed along the way. Juniper will be better for it. Our customers will be better for it. It is early, but the outcomes we have seen already are very positive.
As the old saying goes, “beauty begins from within,” and I sincerely believe the same goes for software, as well.