В 2019 году я решил постепенно от чудес и иллюзий возвращаться к работе по основной специальности - computer science. Разбирался в достижениях машинного обучения и искусственного интеллекта, осваивал Python и многочисленные инструменты и подходы, развившиеся за 10 лет. Приятно удивлялся богатству возможностей и привычно - количеству технических подробностей, «костылей» и «танцев с бубном», которые необходимо освоить, если хочешь не только восхищаться и болтать на модные темы, но и своими руками что-то сделать.
Мой перфекционизм помешал мне подробно рассказывать о результатах, которые я получал. Теперь жалею:) Результаты были! Всё-таки качественное базовое образование - исключительно ценная и полезная штука. Краткий перечень (без подробных ссылок, чтобы в этот раз следы остались):
- Робот Робик - приложение на Python с распознаванием людей с помощью веб-камеры
- Топ-2% рейтинг мастера на codingame.com - соревнования по программированию игроков в компьютерный играх. Обратите внимание - не компьютерных игр, а именно ботов, играющих в компьютерные игры против других ботов.
- Квалификация преподавателя Python в Яндекс-Лицее - так жаль, что не довелось поработать с детьми тогда!
В 2020 году подоспели локдауны и полное отсутствие выступлений волшебника, пришлось ускорить поиск работы с акцентом на устойчивый заработок, и в итоге я с мая 2020 по глубокий февраль 2021 работал удалённо старшим специалистом техподдержки 100% онлайн-компании из Техаса. Это был бесценный опыт... Теперь я знаю, что:
- я всё ещё могу впахивать по 40+ часов в неделю не поднимая головы,
- рабочий язык английский - не проблема вообще,
- разбираться в нагромождении ИТ-систем разнообразнейшего происхождения у меня получается лучше многих сисадминов с многолетним опытом.
- Но заниматься такой работой мне неинтересно, а только большая з/п уже через пару месяцев радовать перестаёт.
Потом было выгорание, увольнение, долгие месяцы восстановления, ковид и неторопливые раздумья «так что же я могу делать полезного для людей, чтобы мне было интересно и увлекательно?»
И вот буквально на днях я вспомнил, как в 1988 году Михаил Орлов, тогда наш учитель по информатике, рассказывал об очень одарённом ученике, которые «мечтал в деталях узнать, как устроен компьютер, и понять до конца, до уровня транзисторов, как же он работает». И говорил что увы, в рамках школьной информатики даже в физматшколе 239 разобраться в этом не получится. Но ко второму курсу профильного ВУЗа есть шанс понять.
Интересно, что моя старшая дочь Наташа где-то в 6-7 лет уже спрашивала: «А как компьютер узнаёт, как ему выполнять программу?» Мы тогда начинали заниматься программированием в КУМИРе и на Scratch, и этот вопрос возник естественно :)
Мне кажется, я сейчас довольно точно понимаю, как компьютер «узнаёт, как выполнять программу». Чтобы объяснить это, достаточно подробно и наглядно рассказать о следующих штуках:
- включатели/переключатели механические и электронные (транзисторы)
- двоичная система счисления
- как из переключателей и лампочек сделать ячейку памяти (триггер, флип-флоп)
- как из ячеек памяти сделать счётчик и сумматор
- как из переключателей сделать системы ввода данных и адресации ячеек памяти (шина данных, шина адресов)
- как из счётчиков, сумматоров, шины данных и шины адресов сделать программируемый калькулятор с памятью и двоичным вводом-выводом
- как от двоичного ввода-вывода перейти к десятичному, а затем текстовому и графическому вводу и выводу информации - для удобства пользователя
- Как функции «для удобства пользователя» постепенно объединяются в BIOS и операционную систему: сначала дисковую а потом и оконную.
- Как в любом современном смартфоне разглядеть все эти штуки
На мой взгляд, где-то к 7-му шагу уже может возникнуть довольно качественное понимание. С Наташей мы сейчас подходим к шагу 6, пока всё идёт хорошо.
Так о какой же мечте я вспомнил? Давным-давно, в 8-м классе, ещё до 239, я ходил на кружок программирования в Аничковом дворце, и мечтал, что когда-нибудь моей работой будет писать небольшие но очень красивые, быстрые, умно и хитро устроенные программки. И чтобы эти программки заставляли компьютер делать что-то интересное, увлекательное. Чтобы я таким образом узнавал что-то новое про мир, делал какие-то открытия.
И вот теперь я уже давно могу это делать. Особенно если подобрать компанию тех, у кого есть способность интересоваться и увлекаться, стремление узнавать новое и делать открытия:) Похоже, это будут дети - для начала мои, а там, глядишь, и ещё кому-то окажется интересно!
В качестве иллюстрации - скриншот моего первого проекта на Scratch, 18-е марта 2007 года. Сыну Артемию тогда было 5 лет:
Под каким углом надо выстрелить, чтобы снаряд полетел максимально далеко?
Удивительное дело - площадка всё ещё существует и проект всё ещё можно запустить. Даже на смартфоне работает, пришлось добавить два блока:
https://scratch.mit.edu/projects/548/ Как тебе это?