You can find a whole range of programming textbooks intended for complete beginners. However, this one is exceptional to certain extent. The whole textbook is designed as a record of the dialogue of the author with his daughter who wants to learn programming. The author endeavors not to explain the Java programming language to the readers, but to teach them real programming. To teach them how to think and design the program as the experienced programmers do. Entire matter is explained in a very illustrative way which means even a current secondary school student can understand it quite simply. The book comes out of the author’s long-term experience with teaching children, university students as well as professional programmers. The author teaches programming according to the Architecture First methodology which reacts at the companies’ complaints that the school graduates are usually good in coding, but bad in software architecture. Coding itself is gradually taken over by various code-generators, but the work of the architect will stay irreplaceable for a long time. The author pursues the pedagogical principle saying that those items considered as the most important should be presented as soon as possible. Therefore he leads the readers to apply the proper design of the architecture of the created program and to avoid common mistakes since the very beginning. For designing the programs, the development environment BlueJ is used, which is proposed specially for the beginners and which enables explaining, demonstrating and programming a number of basic architectonic constructs without leaving the architectonic level and degrading to the code level. The book is divided into three parts. The first one deals with the explanation of basic constructs of the object oriented programming and all proposed programs are created by the code-generator incorporated in BlueJ. The second part repeats the explained constructs and the readers can learn how to code the proposed program similarly as was done by the generator in the first part. The third part presents constructs which are beyond the bounds of abilities of the used code-generator, and therefore the readers have to program them themselves. Despite that, the explanation core keeps in the level of architecture. The book is determined above all for complete beginners. However, the experience proved that even the intermediate programmers can find a lot of interesting and informative in it.