Как найти наставника по программированию? [закрыто]

46

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

Так вот в чем вопрос - где мне найти такого парня? У меня нет друзей, которые программируют и все такое.

РЕДАКТИРОВАТЬ: 2 года спустя, я все еще ищу наставника. Я не активно код, просто начал 3 месяца снова. Я работаю над программированием Objective-C и iOS и программированием игр с Cocos2d. Если вы хотите стать моим наставником, напишите мне или комментарий.

Dvole
источник
1
также купите хорошую книгу для начинающих на выбранном вами языке
Демьян Касье
2
Просто пообщайтесь с этими пользователями . Предложите им пиво или два. Читайте их посты. Задайте им вопросы.
WernerCD
1
Вот список имен (и карты) , которые подписали Software Craftsman манифеста: manifesto.softwarecraftsmanship.org
Spong
1
Мой ответ был немного глупым, но я рекомендую изучать JavaScript или Python, поскольку вы изучаете более строго типизированный язык. У обеих парадигм есть свои преимущества, в зависимости от того, что вы делаете, но на «более слабых» языках вы можете попробовать что-то прямо в консоли, а в случае с JS - просто разобраться с макетом веб-страницы и поведением пользовательского интерфейса. инструментов разработчика Chrome. Кроме того, функции, которые вы можете передавать в параметрах; люди, которые пу-пу, даже не знают и никогда не узнают (спасибо, боже, потому что я работал с этими парнями); непристойно могущественны.
Эрик Реппен
1
Два года спустя все, что вам нужно, это немного дисциплины. Готовы ли вы к этому?
ot--

Ответы:

31

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

Чему вы хотите научиться программировать ? Ответ на этот вопрос определит, что вы должны искать и где. Вот некоторые общие ответы, и мое профессиональное мнение о том , как им следовать (иметь в виду , что это просто мнение, хотя ИМХО, точно):

Просто сказать, что вы знаете, как это сделать.

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

Просто попробуйте и посмотрите, нравится ли вам это.

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

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

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

(Я не думаю, что ОП в этой категории, я помещаю это для более поздних читателей.)

Есть ли у вас представление о времени, необходимом для освоения разработки и реализации программы? Как подсказка, это измеряется годами. Возможно, вам удастся придумать полуприличный дизайн после всего лишь нескольких месяцев обучения, если вы оба умны и чрезвычайно удачливы, но любой, у кого есть небольшой опыт работы над этим (включая вас, позже), сможет Жаль, что ты никогда не родился - я говорю из опыта. :-) Если идея не является настолько сверхсекретной, что никто больше не может знать об этом, пока она не будет сделана, не беспокойтесь. Наймите опытного программиста, который сделает это за вас, или если вы не можете себе этого позволить, но по-прежнему хотите, чтобы программа достаточно сильно, предложите сотрудничать с одним - вы занимаетесь бизнесом и позволяете ему заниматься программированием. Большинство хороших разработчиков предпочли бы программирование, поэтому такое предложение может стоить им.

Потому что вы уже знаете, что увлечены программированием и хотите узнать больше.

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

Главный Компьютерщик
источник
4
Вопрос был в том, как найти наставника, а не в том, должен ли он / не должен его искать.
Марктани
4
Первоначально ответ включал предложение наставлять любого, кто действительно интересовался C ++. Получив восемь человек, которые заявили, что они действительно заинтересованы, но не могут продолжать разговор, я удалил это предложение.
Глава Geek
23

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

Группы пользователей - это место, где можно найти наставника, но никто не хочет помогать тому, кто там думает: «Я ищу наставника». Но если вы там думаете: «Мне бы понравилось, если бы кто-нибудь помог мне научиться писать хорошие модульные тесты JavaScript» или «Я бы с удовольствием с кем-нибудь пообщался и протестировал ката в Clojure», рано или поздно. Вы найдете кого-то, кто разделяет ваши интересы и немного дальше.

Эрик Уилсон
источник
14

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

Итак, первый шаг - присоединиться к сообществам, где вы можете встретить хороших наставников.

