Thursday, 22 January 2015

The Prose and The Python (aka Why geeks should write)

School is over and now you are in college! You dreaded all of those English classes and laughed about people going for their English majors. After all, you have a promising career in tech. Perhaps you will be your own boss and form your own start up; perhaps you will be found by a headhunter from an established company that will offer you an amazing starting salary. Whichever way you go, you find no room for writing proper documents in your life. Unfortunately, by doing that you are handicapping yourself in several ways! Office environments thrive when there is proper communication, both verbal and written, between the different elements that make the company. Furthermore, writing properly will also help with your programming skills. Hence, we writing helps us in two dimensions: inner and outer.

Starting with the outer dimension, proper communication is vital wherever you go and whatever you end up doing. If you wish for people to do as you want, you need to write properly and concisely. Being vague or confusing will get you in a lot of trouble! Imagine that you want a specific method to be created, but you were not clear about the arguments that would be involved, then the person working with you will probably spend ours elaborating something with the wrong arguments. When it is time to patch things up, more time needs to be spent. It could be worse if a lack of communication leads to calculations going wrong. For example, when NASA decided to send a probe to Mars in 1999, an asymmetrical use of units in its systems lead to the probe crashing. Some part of the system used imperial units, while the other used metric units.

However, communicating with other people is not the only useful aspect behind writing. When you write in prose, you are sharing information step by step. That is similar to how programming works, since the compiler does exactly that when reading your code. Hence, getting into the habit of writing logically sound sentences in prose could lead you to have a clearer mind when writing and reading code. Furthermore, when writing code you need to be precise about what you are trying to execute: there are no middle grounds! If you learn how to write concisely in English, how far would you be from writing concisely in code?

Finally, writing and expressing ideas properly also enhances your ability to read and understand ideas correctly. There is no better art critic than an artist himself since he has first hand knowledge about the techniques employed. If you are having a hard time understanding English instructions, then you should start writing yourself. You will see how, by improving the elements of your written words, you will be able to understand better the elements of someone else's written words.

So it is clear that everyone should write, specially people working with code! The effort you put into understanding higher level languages will be reflected once you move on to lower level languages. I guarantee that!

The Course Challenges
Besides the normal post secondary education challenges, this course brings some new challenges, completely different from the ones from CSC108. Since we already know the basics (AKA terminology and all the basic objects that we can play with), it is time to kick it up a notch with new classes, created by us, that will allow us to do some interesting things. I am looking forward to learning about the new data structures we will see, particularly linking nodes and binary search trees. I do not think they will be complicated to learn, yet there are two aspects surrounding them that might bring some trouble:

  1. Recursion
  2. Mutations
The problem with recursion is that it involves the function/method calling itself, carrying information forward from the last call to the first call. Sometimes it will branch out, and it seems challenging to understand how the data coming back will be used and organized.

On the other hand, mutations offer a different challenge. Making changes inside these data structures involve recursion of a higher level. Honestly, I haven't got a clue of how to do this!

This course will be interesting, challenging, and hopefully fun! Lots of attention to detail and algorithm building will be necessary.


  1. Nice slog. I like your theme, and layout. And the post of course.

    1. Thanks! I enjoyed reading yours, too! You seem to be a very prolific slogger. Keep it up!

  2. This comment has been removed by the author.

  3. This has been intriguing to read, looks like you've got the "geeks can write" thing down for ya :)

    1. Thanks! I checked your SLOG and it looks great. You also have the whole writing thing pinned :D