# [[Coding and writing are converging]] %% Related - [[Strength Finder Theme: Communication]] - [[Software Development]] - [[Writing]] - [[Offline]] [[Artificial Intelligence]] %% <iframe width="560" height="315" src="https://www.youtube.com/embed/sbZ3A8GrDk0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> ## The perceived tension Coding and writing are often seen as being positioned at different ends of the spectrum. At one end, coding is terse, strictly logical, and limited. On the other end, writing is unbounded and often verbose. Coding has traditionally been in the domain of computer science and writing in literature or creative arts, but they share fundamental roots. They both seek to communicate concepts to others or to ourselves, and are inherently creative. Writing and coding are both abstractions of thought; they're a way of distilling pure thought into a form that is more freely shareable. The difference so far has been in the types of information being shared, but that difference is narrowing. ## Convergence ### Coding is moving towards writing #### Borders are shrinking, and the internet is expanding Coding is just another way to communicate, and the skill of communication not just with computers but with people is increasing in value as code is shared more freely. People across cultures and national borders contribute to open source projects, and code has become the international second language. It's now possible for developers to speak different human languages but understand the same piece of code and even collaborate on it. #### [[Artificial Intelligence]] is learning to interpret intention As computers get increasingly smarter and better with fuzzy searches, we are able to give them more and more abstracted instructions - closer to writing. ![[Thread by @Conaw - 100 Opinions on Programming Languages#^9af712]] As programming languages grow in complexity, syntax ironically becomes simpler and more accessible to new programmers. Concepts get grouped into abstract ideas that are beginning to mimic speech. #### X as code [[Test as code]] and [[Infrastructure as code]] movements are moving away from complex syntax and vocabulary and towards the simplification of code into simple, declarative words to describe tests or even application infrastructures The [[Low or No Code Movement]] really just represents this shift. To reframe the objective of the movement, it's not code itself that the movement seeks to minimize; it's the gap between code and writing. What many proponents call "No Code" is really just human speech, written in a logical way. ![[Thread by @Conaw - 100 Opinions on Programming Languages#^90da17]] #### [[Programming languages are becoming more abstract]] - [[obsidian-playbook/Using Obsidian/02 Making Notes in Obsidian/Markdown]] - [[YAML]] - [[Python]] ### Writing is moving towards coding #### Writing online is writing for a global audience From the other end of the spectrum, internetworked communication has also influenced our writing styles. We now prize writing that is concise and precise where we used to value flowery speech, and this shift in attitudes is due in part to our need to interact with people who speak different native languages. We're more careful (or should be) about not using colloquialisms or abbreviations in our writing that some in our audience might not understand. Tools like [[Grammarly]] encourage simplicity in sentence structure. Browsers and text editors correct our spelling and grammar, nudging us all towards a style that is more universally comprehensible. #### Chat bots and personal assistants are improving their understanding of our speech Humans are increasingly speaking to machines, and the machines are speaking back. Smart speakers like [[Alexa]], [[Siri]], [[Cortana]], and [[Bixby]] can only be controlled in certain ways. Technology is improving on this front, but for the most part a syntax has emerged to enable us to perform more and more complex commands with just our voice. - Trigger: "Alexa/Hey Google/Hey Siri" - Keyword: "Ask" - Call a function: "iRobot" - Command: "to start cleaning" #### Language is informed by the technical limitations of its time We're also seeing some advances in artificial intelligence, particularly around communication abilities. [[IBM Watson]] uses machine learning to analyze text and answer questions in natural language. [[OpenAI]]'s [[GPT-3]] can create convincingly human texts given little prompting and information. ![[Thread by @Conaw - 100 Opinions on Programming Languages#^4b47ee]] #### Elements of programming are working their way into our writing. ##### Markdown Despite the fact that rich text is more readable and attractive, plain text is still very much in usage, and its growth has allowed non-programmers to venture into lightweight languages like [[obsidian-playbook/Using Obsidian/02 Making Notes in Obsidian/Markdown]]. Services like [[IFTTT]] and the proliferation of programmable games like [[Minecraft]] have also introduced some of the rigor and syntax of coding into human language. [[Roam Research]], a "tool for networked thought", is growing an ecosystem that mixes human language with programming keywords. ##### Test cases and user stories The speech we use to describe and [[Lightweight feature planning|plan features]] is becoming increasingly formulaic, terse, and programmatic. ![[assets/speech-cake.png]] `As a user, I want to be able to add and subtract to my account balance, so that I can see how much money I have left in real time.` [[Gherkin]], a "business readable language" that applies concepts from [[Behavior-Driven Development|BDD]], uses this syntax: ``` Feature: Title of the Scenario Given [Preconditions or Initial Context] When [Event or Trigger] Then [Expected output] ``` [^guru99] The goal of Gherkin is to translate business requirements into a more logical structure that can serve as the basis for tests, but also code. Gherkin's structure is less ambiguous, making it easier for developers to interpret what requirements mean into programming languages. #### The pandemic and the rise of remote work The experience of being in lockdown drove many of us to seek human connection in non-physical ways, and this means not just spending more time writing, but spending more time _adding context_ to our writing. Suddenly, when we haven't seen our nephews in a year, it becomes more natural to express that sentiment in words or emojis. #### Emojis Emojis have been adopted into [[Unicode]]. This is a step towards encoding emotion and context as words. ``` if 😀: play "I Gotta Feeling" else: if 😫: play "Kick in the Teeth" ``` ## [[Effects of the convergence of code and writing]] ## See also - [[The Convergence of Code and Speech]] - [[Future careers in Tech]] - [[The Future of the Professions: How Technology Will Transform the Work of Human Experts]] ## References - [[Thread by @Conaw - 100 Opinions on Programming Languages]] - [[Tweets From Brett Goldstein]] - [[Tweets From Brett Goldstein#^c6a203]] [^guru99]: Guru99. _Gherkin language: Format, syntax, and Gherkin test in Cucumber_. Accessed in June 2021 from [here](https://www.guru99.com/gherkin-test-cucumber.html).