Шаг второй - стать достойным учеником. Некоторые вещи, которые я лично ищу в ученике:

  • Интеллект близок, равен или больше моего.
  • Интересуюсь тем, что я могу предложить, и получаю удовольствие от преподавания.
  • Совместимость личности (то есть мы хорошо ладим, получаем удовольствие от общения друг с другом).
  • Готовность быть ценной для проекта / сообщества, в котором я наставляю его, посредством:

    • Написание кода
    • Написание документации
    • Выполнение таких операций, как сортировка очереди, очистка комментариев и т. Д.
    • Помощь менее опытным участникам
  • Совместимость с моим обычным рабочим процессом.
  • Умение учить меня вещам. Быть более опытным, чем кто-либо, не мешает учиться у них. Лучший ученик умеет задавать правильные вопросы, или новую точку зрения, или некоторый опыт за пределами моих областей знаний, из которых я могу учиться.
HedgeMage
источник
12

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

Джим С
источник
1
Хорошо, я могу показаться глупым, но как вы присоединяетесь к проектам с открытым исходным кодом? Какой сайт лучше всего посетить?
Мистер Муравей
1
gnu.org/help или некоторые репозитории с открытым исходным кодом (google code, github ...). Ищите интересный проект, в котором не хватает людей, чтобы предоставить документацию и отправить электронное письмо.
cbrandolino
2
Я твердо верю, что нет глупых вопросов. Хотя существует много проектов с открытым исходным кодом, sourceForge по-прежнему остается одним из самых популярных.
Джим С
1
@Ant: лучший проект с открытым исходным кодом для работы - это программа, которую вы обычно используете или планируете использовать.
Ларри Коулман
7
-1: Присоединение к проекту ОС - хороший ответ, но определенно не на данном этапе обучения (т. Е. День 1). Это погружение в глубокий конец прежде, чем когда-либо даже промокнуть. Структурированное обучение через книги или класс - намного лучшая идея.
Стивен Эверс
6

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

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

Во-вторых, теперь, когда вы знаете, чего хотите, вы должны это найти. Это может быть довольно сложно, так как не так много мест, посвященных демонстрации разработчиков, использующих их навыки, как у нас есть искусство в Канаде и США, поэтому я и подумал, что это предложение было дано. MentorNetбудет примером программы, которая может работать, хотя я не пробовал ее, я изучал ее некоторое время назад и не думал, что это для меня и того, что я хотел. Еще одна мысль: насколько хорошо твои друзья и семья знают, чего ты хочешь здесь? Они могут знать кого-то или какое-то место, которое может помочь вам, если вы спросите. Хотя это не исчерпывающий ответ, то, что вы спрашиваете, является немного расплывчатым, и, надеюсь, вы сможете добавить к этому больше, и я продолжу, как только вы предоставите более подробную информацию о том, что вы хотите, и как вы хотите, чтобы это было так не Burger King, но мы могли бы попытаться сделать это таким образом.


Экспертов по компонентам серверной части C ++ найти довольно сложно Есть ли поблизости учреждения высшего образования? У тех может быть кто-то, у кого есть те навыки, которые могут быть превращены во что-то другое в качестве возможной идеи. Удачи в поиске этого наставника.

JB King
источник
+1 с моей стороны. Похоже, работа с кем-то - это путь вперед.
Fanatic23
4

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

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

Вальтер
источник
3

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

Пост на Craigslist может стоить попробовать, но я бы не стал на это ставить.

Кроме того, если вы находитесь в Германии, есть несколько мест, которые я могу предложить, в частности.

cbrandolino
источник
А как насчет CA, Bay Area?
великий волк
@Victor, я действительно не знаю, но, кажется, их несколько: google.de/…
cbrandolino
3

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

