Microcontroller Programming (1)
Published: 2023-05-06 10:47:57

Before we start learning anything, I must explain the reason why I decided to write this. When I first encountered microcontrollers, the internet did not exist, at least not in the small village near Slavonski Brod (Croatia) where I lived. Our English was at a zero level, and all the texts we could use as a reference were translations written only in books that we did not understand at all. Oh, how I wish I could give my knowledge and experience to myself some 15 years ago, but I cannot. I believe in the younger generation, the generations that have experienced a better school of today's technology. It is difficult to understand that my generation only met mobile phones and the internet in high school. Today, kids learn about them at the age of four. Times have drastically changed, and only new generations can keep up with new technology trends. My generation learned everything the hard way, no one could tell us where to go, we had to do everything ourselves. We did not even know if we were doing well, learning in the right direction, we were lost. Every new term was a new mystery for us, and the main reason for that was the fact that no one could properly instruct us, explain certain things that interested us at that time. Only in high school, in the nineties, did we start connecting to the internet and actively participating in electronics and programming forums. But even on the internet, we did not find answers to our mysterious questions. We asked questions on forums and received so many expert answers that we did not understand anything from them, and just when we thought we would connect the beginning and the end, someone would move the ends, and only then we would not understand anything. They often talked to us about concepts of different colors and shapes that did not mean anything to us. Today, after 15 years, I can understand the people who answered our questions. They were exactly today's "me", and if I really want to shake someone up with terms in order to show my own potential and experience to other readers, then I will respond with such a brutal text, full of professional terms, that only professionals can understand me. Even today, forums have not changed much. If I see a question on the forum "What is a microcontroller?", I will probably advise the guy to focus on cooking, agriculture, politics, or anything else. There is a reason why we answer like this on forums today, and the most important one is the fact that we cannot help him with just one text. We would need to write 100 pages of text to explain everything a beginner needs to know before becoming a somewhat decent programmer, and no experienced programmer has enough time or will for that.

Programming microcontrollers is not just a job, I would rather say it's a certain love for technology. Curiosity is the most important characteristic of a good programmer, but along with it comes laziness and stubbornness. By combining these three traits over time, we become good programmers. We are stubborn because we can endlessly search for the solution to the same problem, lazy because we love thinking more than anything else while others think we are doing nothing, and curious because we want to know everything and no matter how much we learn, it is never enough. I cannot teach you how to program, I can only show you the path you need to take. If you decide to take the learning path, I must immediately warn you not to skip my texts because you will not understand anything in the future. I am experienced enough to know how to properly dose the truth and concepts that you need to know at a certain moment. I will disregard the experience and knowledge you have gained about programming because the world I am leading you to is completely different from standard programming instructions. Beginners often strive for quick results, and I must disappoint you there. Do not expect quick results, there won't be any. By seeking quick results, we miss out on the whole magic of programming and development, neglecting intellectual thinking tools that make us good programmers. I don't just want to teach you how to program, I want to teach you how to think, and that is the harder part of this story.

Regardless of my current experience in development and programming, which has stretched for quite a few years, I somehow feel that nothing has changed. Answers to questions that I was looking for 15 years ago, I still cannot find anywhere today, no one writes about them. As I read a lot about programming, it seems to me that certain authors, with exceptions, are still stuck in the technology of their own time from as far back as 1957, and for years they speak like automatons from a lost era. Younger generations are the future, they accept new methods, adopt new knowledge, and open up to a new future. Because of them, I will write about what no one writes about, about the truth of programming that most authors sweep under the rug, presumably out of fear that beginners will not understand them. However, I must admit that beginner instructions over the years have brought me more harm than good, especially because they are not accurate. They teach us programming in a way that is not programming and create a "bug" in our minds that is difficult to correct in the future. So, sit comfortably, buckle up, and I hope that at least some of the readers through my texts will get to know the power of programming imagination. I say buckle up because by entering programming, whether we want to or not, we have to leave real-time and look into a completely new world of intellectual thinking.