Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Программа наставничества / обучения F# #3

Open
FoggyFinder opened this issue Feb 21, 2018 · 24 comments
Open
Assignees

Comments

@FoggyFinder
Copy link
Member

FoggyFinder commented Feb 21, 2018

Программа наставничества / обучения F#

Предыстория

Предложение - вопрос создано по мотивам обсуждения в канале #mentorship FSSF Slack о расширении текущей программы F# Mentorship на локальные сообщества (включения участников не говорящих на английском языке).

Идея не встретила активной поддержки, но появилась мысль об отведении большей (или всей) части на плечи сообществ.

Тема обсуждения

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

Вопросы

  • Формат проведения
  • Роль сообщества
  • Цели

Прежде чем перейти к рассмотрению вариантов разберем существующий подход к проведению

Об оригинальной программе

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

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

Выбор тем в прошлые два раза был примерно следующим

  • Основы F#
  • Тонкости (для профессионалов)
  • Поддержка Open Source проектов
  • Data science
  • вклад в разработку компилятора
  • другое

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

Текущий формат проведения довольно прост в реализации - от сообщества не требуется больших усилий, но пока он не направлен на широкое распространение.

Сложно сказать насколько успешен такой путь - слишком мало информации о прохождении публикуется самими участниками.

Больше мог бы рассказать тот, кто принимал участие, но насколько мне известно из нашего сообщества никто отбор не прошел.

Проблемы

  • Мало опытных разработчиков которые используют F# в продакшене.

Серьезное препятствие. F# совсем не востребован в русскоязычном сегменте.
Если предложения и встречаются то только для Senior разработчиков с большим опытом работы.
Что приводит к неутешительному выводу - для начинающего программиста F# выглядит не привлекательно.

Путь решения

Можно ли сломать эту стену? Однозначного ответа нет. Не попробуешь - не узнаешь.

Чтобы сделать программу (в любом виде) более привлекательной нужно делать акцент на сильные стороны если не F#, то самого сообщества.

Целевая аудитория

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

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

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

Обучающая программа отлично подходит для решения проблем подобного рода.

Формат

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

Двух-этапная регистрация должна быть более продуктивным подходом. Вначале оформляются наставники и уже по их ответам определяются темы которые будут предлагаться желающим пройти обучение. То есть выбор категории уже будет доступен на втором этапе.

Теперь что касается темы введения в F#. Насколько хорошей идеей является включение в программу основ языка?

Минусы

  • Информации на русском языке для начинающих немного
  • Ученику нужно будет уделять много времени

Плюсы

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

На мой взгляд минусы перешивают плюсы. С точки зрения перспективы обучение основам в формате наставник - подопечный мне кажется неэффективными и программа должна сконцентрироваться именно на практической части. Но как же тогда новички?

Именно для них предлагаю написать специальный курс в котором также будет упор на практику (возможно 7-10 простых упражнений после каждой главы).

(голос из зала, скептик) - ага, еще одна крупная задача для сообщества, а кто воплощать в жизнь все будет?

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

Что даст полузакрытая бета? Уверен, что многие участники сообщества не имеют навыков преподавания и им сложно себя представить в роли наставника. Таким образом острые углы будут сглажены и результат будет вполне осязаем.

@Nojpg
Copy link

Nojpg commented Feb 21, 2018

интересная затея, хотелось бы поучаствовать хотя бы как недо джун для начала в "спец. курсе".

@kleidemos
Copy link
Member

К идее дистанционного взаимодействия "наставник - подопечный" отношусь на данном этапе несколько скептически.

Но курс (пока как набор статей) мы осилим.

При переводе 3F&P иногда хотелось просто вычеркнуть 1-1.5 страницы текста и переписать все своими словами. Настолько манера подачи материала на английском отличается от принятой у нас (хотя это субъективный фактор).

Наличие изначально русского массива текстов по сугубо практическим вопросам было бы серьезным подспорьем.

@FoggyFinder
Copy link
Member Author

К идее дистанционного взаимодействия "наставник - подопечный" отношусь на данном этапе несколько скептически.

Можно узнать почему?

@kleidemos
Copy link
Member

@FoggyFinder Сорян за объем.

Ну сколько у нас сейчас наберется людей с опытом в F# достаточным для статуса наставника? Сколько из этих "наставников" способны к передаче опыта? Понимаю, что задача несколько упрощается благодаря фокусу на основы языка, но на мой взгляд, мы все еще не готовы к такому формату.

У нас всего два крупных ресурса по F#, где-то с десяток разных степеней живости и сосредоточенности на F# ресурсов поменьше и около дюжины книг. И почти везде порядок "глав" различается даже в введениях в основы языка. В то время как порядок глав на C# ресурсах знает каждый шарпист, и это не от того, что у них один мозг на троих, а потому что они уже давно опытным путем нащупали оптимальный путь обучения (как минимум для большинства).

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

