Как Нарисовать Кота

Это мой доклад на PiterPy Meetup №20, записанный текстом и слегка отредактированный. Если вам захочется смотреть, а не читать, видео есть в конце поста

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

Заголовок поста — как нарисовать кота. Это кликбейтная уловка, рисуйте котов как вам угодно! Но тема реально меня волнует. Сейчас всё объясню, упомяну T-shaped, Хабр и три личных истории.

Я СТО в питерском стартапе. Тут наверняка найдутся те, кто пользовался или слышал про мои продукты, но сегодня я говорю совсем о другом.

Для начала про букву Ти. Может показаться, что это русская буква Тэ, как во фразе «тут нет кота», но это не Тэ, это Ти из T-shaped skills. Это метафора, которую придумали ещё в восьмидесятом году, она наглядная и этим очень мне нравится.

Вот есть у нас джуниор-разработчица Ася, и, разумеется, у Аси есть какой-то скилл.

Ася пишет микросервисы. Асина работа выглядит как-то так: Ася пишет эндпоинт, на эндпоинт прилетает запрос, и асина задача, чтобы сервис сделал запрос в базу и выдал разумный ответ.

Ася очень беспокоится и на всякий случай каждый раз проверяет на Stack Overflow, правильно ли она объявила пустой список.

Проходят месяцы, задачи меняются, знающие коллеги уходят в отпуска, приходится учиться, да и самой любопытно. И вот Асин скилл подрос. Теперь она наизусть помнит как пишется import werkzeug и пугает этим словом своего кота.

Но и дальше проходят месяцы за месяцами, задачи становятся сложнее, и знающие коллеги всё уходят в отпуска, и приходится учиться дальше, да и самой любопытно. Асин кот теперь совсем ничего не боится, особенно консоли, и внимательно помогает дебажить медленные запросы. Да и руководительница позвала её поговорить, что денег получать Ася будет больше. Ася уже не джун, Ася — серьёзный миддл. Ася шарит в своей области.

Обозначим это на нашей схеме. У Аси был скилл, и скилл вырос. Такое состояние навыков, как в момент у Аси, в метафоре T-shaped skills называют Ай.

Ай это примерно как Ти, но с некоторым отличием.

В нашей метафоре это значит, что кроме экспертного знания в своей области, есть и смежные области, в которых Ася может развиваться.

Я очень рассчитываю, что к этому моменту доклада вы неплохо проассоциировали Асю с собой, будь то с собой в будущем, собой в настоящем, или, быть может, с версией себя из прошлого.

Я говорю про такие скиллы, которые не самая ваша сильная сторона, а просто что-то, что вы умеете, играли с этим, имеете представление. Тут не обязательно становиться тем, кем вы становиться не хотите. Это может быть что угодно, нам всегда есть куда расти дальше, мир огромный и разнообразный.

Первая моя история называется «kubectl apply minus f foo dot yaamel»

Начинается она так. Я читаю Хабр. Алгоритм чтения Хабра у меня очень простой, где-то раз в месяц я открываю лучшее за месяц, и смотрю что попадёт на первую страницу. Очень радуюсь, если вижу пост Сергея Абдульманова под юзернеймом Milfgard, или пост Zelenyikot (кодовое имя Виталий Егоров).

В тот раз я увлечённо читал про Кубернетес, всякие там поды, ноды и обезьянку хаоса — обезьянка хаоса это скрипт, который специально выключает случайные куски вашей инфраструктуры, а сервис должен выстоять.

Мне было очень любопытно. Во первых я понимал, что если выключить любой из наших серверов, сервис ляжет. Во вторых меня чуть беспокоило, что тайное знание как всю нашу инфраструктуру настроить и сконфигурировать лежит у меня в голове.

В общем, Кубернетес показался мне какой-то классной штукой, которую неплохо бы как-нибудь применить, но не прямо сейчас. Но если поставить работу на паузу совсем на чуть-чуть, это же не считается, это же как выпить чаю, или сходить в туалет, так можно делать.

В этот момент меня ждали настоящие, с большой буквы, задачи, на которые, как говорит мне моя тревожность, необходимо тратить время прямо сейчас. Но это тревожность и я ей не верю.

Я поставил minikube, это штука, чтобы запустить Кубернетес у себя на ноуте, и радостно прошёл туториал. У меня горели глаза. Я веселился. Вместо задач я играл с туториалом. Мне было классно, я учился новому, я становился более ценным специалистом, и к тому же обманывал сразу двух жаб. Да, жаб. С жабами я вас сейчас и познакомлю.

Первую жабу зовут Жаба Прокрастинации. Вроде бы прикольно изучить этот ваш Кубернетес, но не сейчас. Занесу в список штук, которые неплохо бы выучить. Вон там уже 53 пункта с пометкой важно накопилось. Ох и тяжело же в наше время разработчикам, столько всего, столько всего.

