Working as a programmer implies constant, mandatory self-study. Self-study includes, firstly, the deepening of knowledge in already familiar areas, and, secondly, the acquisition of skills in unknown and missing areas. This all, of course, sounds nice on paper, but in fact we still have bouts of laziness, stuck in a stack of technologies and burnout from a routine. New sensations help in the fight against the dark side of the development. But the sensations should be really new: to understand for the tenth time with the nuances of the “new” api from the next social sphere quickly becomes a veiled routine.

By itself, responsible work contributes to the development of knowledge of the first type, thereby improving the skills of a narrow specialist. At the same time, the second type is also replenished, but very slowly, spontaneously and uncontrollably. And that means unsatisfactory. And you want to know more, be able to do better, blush for your decisions less often, turn up your nose higher.
In the article, I describe my approach, which helps me to fill in knowledge gaps more efficiently, and also with great pleasure to engage in game-devs as a hobby.
The main solution here is simple and well-known: self-education. It can take different forms: an additional project for a hobby; educational courses and seminars
(text / audio / video) ; contests and competitions; books. For me, the books have become the most useful and effective, so the examples of supervised learning that I use will be described using their examples.
')
What is the problem? Take it and read!
Reading technical literature is not only useful and interesting, but sometimes difficult, boring and time consuming. Of course, there are very fascinating moments that describe an elegant pattern or anecdote about someone else's unfortunate decision in development with obvious jambs
(maybe even the same as yours) . But basically such books lose to their entertaining brethren, especially after a hard day’s work, when you want to relax more, rather than pull on.
Here's what is easier to spend time relaxing: "Selfish Gene" Dawkins or "Perfect Code" McConnell; "Shrider's Blood, Sweat and Pixels" or "Design Patterns" from the Freeman? (
Although in fairness it should be added that all these books were the most fascinating on the list ).
That started a useful book. Is everything all right now?
But no. Behind himself, he noticed that for the first time he began reading the Complete McConnell Code, he slowed down reading somewhere in the middle. And somehow unnoticeably you can take a break for a week, two weeks ... then read an hour ... and again a pause for a week. Edak one book for years can be read, but never finished, but the false sense of gradual progress is still present. A sense of shame for long breaks imperceptibly discourages any desire to return to the subject, which delivers so many unpleasant experiences.
So who is the enemy?
My enemy was the lack of visibility. When you do not see the constantly urgent task, then it seems like it is not. And you can put it on the back burner. To solve this problem, I did not have the tools, but I still found the right one for me. And this is a simple table of career capital in Google Docs. In general, any table will come down, including in paper form. I found this technique in Nyport's book “In Work with the Head”. He has several techniques there, but this one came up to me.
Methodology "Career Capital Table"
Basic rules:
- Create a table with 3 columns: Date; Hours spent; Tasks performed
- At the end of each day, fill in the next row of the table. A list of tasks important for self-education and how many hours have been invested in each of the tasks is entered into the “Tasks to be performed”. In "Elapsed hours" the amount of hours by task.
- If not a single task has been completed in a day, then put dashes and zeros so that they have an eye beetle.
- To include in the list only the tasks that are significant for their self-study. Repair in the apartment can often be more important than self-education, but it is not worth including it. However, this rule is very vague.
- It is preferable to set tasks in the SMART format, that is, to be: specific (read book A); measurable (1 book is read and understood); achievable (I have already read similar books and this master); actual (my algorithms slow down! You need to do something with this); indicating the deadline for delivery (maximum 2 months per reading).
- The total number of current tasks should not be too large to not be sprayed. For me, this is about 6 tasks. At the same time, the rule is strictly observed that one cannot read more than 2 books at a time.
- At the end of the month, all hours are summed up and compared with your average. If more than the average - we feel very good; if below average, we still feel good; if below the mandatory minimum, we feel bad and either correct our behavior or lower the minimum bar.
That's all - the method is very simple. For a detailed description with examples, you can refer to one of the books of Nuport.
I bring a watch with a gradation of 0.25 hours (15 minutes).
In a month I have from 30 to 120 hours.
Minimum Plank: 30 hours.
Average bar: 60 hours.
The table can be refined, complicated and decorated with different diagrams for a nice visualization.
And the bonus of this approach is that you find out how much real time you have in reading one book. And in general, what exactly you read more often.
Below I list some books with their net reading costs. First technical, then general education and borderline (non-chronological list).
- [40.25 hours.] Perfect code. McConnell.
- [1.75 pm] Scrum guide and strategy.
- [34,50 h.] Artificial intelligence in computer games. Alex J. Champandar.
- [26.50 h.] Design patterns. Freeman, Freeman, Sierra.
- [24.75 h.] (English) Patterns in game programming. Robert Nystrom.
- [17.50 pm] The selfish gene. Dawkins
- [5.50 h.] Raising a child. Hypenreyter.
- [8.00 pm] To work with the head. Nuport.
- [12.75 pm] (English) Harry Potter 1.
- [9.75 pm] (English) Harry Potter 2.
- [11.25 pm] (English) Harry Potter 3.
- [22.75 pm] (English) Harry Potter 4.
- [26.75 pm] (English) Harry Potter 5.
- [18.25 pm] (English) Harry Potter 6.
- [19.75 pm] (English) Harry Potter 7.
- [5.50 h.] Free Writing. Mark Levy.
- [13.00 hrs.] (English) How to win friends. Cornegey.
- [4.25 hrs.] Machiavelli. Sovereign
- [7.50 hrs.] Blood, sweat and pixels of Schreier.
- [23.75 pm] All about color. Lindsay.
Conclusion
Dry figures say that technical books are read only at a slightly lower speed than lighter or more artistic ones. Just technical several times thicker. And at a time a lot of technical literature is very difficult to absorb.
By the way, I want to note that the presence of some books in the list does not mean that I liked them and I would recommend them to someone other than my enemies. Therefore, it cannot be taken as a recommendation list.
For game development, I can advise: "Perfect code"; Design Patterns; "Patterns in game programming"; "Blood, sweat and pixels"; "All about color."
In the comments it would be great to see your lists of recommended books.