🔥

Тред (@bespoyasov)


Доброе утро четверга! ^_^ Чем ближе конце недели, тем больше мы уходим от хард-скилов 😃 Сегодня поговорим о том, где разработчикам набираться опыта, вообще и эффективнее всего. Опрос! Что из перечисленного оказало на вас сильнейшее влияние?
🤔 10.8% Университет, курсы
🤔 65.9% Боевая разработка
🤔 17.2% Ментор
🤔 6.2% Опен-сорс

На самом деле понятно, что пункты не взаимоисключающие, в жизни их можно сочетать 🙂 Я попробовал всё, кроме, пожалуй, опен-сорса, и мне сейчас кажется, что самый эффективный способ — это «боевая разработка + ментор».

За весь свой опыт я помню 3 случая, когда рост был взрывным — и все 3 случая были на работе под присмотром ментора 😃

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

Я нашёл эти курсы на Ютубе! 😱🙀🤠 youtube.com/watch?v=jj2TXJ…

С программированием было прям совсем худо. Гугл не особо помогал, потому что я ещё не умел нормально гуглить вопросы, которые мне были нужны. Эксперименты часто приводили не к тем результатам, которые были нужны 😅

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

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

Я бы не сказал, что он был прям ментором, но на ошибки указывал, хорошие решения подсказывал. Забавно, что всё это происходило на фрилансе ¯_(ツ)_/¯

Второй скачок был в команде, где я написал CRM
bespoyasov.ru/projects/reque… Там познакомился с Реактом, написал первый сервер, потыкал палочкой в Python и Django. Это всё — тоже под присмотром тимлида. Лёха, привет! 😃

Там и поуправлять другими разработчиками получилось немного, и блог переосмыслить (хотя и к тому времени пока что не начать писать годные технические статьи).

Третий скачок был в D2. Тут техдир открыл мне дорогу в «настоящее программирование™» 😅 Я пописал на шарпе и .net, лучше понял, что такое грамотная архитектура, познакомился с концепциями, о которых раньше представление имел, но очень смутное.

Ну и сейчас я вот занимаюсь R&D проектами всякого около-ML толка. Учусь реализовывать алгоритмы, которые нахожу в разных научных статьях. При этом я не говорю, что мне не пригодились знания из книг. Пригодились! Просто, чтобы их как-то применять, мало было прочесть 😃

Надо было, чтобы кто-то разжевал что с чем складывать, чтобы оно работало. К некоторым книгам я возвращаюсь время от времени, потому что осознаю, что понял прочитанное совершенно неправильно. (Иногда смотрю в конспект, и если вижу, что понял верно, то книгу не перечитываю.)

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

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

И вот сейчас смотря на это всё я думаю, что «ментор на работе» — это прям самое эффективное сочетание для роста 😃 А что думаете вы?

Сейчас я доберусь до завтрака и поговорим о плюсах и минусах каждого из пунктов 🙂

Давайте начнём с университета ¯_(ツ)_/¯ Я понимаю, что не мне с моим дипломом Уфимского технического говорить об университетском образовании, но тем не менее.

Из плюсов я сейчас вижу, пожалуй, нетворкинг. Это именно то, чем я не занимался в университете 😅 Университет — это место, куда попадают люди, с которым можно попробовать что-то вместе сделать. Не с каждым университетом и не с каждым студентом. Но всё же.

Ещё один плюс — могут научить действительно полезным вещам, если попасть в правильный ВУЗ и на правильную специальность. Под правильными я тут понимаю такие, которые совпадают с вашими интересами. Мне повезло наполовину.

Ещё плюс: отсрочка и военная кафедра ¯_(ツ)_/¯ Я при поступлении уже работал, знал, где хочу развиваться и куда расти — тратить год на армию в мои планы не входило. Прошёл военную кафедру, ушёл в запас, мне понравилось 😅

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

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

Одна единственная специальность. В 17 лет мне надо выбрать то, чем я буду заниматься ближайшие 5 лет, а то и всю жизнь, А-ха! 😅 Мне нравится концепция major-minor, но остаётся только слюнки пускать. Денег на зарубежный университет у меня не было. (Да и на Москву тоже.)

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

В общем, всё сильно зависит от ВУЗа, но я больше склоняюсь ко мнению, что мне он оказался почти бесполезен. Исключение: военный билет, некоторые предметы типа сетей и администрирования.

Курсы! 😃 Я проходил какие-то курсы на Udemy и где-то ещё. Тут могу сказать, что любые новые знания с курсов надо сразу пробовать включать в работу. Потому что иначе всё быстро забудется, и толку не будет.

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

Курсы без обратной связи тоже имеют право на жизнь, но и стоить они тогда должны совсем копейки или быть бесплатными.

+: курсов огромное количество. –: а чёрт поймёт, какого они качества 😃 +: можно (хоть и трудно) найти качественную личную программу с персональным наставником. –: это будет дорого 😃 Хотя если пересчитывать, всё равно дешевле ВУЗа, наверное.

Идём к самому интересному 😃 Давайте следующим пунктом выберем боевую разработку.

Несомненный жирнейший плюс — это настоящий рабочий опыт, которым можно светить в резюме. Да, даже если это была галера, это всё ещё опыт.(Мои первые годы после фриланса были на галере.) Соответственно минус — можно попасть на галеру 😃

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

Другой плюс боевой разработки: нет романтического флёра IT, который иногда продают курсы. Просто ещё одно ремесло. Изнутри можно посмотреть на «настоящий код™», на компромиссы, как вообще бизнес и разработка связаны, откуда требования берутся и вот это всё.

Минус — это может отпугнуть, если попасть не туда 😞

