Saying Hello
0110100001100101011011000110110001101111,Even something as simple as hello can seem strange and alien in machine language. Yet our world today in 2018 is shaped by 1’s and 0’s. These 1’s and 0’s represent state at the hardware level. it could be the voltage of a pulse or the change of a magnetic pole of a small section of a hard drive. What matters is that a combination of these binary states means something to us beyond what a machine can understand. They create the programs that control air planes, power space travel and send grumpy cat pictures to your Grandma at the speed of light.
At my job I rearrange electrons on motherboards to make computers do stuff that is occasionally useful.
I say occasionally, because programming is hard and I like many programmers spend more time breaking and fixing things than actually making anything. In other words at my day job I spend more time reading code than writing it.
Today I want to talk about the human part of the computer programming equation and why you should care.
In reality the apps we use each day are typically human, full of errors ( we call them bugs ), full of creative and innovative solutions and a reflection of the effort put in by the programmers behind it. There are armies of programmers toiling away everyday trying to make the next big app or improve the one you use everyday. Code in many ways is organic and needs constant attention to avoid code rot. ( that may seem like a strange term but is one that is used ).
Understanding the magic behind programs we use everyday can make those seemly strange errors a lot less strange.
We have all had the experience where a program just stops working or a screen freezes. I used to think how could this happen? Aren’t computers smart? I used to blame myself, maybe it’s something I did something wrong. I can’t use this program correctly.
Turns out computers are dumb, Although don’t say that too loud because they are listening, but they are totally stupid. They can’t do anything unless someone tells them to do something and they will do exactly what they are told, and someone somewhere has made this program do this in this scenario.
What I’m trying to say is that It’s not you, it’s me. I’m not saying that there aren’t programs that require some learning, I’m just saying that when things go wrong and you are no longer in control, it’s the programmers fault.
The way programs are made have yet to be agreed on, especially on the web.
Programmers talk to machines through languages that are closer to english and these languages eventually get translated into machine code that then gets boiled down to binary ( 1’s and 0’s ). As of today there are there are over 500 programming languages many of which will come and go. This number alone suggests we as a profession are still figuring out the kinks to make better and more efficient programs and each language provide a different set of pros and cons.
There are infinite ways to write a program and I’ve yet to hear any two programmers that agree completely on every approach. I’ve even heard some arguments on how words should be spaced out. It’s actually a very common argument, to point that companies have to set policies on how words are spaced.
I just want people to know that we haven’t got this whole programming thing completely understood or standardised and that the feedback from you, the user is actually very insightful.
Programmers are human just like you ( I promise ) .
At the heart of it we are creators and we want our little creations to out grow the nest and flap there little code wings to freedom.
We also want to to hear what you think. Although we are very attached to our creations so please be kind. Our thoughts are literally running on machines and it can be a real challenge to not the criticism personally.
However It is a very valuable part of the process. I personally want to make things that people enjoy using so getting quality feedback is extremely valuable.
For me learning to program has changed my life completely.
- I enjoy going to work every day.
- My problem solving ability has improved drastically.
- I am on the road to having a lucrative career that will provide for my family and give us financial freedom
Next time you get that mysterious problem with a program that you can’t seem to solve think of the programmer, sun starved and alone, who forgot to consider that your hi definition picture of your cat would be bigger than 20MB.
Computer programs are a reflection of the humans behind them. For me to make better programs It’s up to me to be a better human. I have to value the craftsmanship behind coding, accept that I won’t always have the answer right away and to appreciate the design process and value the feedback of the user.
The magic of technology In reality, isn’t really magic at all, human attention has the power to transform the world around us. So choose what you want to pay attention to and dedicate to your craft and that is when the real magic happens.
Thanks for reading!!
What an excellent read!
I spent 6 hours, today, working with a group of Sixth Formers teaching them about Object Oriented Programming using Python.
Some of the key points that came up:
Looking forward to more posts from you.
Thanks, very much. I totally agree, whats most important for me is readability and consistency. So I pick a convention and stick to it. Also I make variables and function names explicit to describe what they do. I try to be as expressive as possible and abstract functionality as early as I can.