Understanding programming
-------------------------
.. index::
    single: Problem Solving

In the rest of this book, we will try to turn you into a person who is
skilled in the art of programming. In the end you will be a
*programmer* - perhaps not a professional programmer, but
at least you will have the skills to look at a data/information analysis
problem and develop a program to solve the problem.

In a sense, you need two skills to be a programmer:


*
  First, you need to know the programming language (Python) - you need
  to know the vocabulary and the grammar. You need to be able to spell
  the words in this new language properly and know how to construct
  well-formed "sentences" in this new language.

*
  Second, you need to "tell a story". In writing a story, you combine
  words and sentences to convey an idea to the reader. There is a
  skill and art in constructing the story, and skill in story writing
  is improved by doing some writing and getting some feedback. In
  programming, our program is the "story" and the problem you are
  trying to solve is the "idea".

Once you learn one programming language such as Python, you will find it
much easier to learn a second programming language such as JavaScript or
C++. The new programming language has very different vocabulary and
grammar but the problem-solving skills will be the same across all
programming languages.

You will learn the "vocabulary" and "sentences" of Python pretty
quickly. It will take longer for you to be able to write a coherent
program to solve a brand-new problem. We teach programming much like we
teach writing. We start reading and explaining programs, then we write
simple programs, and then we write increasingly complex programs over
time. At some point you "get your muse" and see the patterns on your own
and can see more naturally how to take a problem and write a program
that solves that problem. And once you get to that point, programming
becomes a very pleasant and creative process.

We start with the vocabulary and structure of Python programs. Be
patient as the simple examples remind you of when you started reading
for the first time.
