How has software development become like a peanut-filled chocolate bar? People are the peanuts and automation is the chocolate, according to Kohsuke Kawaguchi, known as the creator of Jenkins, a free and open-source software automation project that’s looking to boost productivity. Kawaguchi recently spoke about the role of open-source tools in software development at the Rakuten Technology Conference in November 2019.
From artisan to automation
“It’s useful to think about how software development is changing,” Kawaguchi said in an interview on the sidelines of the conference. “Around the 16th century, manufacturing was often craftsmanship, a world of artisans with decades of experience making things like tapestries. Then the Industrial Revolution happened and things scaled up massively.
“There’s this ever-increasing pressure to deliver more software faster and with better quality, so there’s not a lot of space to waste on things that don’t add value.”
“A decade or so ago, software development too was more like artisan work driven by individual geniuses. Today it has changed so the scale is bigger, with more people who need to collaborate, and it’s more democratized. With automation, the work that needs to be done by humans is like peanuts in a peanut bar, held together by chocolate, which is the automation. But something needs to drive the automation, and that’s what Jenkins and tools like GitHub and Kubernetes try to do.”
Kawaguchi is chief scientist at CloudBees, a continuous software development services provider in San Jose, California. At the conference, he spoke about how the ongoing rollout of software updates, known as continuous integration and continuous delivery or deployment (CI/CD), is evolving all the time, keeping developers on their toes. Last year, Jenkins itself, first released in 2011, evolved into Jenkins X for Kubernetes, an open-source system under the Cloud Native Computing Foundation that enables the deployment and management of containerized applications.
Riding the bullet train
Software development technology has been changing due to the realization that one best practice is to divvy up the labor among autonomous teams of about seven people. Kawaguchi noted that Jenkins X is “no assembly required” so teams can get where they want to go faster.
“Jenkins is like a vast road network – (where) maybe you’re writing software for video games or medical devices or air-traffic controllers or a nuclear plant or submarines,” Kawaguchi told attendees at the conference. “Jenkins X is more like a high-speed train or Shinkansen. The idea is there is a common metropolis that everyone’s trying to get to — Tokyo, for example, or a micro service web application development. As long as that is your destination, you just have to show up at the train station and there’s a train every five or 10 minutes. You just hop on the train and let it take you to your destination.”
Kawaguchi also spoke about the development of CI/CD, particularly the need to streamline testing. A system under development may have logged 10,000 test cases, but not all of them are useful, and developers often don’t know which ones are valid. Machine learning is being harnessed to determine how to effectively test any given change made during development of a product.
“There’s this ever-increasing pressure to deliver more software faster and with better quality, so there’s not a lot of space to waste on things that don’t add value,” explained Kawaguchi. “As software development becomes bigger in scale, this waste costs millions of dollars and countless hours of developer time.”
Looking to the future
Kawaguchi began his career in software by selling shareware in high school for about $5 apiece on bulletin-board services. After college, he moved to Silicon Valley and worked at Sun Microsystems and later Oracle, where he began the open-source project that led to Jenkins. It earned him a number of accolades, including the O’Reilly Open Source Award. He joined CloudBees in 2010 as one of its founders, and served as its CTO for many years. Now as chief scientist, he’s always looking for the next set of challenges and solutions for software development.
“Engineering practices need to evolve to meet the ever-growing complexity of software, and the technology that supports engineers needs to evolve,” he said. “That requires more safety because a car that goes faster needs more protection. That’s a broader trend happening in technology. I also hope to see more democratization in software development to involve more people. There are not enough software engineers out there, and that’s good job security for me, but it’s not good for the world. Not enough effort is being made on that front. As the labor market (competition) gets really tough for software engineers, I hope that’s going to change.”