The purpose of Tech Tuesdays is to provide non-technical employees or founders of startups with background on how technology works so that they can better communicate with engineers and also better understand technological constraints and opportunities. With that in mind I will take a fairly different approach to programming from say Codecademy or Udacity which tackle hands on code writing. I will instead try to provide a lot of context and explain terminology. You should be able to get a fair bit of insight from that and maybe the motivation for one of the hands on courses.
I wrote a previous Tech Tuesday post giving a brief overview of programming and defined programming as “telling a computer what to do.” While seemingly trivial it offers a good way of thinking about many of the issues involved. For a moment substitute “person” for “computer” and think about “telling a person what to do.”
1. Which language should you speak? Speaking English to someone who only understands Mandarin won’t get you very far unless you have a translator. But even within English there are vastly different sets of vocabularies — I remember my English teacher exhorting us to go beyond “go, get, give” …
2. How do you form a correct sentence? This is known as syntax and includes such things as word order and punctuation. In German, for instance, we put the verb at the end of sentences.
3. What do the words and sentences mean to the other person? Even if you put words in the correct order it is easy to say things that don’t make any sense. Or you may be using words that mean something different to you than to the person.
4. How do you refer to concepts as opposed to just concrete things? If I am in Dim Sum restaurant I can point at a specific dish. But how would I tell someone else to go there and do that?
5. How do you break down what you want the person to do into smaller steps? For instance what if you want the person to draw an owl?
6. How do you avoid repeating yourself? What if you need to tell another person to do the same thing? What if it is not exactly the same thing but slightly different?
7. Does what you told the person make sense? How would you know if it didn’t? Do they have everything they need to carry out what you asked them to do?
8. How do you know if the person is actually doing what you told them to do? Maybe they are stuck and don’t know what to do next or maybe they are off doings something else altogether.
9. What if there is someone else also telling this person what to do? How do you coordinate that?
Each of these questions has analogs when it comes to programming, i.e. telling a computer what to do. Over the course of the upcoming Tech Tuesdays we will dig into these one by one, starting next Tuesday with a closer look at different programming languages.