Programming is social

Software programming looks at a glance like work done best done in isolation. Nothing could be further from the truth in my experience. Though you may be working on your little program alone, you should not dismiss the social component of the work.

I often say that “programming is social” to justify the fact that I know and practice multiple programming languages. I also use this saying to justify the popularity of programming languages like JavaScript, Go and even C and Java.

Let me elaborate on what I mean by “programming is social”:

  1. Programmers reuse each other’s work on a massive scale. Programmers are lazy and refuse to do the same task again and again. So they code frequently needed operations into packages. They tend distribute these packages. The most popular programming languages tend to have free, ready-made components to solve most problems already. JavaScript and Python have free and high-quality libraries and extensions for most things. So it pays to know popular programming languages.
  2. Most programmers encounter similar issues over time. Some programming difficulties are particularly vexing. Yet programmers are great at sharing questions and answers. You ability to ask clear questions, to provide clear answers, and to read and understand both, is important to your ongoing success as a programmer. Some programming languages have the advantage as they benefit from an accumulated set of knowledge. A programming language like Java does well in this respect. It pays to use well documented languages.
  3. Programming code is also, literally, a language. It is not uncommon that I will ask from someone that they code up their idea so I can understand it. Programming languages that easy to read win: Go and Python. Often, it pays to use the programming language that your community favours, even if you share no code with them, just so you can communicate more easily. It may be possible to write an Android application in Go, for example. But you would be wiser to using something like Kotlin or Java. Just because that is what your peers use.
  4. If you do great work, at some point you may need to teach others about how they can continue your work or use your work. Teaching requires good communication. It is helpful to have clear code in a language that many people know.


Daniel Lemire, "Programming is social," in Daniel Lemire's blog, November 19, 2020.

Published by

Daniel Lemire

A computer science professor at the University of Quebec (TELUQ).

One thought on “Programming is social”

  1. number 5. Even working in solitude, you need to communicate with your future self. Writing good comments, naming things accurately, automating tests, and following good practices will help you in the future when you come back to code that you want to extend. If you cut corners or over-optimize without documenting what you did, you can misunderstand code or introduce unforeseen bugs by eliminating needed ordering, references, updates, etc. that is not apparent directly in the lines of code. Examples of this could include code involving concurrency, structured data stored as byte arrays, and booleans that have slightly different meanings than implied by field names or getters.

Leave a Reply

Your email address will not be published.

You may subscribe to this blog by email.