
Рано или поздно каждый из нас задумывается, имеет ли смысл передать свой опыт детям. На сегодняшний день можно сказать, что проект, который мы начали более двух лет назад, состоялся и выглядит удачным. Раз результат положительный, мы решили, почему бы не поделится с уважаемой публикой.
Пора!… Кони уже неслись над крышами… (с) Михаил Булгаков
Я, как радеющий папаша, решил передать опыт программирования сыну 14 лет. К этому моменту у него был неплохой опыт разработки собственных программ для роботов типо Лего-MindStorms и летний клуб Id-tech чего там на С писали.
Сам день, когда все же взялся за обучение, помню довольно смутно. Проснулся с утра и решил: «Пора!» — как по Булгакову. Сел за компьютер и подошел к этому делу кондово по принципу «делай как я». Подход не отличался новизной. Сначала обсуждаешь, что предполагается делать, затем проговариваешь наиболее интересные моменты, чего предстоит сделать и дальше уже делаешь в меру оговоренного и прочих соображений походу разработки. Первое, что обсудили и решили, что проект будет какая-нибудь хорошо известная игрушка. Особо не мудрили взяли с потолка — крестики-нолики.
Я открыл эклипс и начал писать и рассказывать, что я делаю. Сын, надо сказать, сидел рядом, запоминал, как вообще чего там запустить. Через неделе две спародических сессий получилось написать обычную в командной строке программу, которую уже было сложно обыграть. После чего он предложил младшим братьям сыграть с программой по одному доллару ставка. Пришлось вмешаться в домашний тотализатор и прекратить опыт монетизации на ранней стадии проекта.
На этот момент стало понятно, что разработка программ вроде как дитю нравится, но явно для продвижения вперед требуется твердые знания и понимание языка Java.
Начали с наскока — стали тупо решать задачки как свернуть-развренуть, факториал или фибонначи подсчитать. Но ожидаемого для меня результата это не давало. Стало понятно, что сыну надо серьезно изучать Java.
Купили пару учебников… В общем, на учебники ушло полгода. К летним каникулам в прошлом году пошло все более серьезно, за лето сын разработал UI и написал десктопное приложение, которое вполне так вменяемо общалось с игроком. Я был занят на работе, время чтобы глянуть было только на выходных, что там да как в сам процесс разработки не лез. Сын походу начал писать еще одну динамическую игрушку, что-то навроде тениса из разряда десктоповых вшигонялок.
Но, слава богу, довел крестики нолики до логического конца.

Сколько веры и лесу повалено! (с) Владимир Высоцкий
Встал вопрос как закрепить результат и оформить его в технологическом тренде. Здесь в общем-то сомнений не было:
- Написать статью в блог
- Залить код на гитхаб
- Определиться как дальше развивать проект
Скажем спасибо калифорнийской общеобразовательной школе. С первым пунктом проблем не было, сегодня сказал — завтра статья уже написана. С гитхабом тоже не было быстро залить код.
С развитием же проекта уже не помню кому первому пришла в голову идея, как всю музыку сделать под Андроидом. Собственно, я до этого под Андроидом не программировал и существенно было то, что ни у меня, ни у сына не было опыта с новым фреймоворком. На мой взгляд, одно дело рассказывать и показывать, что ты умеешь делать, другое дело искать вместе решение и показывать, как ты используешь свой предыдущий опыт для поиска решения.
Когда первый этап освоения нового для нас фреймворка был пройден, дело для меня пошло веселее — я уже больше давал советы и делал общее руководство, как лучше там чего зарефакторить и общие соображения из best practice.
Фундаментальное исследование стратегии в игре крестики-нолики
В какой-то момент сын обнаружил, что крестики-нолики имеют три базовые стратегии, которые приводят к «вилке» одного из игроков, если не просчитывать на два хода вперед. Стратегии выглядят довольно занятно.
Треугольник

Стрела

Окружение

Я тихо офигел и только и смог предложить оформить результат очередной статьей в блоге.
После чего мы ударно стали латать код закрывая обнаруженные стратегические дыры.

Результат
Последний месяц сын провозился с дизайном и оформлением:
Крестики-нолики были модифицированны в «Коты против Собак». Добавлены вменяемые сообщения и кой-какой общий интерфейс.
На мой взгляд, подход сделать какой-то законченный проект себя полностью оправдал, так как сыну пришлось реально выучить не только базовые вещи, но и достичь хорошего понимания на уровне дизайна проекта.
Исходный код проекта в гитхаб. Буду рад, если кому-то будет интересно глянуть и, может, повторить эпопею. На легкий результат не рассчитывайте. Наберитесь терпения.
Удачи.