I am Geono Kim, a software engineer at Annot. I am working with Mary, the writer of ‘Non-developer in the coding world part one’. (I can’t believe she’s writing a Trilogy. And it’s barely part One. For god’s sake!)

Ever since I stepped into this software world, I’ve always enjoyed writing something in code. Learning algorithms during Data Structure class was my first step in becoming a software engineer. Algorithms were all written in pseudo-code. To understand these algorithms, I needed to know the grammar of the code first. After I have some knowledge on its grammar, I need to read the code line by line to understand each action, and then compare them with the behavior described in the textbook. To be honest, it was quite difficult to understand every single line. Now that I think about it, I was just an inexperienced student full of passion who was only trying to prove that I’m not a fool, but on the inside, I sincerely hoped that somebody would explain to me every thing line by line.

After I finished undergrad, I entered grad school right away. To my surprise, I found myself doing exactly the same things I did during my undergrad years. I was still looking at Kernel/sched/auto_group.c line 19 “init_task->signal->autogroup = &autogroup_default;”, desperately trying to understand what the code was doing, and still wishing someone would explain the code to me. I thought that it was natural because I was a student. I thought that once I become a professional software developer, I would be able to read any code without effort, and to write code as if it was my mother tongue. When I finally got a job and worked for two years, I realized that’s never going to happen.

A block of code from Linux Kernel

Software languages are totally different from human languages (as everyone already noticed). We write software in software languages. They are just tools. Of course, it is important for developers to think like machines (as Mary said in her post), however, there are lots of things developers cannot explain clearly only using software languages. Also, unfortunately, the most important parts of software can only be described in human language. No matter how self-explanatory the code may be, there are parts that cannot be explained without additional explanation(=human language). One of the best ways to bridge this gap is commenting — writing in human language on code. If you are a developer, you may have seen one or both of the followings: long, never-ending comments which try to explain everything, or line-by-line comments which does not let you read the code. Both are annoying, obviously. Comments easily become disruptive. There have been a lot of discussions about commenting on code. So some developers argue that we should use self-explanatory code to replace comments……but I doubt that. According to Chomsky Hierarchy……never mind.

Most importantly, comments have been around for several decades. While software frameworks, operating systems, and even paradigms are changing fast, comments have made no progress. In this fast-changing software world, we should look for more efficient ways to communicate code in human language. Because commenting on code did not solve the problem, developers and students began to make their own notes, blogposts, and websites to analyze and explain how code works, in human language. The problem that we developers now face is that these information are not gathered in one place. We need to google it. Even if you are really good at googling, it takes up a lot of time to find the analyses. We all know that Github is gathering almost every code it can get. I believe that now it is time to start gathering comments in a big plate.

So comments need to be:

gathered in one place and easily available

separated from code

easily readable

easily discussed

This is why we started building Annot.

Today, software development is all about communication. Developers now need to think like machines but speak in human language in order to excel work efficiency. Complexity of software languages does not matter. What matters is the logic explained in human language.

We believe that Annot. can change software development culture, we believe this is just a beginning. And it will also help developers to communicate with stuffy non-developers like Mary Park. :)