Published: September 2015
When you write software, you need to be at the top of your game. Great programmers practice to keep their skills sharp. Get sharp and stay sharp with more than fifty practice exercises rooted in real-world scenarios. If you’re a new programmer, these challenges will help you learn what you need to break into the field, and if you’re a seasoned pro, you can use these exercises to learn that hot new language for your next gig.
One of the best ways to learn a programming language is to use it to solve problems. That’s what this book is all about. Instead of questions rooted in theory, this book presents problems you’ll encounter in everyday software development. These problems are designed for people learning their first programming language, and they also provide a learning path for experienced developers to learn a new language quickly.
Start with simple input and output programs. Do some currency conversion and figure out how many months it takes to pay off a credit card. Calculate blood alcohol content and determine if it’s safe to drive. Replace words in files and filter records, and use web services to display the weather, store data, and show how many people are in space right now. At the end you’ll tackle a few larger programs that will help you bring everything together.
Each problem includes constraints and challenges to push you further, but it’s up to you to come up with the solutions. And next year, when you want to learn a new programming language or style of programming (perhaps OOP vs. functional), you can work through this book again, using new approaches to solve familiar problems.
Why did you decide to write this book?
I learned to program when I was in fourth grade. I was struggling with some math problems at the time, and my dad showed me how to write a program to quiz me at math problems. My dad wasn’t formally trained, he just knew enough to show me what to do. And so programming, to me, was about solving problems.
But when I got to college, my professors were more interested in doing algorithms and puzzles. I was never great at mentally connecting the dots. But I had one teacher who was very focused on real-world programming; writing programs to solve business problems. And everything clicked.
When I got into the field, I found myself in many situations where I was teaching people to code, and I needed exercises for them to do, so I started looking at the things I had to write at work and simplifying them down. I’ve written BMI calculators, widgets for web sites that pulled down the weather, URL shorteners, and many other things that can teach programming concepts in context.
So when I became a teacher full-time a few years ago, I began introducing these exercises into my classes for additional practice in order to prepare students for assessments. I saw student performance improve significantly. And I figured that if it worked for me, it would work for everyone.
So this book is for beginners?
Over the years I’ve had to learn some new programming languages, and I’ve returned to these programs to get me through that. When I was learning Go a few years ago, I tried these programs. And I just did the same thing this last year with Elixir. I’ve seen how the “todo list” program has become the way for developers to get their minds around an MVC framework, so I think there’s a ton of value in solving known problems with a new language. I also think it’s easier to learn a language when you have some goals and direction. When you’ve never used Swift before, even something as simple as making a mad-lib program can be a great experience.
What’s your favorite exercise in this book?
One of the exercises in the book uses an API to show you how many people are in space. The API shows you their names and which spacecraft they are on. First, I think it’s awesome we live in a time where people are in space. But also, I think the exercise is interesting and engaging, while still having you work through the concepts of pulling down remote data and formatting it.
What do you hope readers take away from the book?
I think we get better with practice. If you are playing piano and you only go to your lessons, and you never practice in between, you won’t be as good as you could be. And I think that is the same with writing code. I think if you go through a degree program and only do the work that’s assigned, you won’t get as much experience. And I believe that the more languages you explore, the better you’ll get at solving problems. So I hope that by reading this book, people will be inspired to practice with the language they know, or even to try a new language.
Published: September 2015