Это сейчас у нас 90% хоть как-то отсвечивающих проходят по категории (условно) selfmade man, которые готовы в одно рыло перепахать ООП поле во имя светлых идеалов. А что нас ожидает, когда мы пойдем в большой мир? Нужно отдавать себе отчет в том, что большинство кандидатов будут воспринимать эту программу как сервис. Это гораздо более низкий уровень терпимости к неудачам. Зачем несколько лет (?) страдать в F# наталкиваясь на неопределенности и прочие вызовы, если можно медленно, но верно добиваться результатов пописывая портянки в Java/C#/JS?

Поэтому мне кажется, что стоит:

  • Начать именно с текстового курса;
  • Сейчас если и брать учащихся, то только с дикой мотивацией, либо знакомых лично;
  • Быть готовым создать некий F# чат для вопросов, где на каждом заборе будет написано, что здесь можно задавать вопросы без нижней границы сложности, штрафов за повторы и т.п.;

// Далее оффтоп

  • Стоит формализовать работу сообщества, например обеспечить поставку материалов (переводов и т.п.) на регулярной основе;
  • И наконец сделать что-то с работой на F#, по моему здесь все жалуются, что работодатель боится, что просто не наймет человека под F# проект. Это какой-то идиотизм. По стране шастают несколько сотен любителей F#, но работать на нем начинают либо по недосмотру работодателя, либо после достижения статуса сеньора (с обязательным техническим английским для финансовой сферы).
    • Я предлагаю дикую или идиотскую идею №0: возможно нам стоит в перспективе начать нанимать джуниоров на работу над опенсаурсом. Понятно, что это будут неполноценные зарплаты, достаточно, чтобы они тупо не сдохли от голода. Надо чтобы экономика играющая против нас не приводила к "не ну js нормальный язык, если привыкнуть, зря ты так". У нас же есть концепция "болл на хилл", мы же можем доказать (или опровергнуть), что даже джуниор запущенный в огород не сможет ничего сломать в F# проекте. // Нет, у меня щас нет денег финансировать сие мероприятие.
    • Идиотская идея №1: Надо организовать некий хаб, который будет объединять толпу разной степени занятности F# джуниоров и мидлов, и представлять их как рабочую силу. Нужен он не для того, чтобы брать новые проекты (хотя не запрещено), а чтобы работодатель знал, что он сможет прийти в хаб и ему за бабки гарантированно окажут поддержку проекта на F#. // Он не должен быть явно хабом, пусть это будет "ИП Сидоров", главное, что на лбу будет написано, что здесь кодят и будут кодить на F#.

Немного субъективного бубубу (тоже не в тему), но быть может поможет понять ситуацию в провинции:

Я по возможности пиарю F#. Плотно под мою агитацию попало почти два десятка человек. Из них синтаксис осилило человек 12 (забавно, мы юзаем F# синтаксис при обсуждении кода на C#). Из них 4 человека хоть что-то кодят на F#. И лишь один реально использует F# в проде (в основном в тестах). Я не могу сказать, что им не нравится F#. Но у нас в регионе просто на .NET (любом) с работой плохо, особенно для джуниоров. Соответственно им остается либо голодать и зубрить F# с туманными перспективами применения, либо идти на JS, уж таков у нас рынок. Года три назад я понял, что местный энтерпрайз меня похоронит, если я не смогу на него как-либо воздействовать, поэтому сильно урезал расходы и начал копить на "обучение". В результате я щас сижу на втором курсе магистратуры, не работаю более 8 месяцев и с перерывами на диплом учусь "делать все" на F#. При этом я как-то не особо преуспел. Думаю не надо пояснять, что такой режим неприемлем для подавляющего большинства смертных.

@Nojpg
Copy link

Nojpg commented Feb 22, 2018

@kleidemos ну как человек не особо знакомый с f#(джавист), было бы неплохо понять основы, т.к. С пунктом про рынок согласен на все 100%, у меня в городе то даже на с# особо нет вакансий. имхо лучше начать просто с легких курсов и т.д., возможно тогда и вакансии подтянутся с обилием программистов, ну и продвижение технологий в массы этому поспособствуют

@FoggyFinder
Copy link
Member Author

FoggyFinder commented Feb 22, 2018

@kleidemos чем подробнее тем лучше ;)

Ну сколько у нас сейчас наберется людей с опытом в F# достаточным для статуса наставника?

А какой опыт может считаться достаточным?

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

Неготовы из-за количества "опытных" людей?

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

Именно это я и предлагаю сделать в первом раунде.

В данный момент единственный наш кандидат - это "юноша со взором горящим". Где мы таких найдем?

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