Более локально, если вы хотите наставничество или преподавание лицом к лицу, отличные варианты включают в себя:

  • Группы пользователей - плюсы: бесплатно или дешево, открыто для всех. Минусы: Редкие, не систематические, могут быть недоступны в вашем сообществе.
  • Кооперативы - Плюсы: открыто, бесплатно / дешево. Минусы: менее распространенный, специальный, более вероятный для веб, чем C ++.
  • Степень университета / колледжа - Плюсы: систематический, высококачественный, уважаемый, открывает двери, как правило, обеспечивает доступ по крайней мере к некоторым высококачественным преподавателям. Минусы: Конкурсное поступление, серьезное обязательство, дорого, высокая степень вымывания, так что это дорогой способ узнать, хотите ли вы сделать программное обеспечение своей профессией, программа обучения может быть гибкой, но может потребовать темы, которые вам не нравятся или будут интересны найти сложно.
  • Занятия в колледжах или программы на получение степени. Плюсы: Недорого, хорошая цена, больше индивидуального внимания со стороны инструкторов, легко быть принятым. Минусы: Меньше престижа, чем в университете, но хороший студент - хороший студент, куда бы он ни пошел.
  • Профессиональные организации - плюсы: могут быть хорошие связи и непрерывное образование. Минусы: вам может потребоваться степень или работа в этой области, чтобы претендовать на членство Ежемесячные встречи могут быть специальными темами об инновациях, а не систематическим освещением тем, способствующих карьере.
  • На работе от сверстников, старшего персонала или менеджеров - профессионалов: частая, целенаправленная, благодарность / энтузиазм / продолжение создаст вашу карьеру, как никто другой. Минусы: может пойти не так, если ваш рабочий наставник перейдет в режим суждения, и вы позволили всему этому зависать, этот тип наставника может быть недоступен, пока у вас не будет работы, которая может означать получение степени из-за глобальной конкуренции.
  • Коворкинг - Плюсы: хорошие ресурсы, замечательные люди, как правило, нечто среднее между общиной и комнатой будущих руководителей. Минусы: может быть недоступен в том месте, где вы живете, может включать в себя денежное обязательство, помогающее оплачивать аренду общей площади, многие из них будут работать не по найму, поэтому вы должны уважать их время и находить творческие способы получения взаимных выгод.
DeveloperDon
источник
2

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

Посетите несколько сайтов на С ++ в Google или, может быть, у нашего дорогого друга stackoverflow, где есть множество ниндзя C ++, готовых ответить на ваши вопросы!

guiman
источник
1

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

Наставник - отличная идея, и я бы не стал здесь более 15 лет как программист без парня, который мирился с моими вопросами на моей первой «настоящей» работе, но на самом деле, один человек не сможет чтобы дать вам время и рекомендации, вам нужно стать успешным программистом. Он или она, вероятно, будут работать на полную ставку (или загружать курс) сами. Это не значит, что вы не должны найти наставника (или наставников), просто вам нужно что-то еще.

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

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

Вонко вменяемый
источник
1

Если вы работаете в компании, вы можете найти там наставника.

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

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

Джим С
источник
0

«Как мне найти программиста? Это все, чего я хочу. Я просто хочу создать огромную армию роботов, чтобы захватить весь мир. Я умен и написал ИИ. У меня есть деньги, влияние, Я просто не могу смириться с этой отвратительной глупостью .NET или JVM ... Хм ... Как ... Как ?! Черт! "

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

Решить эти проблемы кузнечик.

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

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

Вы просто решаете, что вы заинтересованы, и вы идете. Довольно чертовски расширяет возможности, когда это входит. Это занимает некоторое время (я знаю), но, поверьте мне (если только в этом, казалось бы, абсурдном моменте - мне потребовалось более десяти лет, чтобы понять, что да, я был чертовски программистом), все это действительно важно то, что у вас есть базовый уровень таланта и что вы на самом деле заинтересованы. Если нет, пожалуйста, @ # $ off и найдите то, что вас интересует.

Потому что иначе программирование / скриптинг / кодирование - ужасный выбор. Но я не хочу оставлять это на отрицательном, неприятном моменте. Если вам интересно, не беспокойтесь о том, насколько вы хороши. Задавать вопросы. Требуйте ответов. Смирись с такими затянувшимися сумками, как я. Вы попадете туда, если хотите.

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

Эрик Реппен
источник
Да, и, конечно же, поделитесь решением, чтобы мы все могли откусить кусочки, которые нам не понравились.
Эрик Реппен
-2

Для наставника, пойдите freenode (irc). Клянусь, вы можете получить большую часть степени CS из этого места, полезного на любом уровне квалификации. Вот где я многому научился. Не имеет значения, находится ли человек на этом канале один раз или круглосуточно, это в режиме реального времени, и это главное.

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

Ericson2314
источник