Ещё один плюс боевой разработки: она помогает бороться с перфекционизмом. Он мне постоянно мешает, особенно в пет-проектах — там же нет дедлайнов 😃 Внешние ограничения помогают определиться с достаточным уровнем «хорошести».

А если попасть в хорошую команду, то можно найти людей, у которых перенимать опыт.

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

Особенно отчётливо это было на фрилансе и на галере 😃 Нужно было много работать, чтобы были деньги, но делать приходилось одно и то же. Времени на что-то ещё не оставалось. Как в такую ловушку не попасть, я хз ¯_(ツ)_/¯ Видимо, надо какую-то прокачанную осознанность иметь.

Зато я научился многое автоматизировать. Придумал себе, кхм, «веб-компоненты» 😅 bespoyasov.ru/blog/templates/

Это были такие папки с «компонентами». Каждый компонент состоял из HTML-шаблона, каких-то скелетных стилей и скриптов с логикой. Обычно это были разные элементы типа слайдеров, каруселей, кастомных селектов и прочего.

Я их подключал, конечно, не одним импортом, а тремя (разметка, стили и скрипты), но работали они независимо друг от друга и от контекста 😃

Там же пришлось научиться и «прогрессивному джипегу» в вёрстке: bespoyasov.ru/blog/time/ Типа страница готова в любое время, но проработана на какое-то количество процентов.

А вот work-life баланс найти на фрилансе трудно. Для этого, кажется, нужна культура и команда.

Чуть позже поговорим о менторстве 🙂

Продолжим! Расскажу, почему я считаю, что ментор нужен, почему не только джунам и почему боевая разработка без менторства растит медленнее.

Ментор, как мне кажется, — это не учитель. Возможно, у меня искажение, но при слове «учитель» я сразу представляю какие-то подчинительско-иерархические отношения. А это совсем не то, что нужно.

Для меня ментор — это как кто-то кто переехал в другую страну до меня, насобирал шишек и теперь может предупредить меня, как именно стоит переезжать.

Причём, хорошие менторы в состоянии определить, о каких ошибках они могут предупредить меня заранее, а какие — мне бы пошло на пользу сделать самостоятельно. (Ну, может, не сделать, а оказаться в ситуации, которая бы наглядно объяснила, в чём именно проблема.)

Объясню: очень сложно передать какой-то опыт словами. Слова — это код, модель. (Карта, если хотите.) Они не могут передать реальность (опыт) полностью. Какие-то ошибки, кажется, просто невозможно «осознать, не сделав».

Хороший ментор в состоянии оценить мой уровень и сделать вывод о том, какие вещи я смогу понять, просто обсудив их, а какие — пока нет.

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

Такие задачи ставят в ступор и могут привести к параличу анализа, когда принять решение вообще не получается: ru.wikipedia.org/wiki/Аналитиче…

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

Но даже если нет, чем больше разнообразного релевантного опыта, тем больше шансов выбрать оптимальное решение для задачи.

Особенно это полезно, когда мы подходим к более философским задачам: - Как не оверинжинирить, но при этом не копить техдолг сверх меры и быть в состоянии масштабироваться? - В какой момент пора купировать перфекционизм? - Как работать с ограничениями при проектировании?

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

Мне кажется, на более поздних этапах менторы уже скорее идейные вдохновители что ли. Сложно сформулировать 🤔 Они уже не говорят, как правильно. Скорее вы вместе понимаете, как будет, вероятно, менее эффективно.

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

Кстати! Как вы считаете, какими навыками должен обладать хороший ментор? Понятно, что уметь разжёвывать сложное простым языком — это хорошо. А ещё? 😃

Можем подвести предварительный итог ^_^ Нужны: - эмпатия и этика; - умение поставить себя на место ученика; - планирование и умение подмечать ошибки; - Т Е Р П Е Н И Е 😃

Скоро закончу с задачами на работе и вернусь, чтобы обсудить опен-сорс 😃

Ну теперь давайте поговорим и об опен-сорсе! У меня опыта в трушном™ опен-сорсе нет. Весь мой Гитхаб — это пара небольших пакетов да исходники книг: github.com/bespoyasov/

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

Просить объяснить я не могу, потому что просто так буду отнимать у людей время — они же занимаются опен-сорсом в свободное время, им за него (в большей части) не платят.

Просто присылать пул-реквесты — тоже нутакое. Мейнтейнерам придётся не только отвлечься, но ещё и накатать какой-то фидбек, почему мой пул-реквест не подходит.

Остаётся — делать какие-то библиотечки и пакетики, которые будут кому-то полезны. Первым у меня был groontograf — типограф для Grunt (я старый 😃): - github.com/bespoyasov/gro… Но я его быстро забросил.

Было ещё приложеньице для конвертации дат в таймштампы и обратно. Кому-то вроде даже было полезно. Но опять-таки, я и его забросил, потому что из фидбека была одна ишья и всё 😃

Из каких-то более полезных вещей: Букмарк, скриптик для навигации по странице - bespoyasov.ru/bookmark/ Прокрутчик (единственное, что до сих пор частично поддерживаю) - bespoyasov.ru/scroller/ Но это всё не помогало расти ¯_(ツ)_/¯

Собственно вопрос: в чём секрет роста через опен-сорс? Как это делать? Как это делать этично, чтобы никому не досаждать? Возможно ли это в принципе? 😃 Поделитесь опытом :—)

Завтра утром подведём итоги сегодняшнего опроса из начала треда и начнём говорить о технических блогах ^_^ - Зачем вообще вести, и как начать писать; - Насколько глубоко уходить в детали в постах; - Свой хостинг или блогоплатформа; - На каком языке писать и другое.

Это первый тред, который не сломался за день ни в одном месте 😅

Итак, самое большое влияние оказала боевая разработка. Ментор на втором месте, университет и курсы — на третьем.
notion image