Я предлагаю дикую или идиотскую идею №0: возможно нам стоит в перспективе начать нанимать джуниоров на работу над опенсаурсом.

Идея не идиотская, подобное уже обсуждалось в FSSF, но активной поддержки не нашлось. По моему мнению пока еще рано, но в перспективе может сработать.

Быть готовым создать некий F# чат для вопросов, где на каждом заборе будет написано, что здесь можно задавать вопросы без нижней границы сложности, штрафов за повторы и т.п.;

Такие чаты уже есть (в телеграмм (наверное) и в Slack, хотя так нужна дополнительная регистрация в FSSF)

Идиотская идея №1: Надо организовать некий хаб, который будет объединять толпу разной степени занятности F# джуниоров и мидлов, и представлять их как рабочую силу.

Определенно, лучше вынести в отдельный ишшуй

https://github.com/fsharplang-ru/fsharplang.ru/issues

Я по возможности пиарю F#. Плотно под мою агитацию попало почти два десятка человек. Из них синтаксис осилило человек 12 (забавно, мы юзаем F# синтаксис при обсуждении кода на C#). Из них 4 человека хоть что-то кодят на F#.

🥇

@kleidemos
Copy link
Member

@FoggyFinder

А какой опыт может считаться достаточным?

Это субъективно, но вообще как показывает практика, мы очень часто не знаем всего пула возможностей F# из-за специализации. Не знаю как это происходит, но в C# полное знание языка достигается гораздо быстрее (что компенсируется ограниченными возможностями).

Например недавно обноружил, что альтернативный синтаксис дженериков на MSDN не описан от слова никак. Все примеры даны в утяжеленном варианте аля C#.

Неготовы из-за количества "опытных" людей?

Отсутсвия отработанных гайдлайнов. Ну и людей естественно.

Именно это я и предлагаю сделать в первом раунде.

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

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

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

Идея не идиотская, подобное уже обсуждалось в FSSF, но активной поддержки не нашлось. По моему мнению пока еще рано, но в перспективе может сработать.

Не знал. Если так, то я опробую на местных, когда встану на ноги. Были единомышленники из соотечественников (или ЕАЭС)?

Такие чаты уже есть (в телеграмм (наверное) и в Slack, хотя так нужна дополнительная регистрация в FSSF)

Я сижу в телеграме, народ периодически спрашивает, а можно ли задавать вопросы или просить code review. Пока сообщество более чем лояльно, однако иногда народ через чур топит за ФП. По мере роста сообщества новички все меньше задают вопросов, и связанно на мой взгляд это не с ростом грамотности, а с тем, что психологически задавать нубские вопросы в чате на 80 человек и на 330+ это несколько разные вещи.

Определенно, лучше вынести в отдельный ишшуй

Ок, попробую описать в сб или вс. Если кто-то не разовьет тему до этого.

@kleidemos
Copy link
Member

@Nojpg

у меня в городе то даже на с# особо нет вакансий

Я не понял, 1) у тебя в городе C# распространен больше чем Java (но и его мало), или ты имеешь ввиду, что 2) если нет C#, то и с F# все плохо?

@ForNeVeR
Copy link
Member

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

Можем ли мы что-то с этим сделать? Например, я видел, как в C++-сообществе завели отдельный чат для новичков, но это оказалось палкой о двух концах: теперь в основном обсуждении возникает некоторое количество негатива в ответ на новичковые вопросы, и их (обычно вежливо, но не всегда) отправляют во второй чат.

Когда второй чат наполнился до краёв (>1200 человек на текущий момент), стали делать третий, четвёртый и т.п., что, на мой взгляд, выглядит и смешно, и жутковато :)

@kleidemos
Copy link
Member

kleidemos commented Feb 23, 2018

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

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

@Nojpg
Copy link

Nojpg commented Feb 23, 2018

@kleidemos второе

@kleidemos
Copy link
Member

@Nojpg
В целом мысль верная.
Но вроде в FsAdvent 2017 был ряд статей, где евангелисты приходили к мысли, что проще перетянуть людей с других языков, нежели с C#. Поэтому уже существуют F# программисты без C# опыта. Где-то видел, что их доля > 5% и последние пару лет прилично растет.

@Nojpg
Copy link

Nojpg commented Feb 23, 2018

@kleidemos ну тем не менее hh не выдает ни 1 по слову f# у меня в городе

@FoggyFinder
Copy link
Member Author

FoggyFinder commented Feb 26, 2018

Были единомышленники из соотечественников (или ЕАЭС)?

@kleidemos ЕАЭС?


Еще пару дней подождем желающих высказаться и будет подводить итоги обсуждения?

@Neftedollar
Copy link
Member

Давайте ещё подождем, я пока не осознал всего посыла.

@kleidemos
Copy link
Member

