work. Even a basic knowledge of programming will help you understand what these people
are doing and communicate more effectively with them.
Those who do not intend to make programming into a career might occasionally come
across problems where they realize that they could save a lot of time if they could get a
computer to do it for them. When that happens, even a basic knowledge of programming
can make your life a whole lot better. Data is becoming a bigger and bigger part of the
business world. The vast amounts of data created and collected by modern technology can
not be processed by humans manually. To sift through this data to find meaning requires
using machines, and that means using software. You can either pay someone else to write
it or you can write it yourself. That latter is only an option if you know how to program.
While many might be tempted to view programming as an advanced concept, the reality
is this book is going to take you back to your early education quite a few times. The reason
for this is you spent a lot of time in those early years learning how to solve certain basic
problems. The approaches became second nature to you and you no longer think about
them, you just do them. In the context of programming you have to go back and examine
how you solve problems, even ones you have been doing for a long time. The reason for this
is that now you have to tell a computer how to do those same things, and the computer
will need detailed instructions. The reality is, the programming presented in this book is
not an advanced topic, it is basic logic and problem solving, done at a level you probably
have not worked at since you were much younger.
We often refer to programming as an art. Programming shares many features with
traditional arts like creative writing and painting or sculpture. The programmer first creates
an image in his/her mind of what he/she wants to bring into existence. This is followed
by a period of work bringing that mental image into a more real form. The end result
is something new, born from the imagination of the creator, that can be experienced by
others.
2
The digital medium might, in some sense, seem less real than paint, clay, or stone,
but it is also remarkably dynamic. You can create things in a computer that you have no
chance of creating in the real world by hand. You can also create things that are remarkably
useful. All the software you interact with every day, whether to get things done or just for
entertainment, was written by programmers. The exercises and projects in this book have
been created with the goal of giving you the ability to express your creativity.
Programming has another characteristic in common with other creative arts, if you want
to be good at it, you need to practice. There are many ways to program the solution to any
problem. That introduces a lot of nuance. This book will strive to instruct you in regards
to the strengths and weaknesses of different approaches, but to really understand how to
write good code to solve a problem, you need to have the experience of solving similar ones.
Imagine an art major who never draws or paints except for class projects, not even doodling
in notes, or a creative writing major who never writes a story except the ones required for
class. Hopefully those hypothetical people seem silly to you. A computer science major who
never writes code beyond what is assigned for class is exactly the same. So explore the art
of programming. Have fun with it and try to do something that interests you.
Some people might wonder why they should be using Scala to learn programming. Scala
is a fairly new language that has gained a lot of momentum since it was adopted by Twit-
ter in 2009, but there are definitely other languages that are used more for professional
development. Scala is newer than languages like Java and Python, and this means that
it has integrated lessons learned from those languages. It has more modern features that
those languages are struggling to integrate. In particular, Scala has found significant use
in developing web sites that have lots of users and doing big data analysis. However, the
2
We particularly like the tag line of @muddlymon on Twitter during the time we were writing this book,
which read “I make things out of ideas by wiggling my fingers.”