Some guiding principles
As we go through this book, here are some principles that might help you get to grips with the new environment that you are exploring.
Programming is cultural
Something quite curious about programming is that it is extremely subjective and is that although computer technology and therefore programming seem very objective, there is a huge cultural diversity. Technologists group themselves into very strong, and often adversarial, communities.
What do I mean? Let’s start with programming languages. Some languages may be affiliated with specific corporate interests. Others will be dismissed because they have origins from a particular computing heritage. Others still will be very fashionable.
Let’s try to walk through some examples. If you have not heard of any of these terms before, fear not. Think of them as different types of ice cream.
Java is connotated with large corporations and serious business both because of its high adoption within those environments, but also due to the fact that
Some programming language communities are very devisive. Adobe Flash was originally heralded as the way to bring advanced interactivity to websites. Its syntax was similiar to the common JavaScript language, but it had far more capability. Unfortunately though, Flash websites were unusable for website users relying on screen readers. They also required very large downloads. This led to an association of Flash web developers as being people who cared much more about aesthetics and presentation of content, than the content being accessible to the widest audience possible.
These cultural styles do change. As soon as Apple, Inc. dropped support for Flash when it released the iPhone, its popularity diminished. JavaScript used to be seen as a clunky, brittle, yet necessary evil. It is now seen as extremely powerful system for developing software that is very accessible.
Culture goes further than that though. Every part of software development includes communities devoted to specific text editors, specific hardware to write software is written on, specific operating systems to run text editors, specific methods of collaborating with others, …
When you begin to start your first code, you should ignore almost all of this. You should learn to program the language which someone close to you knows. If no one you know knows programming, read the appendix (note to self: write the appendix). The quicker you can get up and running, the quicker you can start to learn.
Programmers use analogies
Much of the difficulty in learning programming comes from the fact that your brain does not know how to categorise the information that it is receiving. This is not helped by the fact that programmers will tend to use analogy a great deal. They do this because the underlying technology is very complex.
When you come into a new field of expertise, your brain will attempt to attach new information into pre-existing buckets.
As you will see, you might find out that you cannot create threads with strings. Nor does glue code have anything to do with objects.
Just like legal jargon, things that sound like ordinary English can be much different when used with in the field. Jurists themselves have a term for jargon: a term of art.
Programmers like to simplify
One part of programming that you will not be able to overcome is that programmers like to make things simple for themselves. Unfortunately, the effect of simplificiation can be to exclude others.
It is hard to describe this phenomenon without further context. Just be aware that it’s a problem. When you encounter it, you should be reassured that
Programming works by building up components
Much of programming involves combining simple things that achieve a little by themselves into complex things that achieve a great deal.
Ultimately, everything that you are see on computer monitor is the product of a process that started with zeros and ones interacting. The wonders that are enabled by technology today, including the programming languages themselves to build those wonders, are possible due to the fact that people spent a great deal of time thinking about how to get zeros and ones to interact.
As you read through other technical material, this will be known as abstraction. Unlike abstraction in the creative arts, abstraction in programming terms tends to make things more useful and practical. If it helps, you can substitute the word think of things
Programming works by breaking down problems
Problems are complex. In order to achive an overarching goal, many things need to happen correctly, in the right order. When building a technology system, it is also important to make sure that different parts of the solution are able to inform the other parts that they are done and that there are processes in place for dealing with errors.
Programming works by making trade offs
Every time we make a decision about which components to build up together, or which parts of a problem should be split into sub-problems, we make trade offs.
The trade offs that programmers make means that there is a great deal of scope for creativity. As you
Programmers will have the
Because programmers need to make decisions
Naming things is hard
As you enter your programming life, you should be very prepared to spend many minutes looking at the computer deciding what things should be called. It will be fustrating. It will be mostly unavoidable.