by Philip Kushmaro

Does the conversation on coding already need to change?

Opinion
Sep 13, 2017
Digital TransformationSoftware Development

There’s been a lot of talk lately about the importance of learning to code.

coding / development / data / MacBook Pro laptop
Credit: Thinkstock

It feels like it just started, yet the current conversation on coding may already need to change. What was once the language of nerds and introverts is now mainstream culture. “The next blue collar job is coding,” says Wired magazine. In Britain, coding classes are now compulsory for students aged 5 to 14, and there are calls to do the same in the U.S., as if the future of our children and nation depends on it.

But how coding is done may be very different, very soon. And the conversation today should not be about creating an army of coders to change the world, but rather how the process itself will look, because that will ultimately steer the course for coding.

There’s a popular analogy that software development is like building a car. But if you ask any programmer – and I did – they’ll tell you that coding is not at all like an assembly line. For years, most coding activities revolved around creating something that previously did not exist. It’s was more like building a car, all by yourself, from scratch.

The funny thing is that’s exactly how cars were once made. When automobiles were first invented, the very first cars were entirely made by hand by just a few workers. Of course, all of that changed with the introduction of the assembly line and mass produced parts. Despite the lone inventor stereotype, coding is more of a collaborative process than many people realize, albeit a problematic one. Just like the early years of the automobile industry, the issue is shareability and compatibility of code “parts” or “components.”

At least one company says the age of code components has already begun. Tel Aviv-based Bit allows developers to share their code across projects, teams and even the community – and use code components like “Lego bricks.” The idea is that any functionality of code can be shared and made reusable and accessible to everyone. “The purpose of Bit,” says CEO Ran Mizrahi, “is to enable developers to organize and share the components their projects are made of, and use them in any applications, without having to change their code or working too hard to find them.”

“For teams working on software projects, sharing and composing existing components into their applications is a painful issue.” Says Mizrahi, “This really shouldn’t be that hard. Developers should be able to easily organize and share their components, and we help them do that.”

The same kind of thinking led Facebook to publish the popular React framework, encouraging developers to work with components that let users split the UI into independent, reusable pieces, and think about each piece in isolation. Conceptually, components are like regular JavaScript functions. They accept arbitrary inputs (called props) and return React elements describe what should appear on the screen. Google is also leading in that direction, with the widely used Angular project and other projects such as Polymer. Not far behind is rising community-driven project Vue. All of these technologies are a part of the same thinking, centered on modularity of software.

On the other hand, someday we may even let software do the dirty work for us. In 2016, Microsoft Research and the University of Cambridge built AI software called DeepCoder, able to write code that could solve simple math problems. When asked to solve a new problem, DeepCoder also has the ability to search online and test potential lines of code much the way a human programmer might look for code shortcuts. 

At present, the system is limited to programs with five lines of code, but in time, systems capable of understanding the mechanics of complete coding languages will be able to write more sophisticated code. “Ultimately, it could allow non-coders to simply describe an idea for a program and let the system build it,” says Marc Brockschmidt, one of DeepCoder’s creators at Microsoft Research in Cambridge, UK. But we may be decades away from this sort of functionality.

In the meantime, there’s obviously a need for both more coders but more importantly, more effective means of coding itself. DeepCoder may be able to search trillions of lines of code in minutes, but your average developers now spend, according to a recent Google study, between 25% and 65% of their time roaming the web, hoping that another developer has run into the same problem and provided a relevant solution. Teams working together are having trouble sharing code even when sitting in the same room – and the bigger the team, the worst it gets.

As coding’s importance increases exponentially, open-source code that is organized and accessible will be imperative. It’s likely we’ll see the coding model evolve toward an emphasis on composition and reuse of shared components – modularity rather than building from scratch.

The process has already begun, and it’s an important conversation worth having. It’s more than simply coding as a job of the future. All of the world’s code made available to the next generation of coders will democratize change in ways we can’t imagine.