Вторую жабу зовут Жаба Перфекционизма. Кубернетес если уж знать, так знать хорошо. Это нужно с основ начинать. Толстый томик купить, прочитать, вести конспект. Подчёркивать определения маркером. Всё подчёркнутое выучить наизусть. Я хороший специалист, я мастер своего дела, если я и изучаю кубернетес, то уж точно смогу на доске все варианты StrategyType для деплоймента выписать. Я не раздолбай, а мастер своего дела, урывками учиться не буду. Вот пойду книжку закажу. И в список штук для изучения добавлю. Вон там уже 53 пункта с пометкой важно накопилось. Ох и тяжело же в наше время разработчикам, столько всего, столько всего.

Так вот. На чём мы остановились. Пока я ставил minikube и радостно проходил туториал, я этих жаб элегантно обманывал. Я веселился, я играл, жаб не интересует баловство и дурачество, оно невидимо для них. А прогресс такой, словно по-настоящему учишься. Я потыкал Kubernetes ещё, туториалы скучные, задался вопросом, а как это засунуть в него реальный веб-сервер на джанго. Тaк-так, тут что-то про вольюмы, про stateful и stateless. Интересно. И, кажется, получилось. Жабы удивлены, возмущены и повержены.

Так вот. На чём мы остановились. Пока я ставил minikube и радостно проходил туториал, я этих жаб элегантно обманывал. Я веселился, я играл, жаб не интересует баловство и дурачество, оно невидимо для них. А прогресс такой, словно по-настоящему учишься. Я потыкал Kubernetes ещё, туториалы скучные, задался вопросом, а как это засунуть в него реальный веб-сервер на джанго. Тaк-так, тут что-то про вольюмы, про stateful и stateless. Интересно. И, кажется, получилось. Жабы удивлены, возмущены и повержены.

Диджитал Оушн это очень известный хостер, и в том числе он занимается поддержкой стартапов. Для нашей компании они выделили тридцать тысяч виртуальный диджитаоуновских долларов, которые можно потратить на аренду сервисов. Это реально большая поддержка, около двух миллионов рублей, спасибо им огромное.

Но были и ограничения:

  • Нельзя майнить крипту
  • Нельзя использовать сервера для машинного обучения
  • И, самое важное, через год бесплатные деньги сгорают

Мы использовали наши бесплатные деньги на всю катушку, поднимали VPS на каждый чих и чтобы памяти побольше, всё равно нам за год этих денег на сервера разумным способом не потратить, мы пока ещё не такие огромные.

И вот срочно пришлось переезжать к другому хостеру, но у нас всё упаковано в аккуратные helm-чарты, это такие формальные инструкции для роботов как именно развернуть нужный сервис, примерно как readme файлы, которые пишутся людьми для людей, только строго формализованные и очень подробные.

Мы всё перенесли от одного хостера на другой, только поправив конфиги. Мне очень помогло, что я баловался с kubernetes.

Вторая моя история называется «Oculus»

Я очень люблю VR, у меня сразу два шлема от oculus, оба портативные, Quest и Go.

Однажды я написал игру, где ты в полной темноте с фонариком бегаешь по плоскому ночному полю, и посреди поля стоит высокий бетонный столб. Студии VR-игр почему-то недооценивают тот факт, что в шлеме гораздо реалистичнее, когда темно, на чёрных пикселях не видно сетки.

Мне было весело и по дороге я узнал уйму всего про шейдеры, web-стандарты и реалистичные структуры бетона. Это сделало меня более ценным профессионалом, но совсем не воспринималось как корпение над документацией. Мне было классно, я учился новому, я становился более ценным специалистом, и к тому же обманывал сразу двух жаб. С жабами вы уже знакомы, так что на время оставим их в покое, а я пока добавлю немного питона.

В другой своей игрушке я сделал так, что ты в VR шлеме ходишь и видишь других людей в шлемах.

Видишь их реально там, где они находятся. А ещё видишь двери, пол, стены, и вообще всё, что захочешь переместить из реального мира в виртуальный. Можно не видя друг друга и не снимая шлемов поиграть в ладушки. Это моя любимая часть.

По дороге я узнал уйму всего про клиент-серверные архитектуры, вебсокеты и способы снизить задержку в мультиплеерных играх. Это было весело. А ещё это сделало меня более ценным профессионалом, и совсем не воспринималось как корпение над документацией. Мне было классно, я учился новому, я становился более ценным специалистом и к тому же обманывал сразу двух жаб. Жабы Прокрастинации и Перфекционизма икают каждый раз как я их упоминаю, но я очень-очень хочу, чтобы из этой статьи вы запомнили не бетон, на бесчисленных котиков, а лайвхак о том, что если играешь, то прокрастинация не включается, если дурачишься, то можешь не ставить себе высоких стандартов. И добьёшься многого.

Тут совершенно ничего не разобрать, но вот мой ноут, и на мониторе 3d-мир, желтые кубы — головы реальных людей в vr-шлемах, эти люди видят только пол, проём двери и друг друга. И пытаются так гулять. А а я смотрю на них в реальном времени в обоих мирах, снимаю видео, и отлично провожу время.

