Доброе утро четверга! ^_^
Чем ближе конце недели, тем больше мы уходим от хард-скилов 😃
Сегодня поговорим о том, где разработчикам набираться опыта, вообще и эффективнее всего.
Опрос! Что из перечисленного оказало на вас сильнейшее влияние?
🤔
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/
Но это всё не помогало расти ¯_(ツ)_/¯
Собственно вопрос: в чём секрет роста через опен-сорс?
Как это делать?
Как это делать этично, чтобы никому не досаждать?
Возможно ли это в принципе? 😃
Поделитесь опытом :—)
Завтра утром подведём итоги сегодняшнего опроса из начала треда и начнём говорить о технических блогах ^_^
- Зачем вообще вести, и как начать писать;
- Насколько глубоко уходить в детали в постах;
- Свой хостинг или блогоплатформа;
- На каком языке писать и другое.
Это первый тред, который не сломался за день ни в одном месте 😅
Итак, самое большое влияние оказала боевая разработка. Ментор на втором месте, университет и курсы — на третьем.
