Clarifications about this Book and Learning Java
Learning to program is not as difficult as you think. In my case, I remember that even before starting to read the theory, I believed it would be impossible for me to learn programming, at least at an advanced level. Mostly because I thought it would require a very high level of commitment and hundreds of hours of investment. I’ll be honest: I was convinced I wouldn’t understand anything and that after a couple of weeks, I would give up on my goal.
I won’t lie to you, it is true that to learn you will need to dedicate time, both reading theory and doing exercises. But it is not necessary to have previous experience or exceptional computer skills. The only thing you need is motivation and suitable educational material.
I found several alternatives on the internet, but none fully convinced me. Maybe I was just unlucky. Courses that were too expensive, incomplete tutorials, forums with answers to very specific questions, random videos, and ultimately, a lot of material that, although often valuable, was useless to me.
What I needed was something structured to learn step by step and have a sense of progress that would motivate me to keep learning. Then I thought about buying books. Generally, this kind of material is expensive and I didn’t want to spend much money on something I wasn’t even sure I would like. Luckily, I found quite a few second-hand copies. The problem was that, without knowing what I needed, I found very advanced material or related to other Java areas like interfaces or databases. I even got some beginner books where I didn’t understand the first sentence. Today, knowing how to program, I reread them and realize the structure and order of topics are terrible.
However, I didn’t give up and kept gathering information wherever I could. It wasn’t an easy path, as sometimes I was sure I had learned something and shortly after discovered I had misunderstood it. But with perseverance, almost everything is possible, and in the end, I was solving complex exercises with notes that now explained everything step by step and in a structured way.
I am aware that many others have been, are, and will be in the same situation. So the idea of this book is to help all those people who, for whatever reason, decide to learn programming in Java. My intention from the start was to create material that advanced programmers would look at and think: “I wish I had this book when I started programming.” For my part, I can say without remorse: I wish I had it.
Before continuing, I would like to clarify a few things. I don’t believe memorizing concepts is the best way to learn anything, especially programming. It is true that in the following topics you will see many fundamental theoretical concepts that you must understand, but you don’t need to waste time memorizing them. Little by little, by doing exercises and rereading theory, all that information will settle in your mind almost effortlessly.
Continuing on the topic, you must understand that what you are trying to learn is a language. What I mean is that, for example, in English there are many ways to refer to the same concept. The same will happen in Java. If you need to create a program to organize your weekly schedule, that code can be written in many different ways.
In this topic, you will find many solved exercises. The idea is not for you to memorize them. I have solved them one way, but maybe you find another that is even more efficient or organized. Once you have some programming experience, you will realize that the hardest part is not the syntax itself, but thinking about how to use it to solve the problem you need to address.
What I like about programming is that you can see each exercise as a challenge and even as something fun. Some people do sudokus, others word searches, you can solve Java exercises. It may sound funny now, but soon you will discover the satisfaction of solving a problem that had been bothering you for hours, days, or even weeks.
As a personal tip, I suggest you don’t force yourself to learn everything at once. In my early learning steps, I tried to dedicate dozens of hours a week, and my mind became overwhelmed. It is true I was progressing quite a bit, but there were many key points I didn’t fully understand and it was a bit frustrating. Due to work reasons, I had to stay away from Java for a month, and when I resumed, I was pleasantly surprised. With a fresh mind, most things I didn’t understand were now totally clear, and all the mental block I had disappeared. So I recommend you go step by step.
This book has a part of history, another of theory, and another of practice. I think the history makes it more enjoyable and different from other publications. Also, it is a motivation to keep reading. Feel free to skip those pages if you are not interested. On the other hand, if you already know the theory, you can go directly to the exercises. I have tried to make the book versatile and able to satisfy the needs of all readers. The goal has been to gather in one volume everything necessary so that anyone, regardless of prior knowledge, can end up programming fluently.
Obviously, the story is completely fictional and not based on any real person or scenario. Now, after these clarifications, I wish you luck in your learning.