В книге Остина Клеонта «Кради как художник» творчество — это вовсе не свобода без ограничений. Все совсем наоборот. Преодолеть творческий ступор довольно просто — нужно ограничить самого себя. Уверен, что не он это придумал, но захотелось сослаться на большего эксперта.

Пост, напомню, называется «Как нарисовать кота». Вот один из способов сделать это. Нарисовать его на CSS.

Для меня рисование CSS это как головоломки. Как очень маленьким набором инструментов что-то нарисовать? Инструментами, предназначенными не для рисования.

Будет забавно, а ещё вы узнаете примерно миллион новых свойств, а в более скучных задачах уровня «подвинуть div» будете себя чувствовать как рыба в воде.

Пиксель-арт это огромный мир, но я скажу о нём только потому что у сайтов есть фавиконки. Попробуйте сделать хорошо выглядящий фавикон 16x16. Это челлендж!

Я много лет назад работал в компании 220 вольт и попробовал, из интереса, нарисовать для интернет-магазина новый фавикон. Я отлично провёл время рисуя, и совсем не чувствую, будто потратил время зря, не смотря на то, что его не взяли (и правильно!). Спустя много лет у них всё тот же, не мой, желтый треугольник на фавиконе, и мне приятно на него посмотреть и вспомнить про суровый мир 16х16.

На этом личные истории закончились, я делаю таски вне работы, всё со мной понятно. Расскажу лучше почему я верю, что вот это всё может пригодиться лично вам.

Я вижу четыре весомых пункта, зачем абстрактному IT специалисту могут пригодиться подозрительно похожие на работу развлечения. И это не считая войны с жабами:

  • Гибкость как профессионала. Всё меняется, чтобы быть востребованным на рынке ценно уметь разное и смежное
  • Путь в архитекторы, если вы, вдруг, хотите быть архитектором
  • Это весело. Занятие делами, похожими на работу, но не работой — отличный отдых.
  • Можно соединять ваши скиллы с другими областями. В не IT-сферe умение программировать это супер-способность.

Если вы быстро-быстро скроллите статью, то вы едва ли прочитаете это предложение, но зато увидите картинку

Подробнее про супер-способность. Есть вот 3D графика. У Blender, это такой софт для моделирования, есть python API. Может вы и не умеете рисовать в 3d, но вы можете за пару вечеров запрограммировать анимацию гиперкуба и отлично провести время.

Автор картинки programagor

Делать что-то для фана, само собой, снижет градус серьёзности, а значит и перфекционизма. Если я трачу вечер на баловство с функциональными языками, это просто игра, ничего серьёзного. И жабы перфекционизма и прокрастинации будут побеждены — вы и не должны делать задачу хорошо, вы просто дурачитесь с чем-то, что раньше не делали.

Я составил список конкретных штук, которые можно поделать, если вам вообще хочется, но непонятно с чего начать

  • Микроэлектроника и умный дом
  • 3D графика в Blender
  • Персональный телеграм бот
  • Функциональное программирование
  • Клеточные автоматы
  • Исследовать свой граф друзей по API соцсетей
  • Нейросети, если вы ещё не
  • Игрушки, см. фреймворк pygame
  • Веб-сервис, который никто не сделает, кроме вас
  • Процедурный ASCII арт

Вот так растёт скилл в том мире, который я описал, но есть и другие варианты. Например, вы можете быть экспертом в двух совсем разных областях, и их пересечение сделает вас уникальным супер-редким специалистом. Это классно, это значит, что у вас супер-уникальная компетенция. Но не будем на этом подробно останавливаться, есть более важный вопрос:

Как все эти весёлые полезные штуки встраивать в свою жизнь, если у вас нет времени и вы и так загружены работой, семьёй и учёбой? И как это получается у меня самого, когда я очень-очень занят работой в стартапе?

Для меня работает только одно. Помещайте это время не в категорию полезно, не в категорию личностный рост, а в категорию фан, отдых и веселье. Только так это получится. Может помочь играть с такими штуками с кем-то вместе, в рамках социализации. В духе, «эй, а не хочешь за вечерок игрушку вдвоём напишем?”. Можно думать об этом как о штуке для работы над личным брендом, типа «побалуюсь с демкой, потом расскажу на митапе». Но только умоляю вас, ни в коем случае не кладите веселье в категорию “ещё один пет-проджект», так ничего не получится. Это фан, это веселье, это как серия сериала, если вы смотрите сериалы, такое недопустимо оставлять умирать среди пет-проджектов.

Итак, чтобы это стало частью вашей и так занятой жизни, помещайте это время не в категорию полезно, не в категорию личностный рост, а в категорию фан. Только так это сработает.

На этом всё, спасибо, что прочитали, присылайте котов в лс, и вот видео оригинального доклада:

0
2 комментария
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Artem Caulitza
Ответить
Развернуть ветку
-1 комментариев
Раскрывать всегда