A lot of people are software developers, which makes it seem like a totally normal thing to be able to type a few characters into a terminal and generate outcomes that run financial systems, control air traffic and power the world. But when you think about it more closely, programming as a concept is pretty mind-blowing. Here are a few of the stranger things out there about computers and software development.

5) Programming was commercially viable before lightbulbs

It seems weird that programming existed before the commercial harnessing of electricity, but it’s true. The Jacquard loom, a mechanical device that automatically wove textiles into patterns determined by chains of punch cards, was invented in 1804. The punch cards could be swapped out as desired and created intricate, easily replicable images, some of which required the data from hundreds of thousands of punch cards.

Lightbulbs, in contrast, existed in only the barest form in 1802. The incandescent design was improved upon in 1806 and in the following four decades, and still wasn’t widely available for practical use until the 1870s.

4) The scale of data currently produced by all programmers worldwide is impossible for the human brain to grasp 

Programmers build applications for millions, and even billions of users, who produce data in quantities too large to be understood by brains that evolved to deal with much smaller and more concrete numbers. In no other period of humanity’s existence has technology advanced so quickly and on such a large scale. Check out these figures: 

And only slightly more than half of the earth’s population has access to the Internet, so these numbers will continue to rise exponentially as populations and online connectivity grow. It almost makes you wonder how the human brain can cope.

3) Open source software development has utopian qualities

Is the closest thing to a utopia humanity has ever seen actually a community formed by anonymous, globally dispersed individuals, who generously contribute to collective projects to reach higher goals of continuous improvement and knowledge sharing, without any desire for personal gain? It just might be.

2) There’s an ongoing existentialist debate about the very nature of programming

And it has lasting implications for the future of software development. Like the industrial revolution, software has already impacted nearly every aspect of life in developed countries. But unlike traditional engineering, where physical objects are manipulated into visible, testable, mechanical inventions (e.g. early jets, steam trains, and bridges), software engineering requires working with countless abstract concepts that are linked together in non-obvious ways. Software is both physically light and incredibly large and complex—a program with millions of lines of code takes up basically the same physical storage space as one with a fraction of that, so huge software programs are commonplace. In such large systems, it’s hard to trace connections, and critical bugs creep in.

Some in the development community have begun to question whether the abstract way programming is done should be fundamentally changed to give creators “an immediate connection to what they’re creating,” reducing complexity by introducing “What you see is what you get” (WYSIWYG) interfaces for software development itself. To an extent, website builders have already done this, which is why anyone today can create a website without any knowledge of HTML or CSS. 

The result could be the democratization of software development. Developers make the applications used globally (and constantly), but currently comprise far less than 1% of the total population. Coding in the hands of everyone could open up a whole new world of ideas and uses for software, disrupting traditional development—similar to how widely accessible user-created, globally popular content has upended ideas of stardom and influence. The caveat is that people will still need to be able to work with programming languages in order to develop these tools. In any case, expect big changes in the next decade. 

1) AI is (kind of) already here 

Okay, general AI is still decades away. But in the past few years, narrow AI programs have passed the Turing Test and beaten qualified humans at Jeopardy, chess and go, as well as proven their ability to recognize images, drive cars and create art. More organizations are investing in researching the applications of neural networks, which might someday be the key to general AI. And we’re in the exciting early stages of using code that can write more code

It’s unclear what the future will hold, but programming will definitely shape the next generation of human interactions with the tools we’ve made. And in a way, when you code, you’re already basically talking to a computer in its own language, which may be the strangest thing of all.