At the third annual Ruby Business Forum held in Osaka, Japan this past summer Yukihiro “Matz” Matsumoto, the designer and developer of the Ruby progamming language, delivered the keynote, “How the internet is changing software and business using Ruby as an example.” In this post, we provide a summary of Matz’s insightful talk as well as the key highlights.
Computers as Computational Devices
The first CEO of IBM, Thomas John Watson, uttered the now famous words, “I don’t think we can sell more than five computers worldwide.” That number was based on the number of computational engineers at the time and the computational performance of ENIAC. Today, however, there are hundreds of millions of computers with processing power millions of times greater than ENIAC. Last year alone, 300 million personal computers were shipped, and smart phones and tablets exceeded even that. Computers are no longer used merely as computational devices.
Connection with the Internet
Today I flew to Osaka from Matsue, and when you fly now you have to switch your smartphone over to flight mode. When smartphones are no longer able to communicate with the internet, almost all of the applications become unusable. It means that most applications communicate with a server.
Society is more and more becoming driven by networks with the internet acting as the worldwide network linking computers with other computers. Through the internet, devices also connect with other devices. For example, the Toyota Prius can be considered a computer. Using the internet, the Prius can take the aggregate of the amount of work performed by the wiper blades and then use GPS information to calculate how much rain has fallen in a particular area. In the future, even more devices all over the world will become linked together. When you look through old computer magazines, there are ads for computers with ultra-high-speed communications of 10 kbps that cost approximately $2,000 USD. These days, however, you can run a fiber optic line with speeds of 100 mbps into your home, and the cost to rent the equipment is $50 USD give or take. Volume will also be converted to quality. In 1965, one of the founders of Intel, Gordon Moore, introduced in a paper Moore’s Law, which states that the number of transistors in a dense integrated circuit will double every 18 months; increase a thousand times over 20 years; and increase over a million times in 40 years.
These changes in computers and networks will bring even more changes elsewhere, changes in media, the cloud, big data, and changes to open source and that community. Even social coding facilitated by GitHub has become possible. Methods of software development have also changed.
Future Changes to the Industry
The technology research firm, Gartner, has a report out that says by the year 2020 every company will be an IT company. What that means is that IT will become critical across all industries, and if that happens, what will become of the software business? The software business exists in various forms like custom developers and companies who package software. However, if all industries become IT companies, IT will become a core competence of the company and prove to be a differentiating factor because core competences cannot be outsourced.
Software Is No Longer Soft
Software and software development is still in a state of being misunderstood. Software is not soft. It contains no structural material or physical matter, and it’s not something that’s manufactured on an assembly line. Software production is something that gets downloaded or copied, so what then do software companies really do? Software companies are designers, and attention must be paid to this difference when compared to manufacturing.
Sometimes software is compared to architecture. There aren’t the physical limits to software that you find in the architecture of buildings, and this has to do with the complexity of software, complexities that create dependencies. As a result, software is weak in regards to change and is no longer soft. Software will not rust, but it must be able to respond to change. Operating systems, business models, laws, and even tax rates will change, so software must be able to respond to those changes. In order to do that, what types of methods are there? The spiral model? Agile development?
Complexities of Software
The complexities of software stem from the rules of society. Furthermore, such complexities are derived from the demands of humans and psychological ambiguities and intricacies. Custom development is also difficult as a win-win situation. Limitations to traditional custom development are found in ambiguous demands and limitations like insufficient knowledge and a lack of imagination at the start of the project. Before the project begins, only a few of the details are really understood.
A long time ago, the role of a computer was to simply act as a computational device, and it was clearly understood what one wanted to do with the computer. It’s different now, especially with software, because you may be creating something that you don’t know will be beneficial. Its necessity is not known beforehand, and there is only one method to address it: trial and error. You have to repeat the process of trial and error. Projects are started freely, and it’s not really understood whose idea is the best. This requires adapting to change and wide-scale cooperation.
Future Hints for the Software Business
I believe those hints are found in social coding and open source development facilitated by the internet, and it wouldn’t be an exaggeration to say that the internet itself is running on top of open source. 97% of the operating systems in use on devices ranked as supercomputers are Linux-based where open source is widely used. The phrase “open source” was born in 1998, and up until that point, the phrase “free software” was used, a term proposed by Richard Stallman as part of his quest for software freedom. He sought free software that would enable one to learn by viewing the source code, modifying it, and then redistributing it. However, this also requires a business perspective.
Open Source and Business
I think open source has made things more difficult for the software business, and I’m afraid there is no way to stop that trend. The only option is to join it. A new business model has to be conceived. At many companies, open source now functions as an implicit alliance. Only areas of differentiation are uniquely implemented while the rest is shared as part of the open source.
Now then, how should software businesses proceed? It’s possible that they will become polarized in the future. Do you develop a platform or do you develop an application (not an app for a smartphone). A prototype must be created and then scrapped again and again. Agile methods will also need to be implemented. The timing of this is still not known. Development of the user principle and development as a user is effective. Platform developers will constantly face competition from open source.
Development of Ruby began at the same time as Java. Java was developed by the Sun Microsystems company, acquired by Oracle in 2010. On the other hand, Ruby was a language begun by myself. Java has been optimized to the extent where it now runs faster than code written in C++. Ruby cannot compete in terms of functionality and performance compared to the Java language, which is developed by a large corporation, but it does compete in terms of usability. I chose people. And now the cost of people is getting more expensive than the cost of computers. In the Agile Manifesto, many of the people are Ruby developers or those with a favorable impression of Ruby. Ruby is very compatible with the Agile method. Ruby began as an individual project. Have you heard of the snowball effect? If you throw a small snowball down the side of a snow-covered mountain, it gets larger and larger as it rolls. Starting tomorrow, anyone can throw the next snowball.