@FoggyFinder https://ru.wikipedia.org/wiki/Евразийский_экономический_союз В принципе я имел ввиду Россию, Белоруссию или Казахстан (странно, последних в публичном IT пространстве почти не вижу). Понятно, что можно и с более отдаленными персонажами кооперироваться, но с этими проще, в свете последующих шагов.

@ForNeVeR
Copy link
Member

странно, последних в публичном IT пространстве почти не вижу

Отмечу, что товарищи из Казахстана просто концентрируются в своих группах (из активных я знаю https://t.me/dotnetgroup, ну и люди оттуда частенько мелькают в остальных .NET-чатах), и мы вообще-то с ними дружим (кросспостим ссылки иногда). Сообщество .NET-разработчиков в Казахстане есть, а с тематическими вопросами по F# я приглашаю к нам.

@kleidemos
Copy link
Member

Спасибо, а то как то стремно было.

@ForNeVeR
Copy link
Member

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

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

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

Мне кажется, что нам сейчас как раз ближе та система, которая используется в «большом» F#-сообществе — когда выбираются наставники и какие-то более глубокие темы, и они педалируются в рамках курсов.

@FoggyFinder
Copy link
Member Author

А какова задача?

Развить сообщество за счет привлечения новых людей, так как сейчас оно довольно небольшое.

Кого и чему мы хотим научить? Необходимо определиться с целевой аудиторией, я считаю.

Свои мысли по этому поводу уже изложил в стартовом сообщении.

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

Почему? Один из самых простых вариантов (который уже предлагался) - привлечь знакомых и/или малознакомых людей. Например тех, кто слышал об F# но не знал с чего начать. А ты подходишь и говоришь - так и так, есть вариант и дальше в зависимости от ситуации действовать.

Мне кажется, что нам сейчас как раз ближе та система, которая используется в «большом» F#-сообществе — когда выбираются наставники и какие-то более глубокие темы, и они педалируются в рамках курсов.

Я тоже целиком за и в перспективе именно на это рассчитываю. Как раз на серьезные и глубокие темы. Но сообщество на данный момент малочисленно, сколько реально набрать желающих (и умеющих) быть наставником на сложные темы? Учитель должен не только знать предмет, но и уметь подать материал.

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

Что мне не нравится в текущей программе FSSF это условная закрытость. Одно дело когда речь идет о углубленном изучении, второе - началах. В рамках первого этапа я предлагаю рассмотреть более коллективный подход в результате которого на выходе получится текстовый курс для желающих изучать F# самостоятельно.

В "большом" F# сообществе темы самые разные - из текущих отзывов я видел только основы и компилятор.


@Nojpg сколько вы готовы ждать открытия? ;)
Если у вас есть мысли и предложения по поводу формата то присоединяйтесь

@ForNeVeR
Copy link
Member

ForNeVeR commented Mar 18, 2018

@FoggyFinder ну что ж, если ты предлагаешь для начала сделать какой-то курс или цикл статей для начинающих с упражнениями — я в любом случае не против и даже за. Вне зависимости от того, пойдёт ли этот курс в какую-то нашу программу наставничества, или же будет жить отдельно. Считаю, что польза от него будет (большая или нет — заранее сказать затрудняюсь).

Однако, я не уверен, что курс по основам F# будет таким уж уникальным. Кажется, в интернете уже есть такие курсы (в т.ч. у уважаемого Д. Сошникова)? Насколько они доступны?

Вот ссылка: http://www.soshnikov.com/fsharp/about.html

@Nojpg
Copy link

Nojpg commented Mar 20, 2018

@FoggyFinder Да подождать то не проблема вообще, по поводу глубоких/неглубоких тем думаю лучше всё же начать с неглубоких чтобы понять сколько желающих наставников/учеников вообще, как это всё идет(есть ли профит) т.к. мы все понимаем что глубокие темы сложнее будут идти нежели стартовые основы, ну а как устаканится уже разделять по этим темам, к примеру дата саенс и т.д.
@ForNeVeR по поводу книги Сошникова, да она хорошая но для тех кто слабо знаком с функциональным подходом идет туго + старовата (некоторые примеры в начале не совпадают, по Complex, дальше я забил)

@FoggyFinder
Copy link
Member Author

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

Не совсем так.

Я предлагаю сделать примерно следующее.

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

  2. Двух-этапная регистрация.

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

Более конкретно (сроки проведения, как организовать регистрацию, где будет идти обсуждение между наставниками, кто будет распределять пары, как будет формироваться текстовый курс и т.д.) можно будет обсуждать уже если согласуем общую схему.

@FoggyFinder
Copy link
Member Author

@ForNeVeR по поводу книги Сошникова, да она хорошая но для тех кто слабо знаком с функциональным подходом идет туго + старовата

Я думал речь идет о курсе а не о книге.

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants