Насколько важно самообучение в области программирования? [закрыто]

75

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

Здесь возникает вопрос: насколько важно изучать программирование самостоятельно?

Bugster
источник
12
Языков, которые я использую ежедневно, не было, когда я ходил в колледж. Поэтому самообучение очень важно для изучения новых технологий, если вы планируете стать разработчиком более нескольких лет.
Джон Страйер
5
Вы заметили, что теперь вы намного опытнее, чем год назад - на самом деле, я уверен, что год назад вы не знали, как много вы могли бы узнать! Я нахожу, что это происходит каждые 2-5 лет, я оглядываюсь назад и говорю: «Ух ты, я все неправильно понял и даже не знал, что это можно сделать лучше». Самообучение очень важно, если вы хотите быть хоть в меру добрым. Кроме того, я не хотел бы работать с кем-то, кто не мог бы учиться таким образом.
Билл К
2
Когда я был в вашем возрасте, я бы не смог не взять программирование самостоятельно , даже если бы я попробовал. Это слишком весело. И да, это оказалось чрезвычайно важным и полезным для моей карьеры, но это был просто хороший побочный продукт. Сделайте это для удовольствия, и вам не придется думать о том, понадобится ли вам опыт или нет.
Бен Ли

Ответы:

101

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

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

Я помню в те времена, когда я брал свой первый класс структур данных, и мы получили тонкое руководство для этого нового языка под названием «C ++», которое они решили начать изучать. У нас было две недели, чтобы собрать его достаточно, чтобы написать код. Это был хороший урок сам по себе. Это путь вашей карьеры.

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

Я закончил колледж в 1987 году. Я пошел работать программистом на Си с опытом работы в программах DOS, NetBIOS и "Terminate and Stay-Resident". За прошедшие годы я практически не тренировался. Посмотрите на объявления о работе ... не так много призывать к этим навыкам! Единственная причина, по которой я могу работать сегодня, в том, что я провел годы, постоянно учась. Чтобы преуспеть в качестве инженера, вы должны иметь привычку учиться. Черт, я бы пошел дальше этого: ты должен любить учиться. Вы должны быть тем человеком, который бездельничает с WebGL или Android или iOS, потому что это выглядит забавно. Если вы такой человек и сохраняете привычку к обучению, вы далеко пойдете в этой отрасли.

Стивен Бернап
источник
3
Этот. Теория тоже очень важна, и ее сложнее самоучить. Хотя я не согласен с обучением компаний. В наши дни наша область очень востребована, и у компаний возникают проблемы с поиском хороших кадров. (По крайней мере, в моем районе)
user606723
+1, я замечал очень старые «TSRs in C» в моей школьной библиотеке еще в 2004 году. Интересно, все еще ли они там?
Джесвин Хосе
3
Теория важна, но ее легче выучить самостоятельно, чем раньше, поскольку видео многих университетских классов доступны онлайн. Я осмелюсь сказать, что можно узнать больше, посмотрев лекции великого профессора в Интернете, чем физически присутствуя на лекциях посредственного.
Жанна Пиндар
@Steven Burnap: «Курсы информатики преподают теорию, а не технологию» - это неправда. В моем университете (KIT, Германия) мы должны изучить Java (и сделать несколько небольших проектов), а также некоторые упражнения на C. Подготовка к ICPC (соревнование, такое как TopCoder), где мы учимся быстро решать проблемы в C ++, предложенный. Мы также должны сделать довольно большой проект (одна группа создала приложение для Windows Phone, которое может автоматически децентрализовать создание мобильной сети, если сеть не работает из-за стихийных бедствий). Мы также познакомились с Scala / Haskell.
Мартин Тома
1
Но это правда, что вы всегда должны делать проекты самостоятельно. Университет просто предлагает много отправных точек. Я думаю, если вам не интересно, если вы не хотите пробовать что-то, вы не должны работать программистом (на полную занятость).
Мартин Тома
29

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

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

оборота Яков Крустчинский
источник
8
Есть формальное и самообразование, но у вас нет наставника без отрыва от работы, который может стать лучшим способом улучшить ваши навыки и узнать, как на самом деле создается программное обеспечение.
JeffO
1
«Однако, как говорится, формальное образование также очень важно, если вы хотите войти в эту область карьеры, готовую занять активную позицию в рабочей силе». ... Это предложение очень расплывчато. «Активная позиция» в «рабочей силе»? В самом деле? Что это вообще значит?
Блеш
@blesh Согласен. Изменили формулировку.
Джонни Роттен
1
Я думаю, что на работе опыт наиболее важен ... но большая часть этого самоучка. Вы не можете ожидать, что все в вашем офисе научат вас всему, и лучшие из них берут свой опыт из любого места, где они могут его получить ..
user606723
11

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

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

Бернард
источник
6

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

Emmad Kareem
источник
4

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

Эдвард Стрендж
источник
1
-1: Я согласен, что самообучение - это необходимый навык, но просто сказать, что это не так.
Джим Г.
1
+1 Не согласен с отрицательным голосованием. Я бы сказал то же самое, и это также основано на моем опыте.
CodeART
1
@ Джим - какие у тебя там абсолютно абсурдные рассуждения. WTF я должен даже сделать из этого? «Я согласен, но -1, потому что ты это сказал». О_о
Эдвард Стрендж
@CrazyEddie: Просто сказать, что что-то является правдой, без указания каких-либо причин поддержки, бесполезно на таком форуме.
Джим Г.
@ Джим - рудиментарный обзор ваших ответов заставляет меня отвечать: «Люди, которые живут в стеклянных домах, не должны бросать камни».
Эдвард Стрендж,
3

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

JeffO
источник
3

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

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

Если вы не изучаете новые вещи, вы просто сидите и забываете, что вы знаете.

blesh
источник
2

Талант переоценен.

Требуется по крайней мере 10 лет практики, прежде чем можно стать великим в любой области. Поэтому важно начать рано.

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

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

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

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

http://www.devlounge.net/strategy/the-talent-myth

Alex
источник
Говоря о мифах ... Я считаю, что 10-летняя практика мантры - это тоже миф. Вы можете дать многим людям 100 лет практики по некоторым навыкам, и они все равно никогда не получат их. Конечно, они могут быть лучше, чем когда они начали, но если это все еще недостаточно хорошо, это не достаточно хорошо. Кроме того, я видел, как новые выпускники бегают кругами вокруг очень опытных разработчиков в разработке программного обеспечения. Конечно, им еще есть чему поучиться, но очень опытным разработчикам, даже тем, кто имеет 10-летний опыт работы. Талант очень и очень важен. Без этого вы можете получить только так далеко.
Данк
@ Я согласен. Я думаю, что идея в некотором смысле заключается в том, что даже талантливым людям нужно хотя бы 10 лет, чтобы научиться чему-то хорошему, а талант не является пропуском к славе. Сочетание таланта и истинной самоотдачи на протяжении многих лет есть.
Алекс
Я согласен. Талант без практики далеко не уходит. Тем не менее, я, кажется, помню, как читал оригинальную статью, и автор утверждал, что даже люди с обычным талантом с данным навыком могут стать достаточно опытными с 10 000 часов практики. Я искренне не согласен с этой оценкой. Это становится действительно очевидным в области разработки программного обеспечения, особенно если вы работаете с приложениями даже средней степени сложности. Подавляющее большинство разработчиков способны делать только относительно простые вещи. Кажется, никакая практика не уводит их за рамки
Данк
@ Данк, может, им не хватает страсти, а не таланта.
Алекс
Я думаю, что талант легко определить, даже если он сырой и неопытный, а не получить его.
Данк
2

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

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

Стив Беннетт
источник
2

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

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

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

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

Примечание: я провел всю свою карьеру, начиная с программирования в возрасте около 15 лет (шее, старше 25 лет ... ближе к 30 годам), обнаружив, что, помимо моего университетского образования, большинство учебных курсов (вы знаете ... изучать BLAH в 3 полных дня) довольно бесполезны. Они, как правило, поверхностны и, насколько часто упоминается в мантре «поддержание ваших навыков», не очень полезны для тех, кому необходимо углубиться в технические детали. Покупка книг, использование Интернета, изучение математики / физики / архитектуры / чего бы то ни было, что сделало меня полезным и ценным. На одном этапе я был одним из 10 человек в мире, обладающих специальными знаниями по конкретному предмету - все эти знания были получены путем самообучения и обучения на рабочем месте.

Единственное время, чтобы прекратить учиться, это когда вы на 6 футов ниже в сосновом ящике.

quickly_now
источник
2

Есть хорошая притча об этом:

Ежегодный чемпионат мира проходит в Британской Колумбии. Финалистами были канадец и норвежец.

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

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

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

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

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

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

  • Как это случилось? - спросил он норвежца. - Каждый час я слышал, как ты десять минут останавливался. Мол, черт возьми, тебе удалось срубить больше дерева, чем я? Это невозможно.

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

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

webvitaly
источник
1
  • Это важно, иначе вы останетесь позади

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

CodeART
источник
1

Самообучение очень важно по двум причинам:

  • после обучения : как уже говорилось в других ответах, самообучение - это то, что вы будете делать в своей повседневной жизни в качестве разработчика. Вы не можете знать все, и компании знают это. То, что вы ДОЛЖНЫ знать, это как улучшить себя. Лучшие разработчики имеют возможность самостоятельно изучать новые языки, новые технологии.
  • во время учебы : расстояние между тем, чему вас будут учить в колледже, и реальностью вашей работы огромно. В частности, я говорю о техническом обслуживании и ремонтопригодности. Важной частью работы разработчика является поддержка устаревшего кода (исправление ошибок, улучшения, добавление функций и т. Д.). Вы можете прочитать Является ли создание совершенно нового программного обеспечения основной частью большинства задач программирования? для дальнейших деталей.
    Поскольку поддержка унаследованного кода крайне важна, вам также нужно будет писать поддерживаемый код самостоятельно, а этому редко обучают на официальных уроках (см. Как улучшить обучение учащихся в отношении удобства сопровождения?). Если вы не практикуете самообучение и много читаете во время учебы, вы вряд ли приобретете необходимые навыки, которые сделают вас лучшим разработчиком, чем в среднем.
    Не пытайтесь изучать много языков / технологий во время учебы, но изучайте хорошие практики и чистое кодирование. Например, вам лучше прочитать «Чистый код» Роберта К. Мартина, чем «Java The Complete Reference» Герберта Шильдта во время учебы.
Матиас Жуан
источник
-1

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

Гэндальф
источник
-1

Я, вероятно, узнал более 95% того, что я знаю, связанного с программированием, пытаясь что-то самостоятельно и узнав, как это работает. Школа может помочь в обучении хорошему стилю программирования и оптимизации кода для скорости и т. Д., Но вы никогда не станете «хорошим» программистом, просто прочитав учебник. Отличный способ развить навыки программирования - находить повседневные проблемы, которые вы могли бы использовать для решения компьютера, и пытаться написать некоторый код, чтобы сделать это. Застревание - это часть обучения. Сначала я хотел стать веб-разработчиком, поэтому довольно часто создавал фиктивные сайты (не размещая их или что-то в этом роде), чтобы протестировать новые вещи, которые я хотел попробовать. Это сработало очень хорошо для меня!

Филипп Шмидт
источник
-1

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

Это показывает, что программисту лучше заниматься самообучением, чем зависеть от школы. Школа всегда будет скрывать информацию, поскольку они думают, что мы не готовы к этому.

Jie Liang
источник
Не уверен, что я согласен. Я думаю, что самообучение важно, но есть определенно много основополагающих материалов, которые вы можете получить от формального образования, которые предоставят вам инструменты для общения с другими и научатся решать новые проблемы вместо тех, которые уже были решены.
jmort253
в течение этого времени все пытаются понять, что преподают в школе, и они преподают в очень быстром темпе, который никто не мог бы догнать.
Цзе Лян
Школа - это программа идеологической обработки, разработанная для того, чтобы дать нам основу для базовых концепций, но мы должны продолжить это образование после этого и продолжить обучение самостоятельно.
jmort253
Я согласен с тем, что ты говоришь. Это самообучение является обязательным условием, если мы хотим стать лучше с программированием.
Цзе Лян
-3

Как всегда в математике и информатике - есть две точки зрения: 1. Необходимые и 2. Достаточные.

  1. Необходимо (само) учиться в течение всей жизни. Нет другого варианта быть и оставаться хорошим программистом.
  2. Выше пункт не является достаточным условием - вы должны иметь сильные знания в области математики - средней школы, а затем закончить хороший университет в области компьютерных наук. Это (может быть) достаточное условие. Ваш мозг должен быть научен мыслить алгоритмически. ЭТО НЕ МОЖЕТ быть достигнуто путем самообучения.
Николай Иванов
источник
1
Ваш мозг можно научить алгоритмически мыслить без университета. Я бы даже предположил, что есть лучшие способы научиться этому, чем учиться в университете (например, ученичество было бы более эффективным для многих людей). С другой стороны, есть много людей, которые просто не могут мыслить алгоритмически, независимо от того, сколько курсов информатики они посещают. Университет, безусловно, является огромной помощью для большинства программистов, но в этом нет необходимости.
Фил
Если вы разбираетесь в чтении учебников, то читайте несколько книг и пользуйтесь онлайн-инструментами, такими как stackexchange.com и программисты, которые должны предоставить вам достаточные знания в области компьютерных наук и алгоритмов.
Питер Смит