A World Where All Digital Traces Are Tracked

A World Where All Digital Traces Are Tracked

In the early days of software, the typical image that came to mind was of a programmer writing code alone in the confines of their room, isolated from other collaborators, striving to create something valuable. However, today, this image is far from reality, with hundreds of thousands of programmers, each with their own expertise, working collaboratively to develop software systems. This naturally raises a question:  Are other skills beyond coding needed to develop software?

MSTF media reports:

About twenty years ago, when the open-source software movement emerged, it allowed anyone to start a project, collaborate with others, innovate, and reach acceptable results on the subject under study. Through these collaborations, many bugs that may go unnoticed by one programmer are quickly identified by thousands of other programmers, thus improving the quality of the project. To understand the importance of software quality, consider those times when you were using your mobile phone and it suddenly crashed, or maybe the battery drained in an instant, and the phone heated up. These issues indicate the poor quality of your phone's software. Upon facing these issues, you may ignore them and continue using your phone as it is. But the consequences may not always be trivial. In many cases, you are dealing with much more critical software that has access to your bank account, your car, or even an airplane or space shuttle. The slightest mistake with these software systems would cost you a ton in terms of money and human lives. This is where software quality becomes vital, and you can’t afford to ignore the slightest bug in the software.

Given that widespread interaction is necessary and inevitable in achieving efficient software, another question arises: What is the mechanism by which this cooperation takes place? And how can we access the wealth of information from other programmers, using it to avoid repeating their mistakes? Ahmed Hassan, a professor at Queen's University in Canada, has come up with an ingenious solution to this challenge. He explains, “Today’s software systems are highly complex networks of multiple components interacting with one another. With the increasing complexity of software design, the idea of a single person—or even a team of a hundred engineers—working in one place has become obsolete.” Instead, Hassan believes, we now have large teams with programmers collaborating across the globe, each bringing their own expertise and integrating it with that of others. This results in the increasing complexity of software systems. As software systems continue to advance and become more complex, user expectations for quality and user-friendliness also rise. According to Hassan, collaboration is at the heart of this process.

Hassan's idea for this all-encompassing collaboration of programmers around the world is reflected in his groundbreaking work, Mining Software Repositories (MSR). He recalls, “About 20 years ago, I had an idea that denoted a new path for software development. It was then that I realized that every step software developers take in their projects leaves a digital footprint.” This footprint contains a huge amount of data, ranging from code changes to the data obtained when customers use the software. “In the past, this data was merely stored and never effectively utilized to improve the quality or productivity of software projects. My key idea was to clean and organize this data so that it can be used by developers,” Hassan explains. He suggested that developers can use this data to increase productivity or improve the quality of software systems.

Today, we encounter something similar in our daily lives when, for instance, we are shopping online and the website recommends related products based on what other customers have purchased before. Hassan draws a parallel: “When you buy a book from an online bookstore, you are usually presented with suggestions such as ‘customers who bought this book also bought ...’ Now imagine designing a system for programmers that does something similar.” In this system, when programmers change a piece of code, they get the message that ‘99% of developers who have changed this section have changed another related section as well.’ This insight can prevent many problems in the future, minimizing their impact on customers. The well-known tool, GitHub Copilot, was created based on this idea. This tool can predict and suggest line continuations or even larger sections of code while the developer is writing code. This technology is built on artificial intelligence by analyzing a vast amount of code worldwide and creating statistical patterns. It essentially serves as a predictor that guesses the probability of the next suggested word or phrase. The technology is a deep connection between artificial intelligence, software development, and the challenges that programmers face.

Ahmed Hassan's achievement signifies the unprecedented role of collaboration in software development. His response to the opening question is clear and indeed surprising: “Today, coding takes up 15 or at most 20 percent of a programmer’s time. The remaining 80 percent is spent on collaboration, interaction with others, and planning.”

This article was previously published in the second issue of the Observatory magazine.