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


74

Мені 16. Я почав програмувати близько року тому, коли я збирався почати середню школу. Я берусь на кар’єру з програмування, і я роблю все можливе, щоб навчитися якнайбільше. Коли я вперше почав, я засвоїв основи C ++ з книги, і я почав сам навчатися речам. У наш час я набагато досвідченіший, ніж був рік тому. Я знав, що мушу вчитися сам, тому що середня школа не (навряд чи) навчить мене нічого цінного з програмування, і я хочу бути готовим.

Тут питання: наскільки важливо самостійно вивчати програмування?


12
Мови, якими я користуюся щодня, не існувало, коли я збирався в коледж. Тож самонавчання дуже важливо для вивчення нових технологій, якщо ви плануєте бути розробником більше декількох років.
Джон Страйер

5
Ви помітили, що зараз ви набагато досвідченіший, ніж був рік тому - адже я ставлю ставку рік тому, ви не знали, скільки можете навчитися! Я вважаю, що це відбувається кожні 2-5 років, я оглядаюсь назад і йду: "Ого, у мене все було не так і навіть не знав, що можна зробити це краще". Самонавчання є критичним, весь час, якщо ви хочете бути навіть помірно хорошими. Крім того, я не хотів би працювати з тим, хто не міг так вчитися.
Білл К

2
Коли я був в вашому віці, я б не зміг НЕ взяти програмування самостійно , навіть якщо б я спробував. Це занадто весело. І так, це виявилося надзвичайно важливим і корисним для моєї кар’єри, але це був просто приємний побічний продукт. Зробіть це заради задоволення, і вам не доведеться думати про те, потрібен вам досвід чи ні.
Бен Лі

Відповіді:


100

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

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

Я пам'ятаю ще за часів часу, коли я взяв свій перший клас структур даних, і ми отримали невеликий посібник для цієї нової мови під назвою "C ++", яку вони вирішили почати вивчати. У нас було два тижні, щоб забрати його достатньо, щоб написати код. Це було гарне заняття саме по собі. Ось так піде ваша кар’єра.

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

Я закінчив коледж у 1987 році. Я пішов працювати програмістом на C, маючи досвід роботи в програмах DOS, NetBIOS та "Припинись-залишайся-резидент". За роки, які я проводив, я майже не мав реальних тренувань. Подивіться на оголошення про роботу ... не дуже вимагайте цих навичок! Єдиною причиною, коли я можу бути працевлаштованою сьогодні, є те, що я провів ці роки, постійно навчаючись. Щоб досягти успіху як інженер, ти повинен мати звичку вчитися. Чорт, я б вийшов за рамки цього: ти повинен мати любов до навчання. Ви повинні бути такою людиною, яка балакає з WebGL або Android чи iOS, тому що це виглядає весело. Якщо ви такий тип людини і дотримуєтесь звички вчитися, ви далеко підете в галузі.


3
Це. Теорія теж дуже важлива, і важче бути самоучкою. Я не погоджуюся з навчанням компанії. Наше поле в наші дні дуже затребуване, і у компаній виникають проблеми з пошуком хороших талантів. (Принаймні, в моєму районі)
user606723

+1, у своїй шкільній бібліотеці я помічав дуже старі "TSR в C" ще у 2004 році. Цікаво, чи все ще є.
Джесвін Хосе

3
Теорія важлива, але її легше засвоїти самостійно, ніж раніше, адже відео багатьох університетських класів доступні в Інтернеті. Смію сказати, що можна більше дізнатися від перегляду лекцій великого професора в Інтернеті, ніж від фізичного присутності на лекціях посереднього.
Жанна Піндар

@Steven Burnap: "Курси інформатики навчають теорії, а не технології" - це неправда. У моєму університеті (KIT, Німеччина) ми маємо вивчити Java (і зробити кілька маленьких проектів), а також деякі вправи на C. Підготовка до ICPC (змагання типу TopCoder), де ми вчимося швидко вирішувати проблеми на C ++ пропонується. Ми також повинні зробити досить великий проект (одна група створила додаток для телефонів з Windows, які можуть автоматично децентралізуватись, щоб встановити мобільну мережу, якщо мережа не працює через стихійні лиха). Ми також знайомимось із Scala / Haskell.
Мартін Тома

1
Але це правда, що завжди слід робити проекти самостійно. Університет просто пропонує багато вихідних точок. Я думаю, якщо вам не цікаво, якщо ви не хочете спробувати деякі речі, ви не хочете працювати програмістом (як штатна робота).
Мартін Тома

29

Самонавчання дуже важливо. Ви не можете покластися на формальну освіту, щоб навчити вас усьому, що вам потрібно знати про свою сферу. Однак, якщо говорити, формальна освіта також дуже важлива, якщо ви хочете вийти на цю кар'єру добре підготовленою та добре обладнаною.

Я на шляху до коледжу і провів останні чотири роки, навчаючи себе розробці програмного забезпечення, в результаті чого зараз працюю у великій відомій компанії, що підтримує додатки для підприємств. Це не потребує тонни таланту, але це вимагає тонни праці та мотивації. Я думаю, що література та практика - це найкраща пропозиція щодо навчання. Важливо також вибрати конкретне поле, оскільки, хоча ви можете переносити мови та логіку у всіх полях, ви можете лише по-справжньому стати «чудовим», якщо достатньо практики та розуміння в певній галузі.


8
Існує формальна та самоосвіта, але ви відмовляєтесь від наставника на роботі - що може бути найкращим способом розширити свої навички та дізнатися, як насправді виробляється програмне забезпечення.
JeffO

1
"Однак, якщо говорити, формальна освіта також дуже важлива, якщо ви хочете вийти на те кар'єрне поле, готове взяти активну позицію в робочій силі". ... Це речення дуже розпливчасте. "Активна позиція" в "робочій силі"? Дійсно? Що це навіть означає?
м'ясо

@blesh Погодився. Змінено формулювання.
Джонні Роттен

1
Я думаю, що досвід роботи є найважливішим ... але значна частина цього - самоучка. Ви не можете розраховувати, що всі у вашому офісі навчать вас усьому, а найкраще
переймайте

11

Навчання самостійно дуже важливо. Навчання дисципліни для дослідження та збору необхідних знань для виконання завдання поставить вас далеко перед багатьма іншими, які покладаються на формальну підготовку для виконання того ж завдання. Це стосується будь-якої галузі, а не лише галузі програмного забезпечення.

Не зрозумійте мене неправильно, корисна підготовка чи освіта, але ваша власна мотивація до покращення своїх навичок допоможе вам перерости в кращого розробника програмного забезпечення. Завжди є чому навчитися: нові платформи або мови програмування, з якими слід експериментувати, розроблені методології розробки, інструменти та алгоритми для використання, список продовжується. Не все буде представлено вам через офіційне навчання, тому саме вам належить дізнатися про інші теми та ідеї, які, можливо, вам будуть цікаві, що допоможе вам протягом усієї вашої кар’єри в програмуванні.


6

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


4

Самостійне навчання - це неодмінний навик, який повинен мати програміст. Занадто багато ні. Якщо ви добрі, ви будете використовувати цю майстерність до кінця своєї кар’єри.


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

1
+1 Не погоджуйтесь з протиборством. Я б сказав те саме, і це теж базується на моєму досвіді.
CodeART

1
@Jim - які там абсолютно абсурдні міркування. WTF, я повинен зробити це навіть? "Я згоден, але -1 тому, що ти це сказав". O_o
Едвард Странд

@CrazyEddie: Сказати щось правдиво, не наводячи жодних причин для підтримки, не корисно на форумі, як це.
Джим Г.

@Jim - Рудиментарний огляд ваших відповідей змушує мене відповісти: "Люди, які живуть у скляних будинках, не повинні кидати каміння".
Едвард Странд

3

Самостійна робота дуже важлива, тому що ви не завжди матимете можливості для формальної підготовки. Коли ви починаєте шукати проект, стажування чи роботу, знайдіть тих, у кого є солідні старші розробники, які дійсно можуть чогось навчити вас. Перебування в середовищі, яке робить все правильно, може бути експресним шляхом до коду якості.


3

Я можу вам сказати, що було декілька місць, де я працював, де вони навіть не вважали б того, хто не мав власних проектів поза роботою. Він виявляє любов до програмування, крім того, щоб просто показати роботу та збирати чек. Я збираюся вийти на кінцівку і сказати це: Усі програмісти, які не люблять програму, смоктають на своїй роботі. Що ще гірше, вони не мають нічого додати до жодної команди, до якої вони могли б приєднатися.

Я б взяв недосвідченого молодшого розробника, який любить те, що він робить так багато, що він грає з кодом у вільний час протягом трьох розробників середнього рівня, які просто проходять по ходу: Цей молодший розробник буде чудовим якийсь день, а інші будуть ніколи не бути кращим, ніж вони є.

Якщо ви не вчите нових речей, ви просто сидите навколо, забуваючи про те, що знаєте.


2

Талант завищений.

Потрібно щонайменше 10 років практики, перш ніж можна стати великим у будь-якій галузі. Тому важливо почати рано.

Той факт, що ви почали на ранній стадії свого життя робити щось, що вам здається, вже висуває вас перед початком. Тож якщо у вас не будуть думки про область, над якою ви працюєте, не зупиняйтеся ... ніколи не зупиняйтесь!

Я вважаю самовчання одним із найкращих навичок будь-якого розробника, а другим - ступінь коледжу. Гарний ступінь коледжу важливий лише тому, що він додає стільки якості вашим знанням, що ви, мабуть, не змогли б зібрати самі. З цього правила, безумовно, є винятки, але це все, що вони є; винятки.

Крім того, чим більше досвіду ви накопичите рано, тим краще вам сподобається коледж і тим краще ви будете засвоювати нові представлені вам концепції. Спочатку ви знайдете це все так просто і безглуздо, але дуже швидко ви відчуєте себе викликом і хочете дізнатися більше.

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

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


Якщо говорити про міфи ... Я вважаю, що 10-річна практика мантри також є міфом. Ви можете дати багатьом людям 100 років практики за деякими навичками, і вони все одно ніколи цього не отримають. Звичайно, вони можуть бути кращими, ніж коли вони починали, але якщо це все ще недостатньо добре, це недостатньо добре. Крім того, я бачив кругові круги навколо досвідчених розробників з розробки програмного забезпечення. Звичайно, у них ще було чому навчитися, але так роблять дуже досвідчені розробники, навіть ті, хто має 10-річну практику. Талант дуже і дуже важливий. Без нього можна дістатися лише поки що.
Данк

@Dunk Я згоден. Думаю, ідея полягає в тому, що навіть талановитим людям потрібно принаймні 10 років, щоб навчитися чомусь добре, а талант - не паспорт до зоряності. Поєднання таланту та справжньої відданості протягом багатьох років є.
Олексій

Я погоджуюсь з тобою. Талант без практики не забирає далеко. Однак я, мабуть, пам’ятаю, що читав оригінальну статтю, і автор стверджував, що навіть люди зі звичайним талантом у даній майстерності можуть стати досить кваліфікованими за 10 000 годин практики. Я цілком не згоден з цією оцінкою. Це стає дійсно очевидним у галузі розробки програмного забезпечення, особливо якщо ви працюєте над додатками навіть із середнім рівнем складності. Переважна більшість розробників здатні робити лише прості речі. Ніяка кількість практики, здається, не виводить їх поза межі
Данк

@Dunk, то, можливо, їм не вистачає пристрасті, а не таланту.
Олексій

: Я думаю, що помітити талант досить просто, навіть коли він сирий і недосвідчений, і ніколи його не отримаєш.
Данк

2

За порівнянні з майже будь-який інший області , я можу думати, програмування в основному все про самоосвіту. Формальна освіта з інформатики / інженерії програмного забезпечення є корисною, але не навчитися кодувати.

Що ви дійсно повинні зробити, це просто почати працювати над проектами: побудувати щось, що ви хочете існувати. А потім приєднуйтесь до проекту з відкритим кодом, щоб працювати над тим, що ви хочете бути ще кращим. Навчання приходить безкоштовно ...


2

Вам потрібно навчитися новому самостійно - їдьте туди, куди вас перевезе цікавість.

Отримайте і офіційну освіту - 90% того, що вас навчають у формальній освіті, не використовуватимуться на робочому місці. Але 10%, що використовується, буде якоюсь дивною і незрозумілою річчю, про яку ви думали в той час, ніколи не принесе користі.

Без формальної освіти ви страждаєте від проблеми, яка найкраще описується як "ви не знаєте, чого не знаєте". Офіційна освіта дає вам широке широке висвітлення безлічі речей з повним знанням, що ніхто ніколи не вийде і все це використає. Тому що те, що ти будеш використовувати, - це те, чого ти не будеш знати, поки не знадобиться, це все про те, щоб бути готовим, щоб ти знав, куди піти шукати.

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

Побічна примітка: я провів всю свою кар’єру, починаючи з програмування у віці близько 15 років (шееш, старше 25 років ... близько 30 років), виявивши, що крім моєї університетської освіти, більшість навчальних курсів (ви знаєте ... вивчити BLAH в 3 дні повного робочого дня) досить марні. Вони, як правило, поверхневі, і наскільки багато рекламована мантра «підтримує свої навички», не дуже корисна для того, хто потребує глибоких технічних деталей. Купуючи книги, користуючись Інтернетом, заглиблюючись у математику / фізику / архітектуру / все, що зробило мене корисним та цінним. На одному етапі я був одним із приблизно 10 людей у ​​світі, які мали спеціальні знання з певного предмета - всі ці знання були здобуті самонавчанням та навчанням на роботі.

Єдиний час, щоб зупинити навчання - це коли ви знаходитесь в 6 футах у сосновій коробці.


2

Про це є добра притча:

Щорічний чемпіонат світу проходить у Британській Колумбії. Фіналістами стали канадські та норвезькі.

Їх завдання полягало в наступному. Кожен з них, що певна частина лісу. Перемагає той, хто міг би збити найбільшу кількість дерев з 8 ранку до чотирьох годин дня.

О восьмій годині свист подув і двоє дроворубів зайняли свої позиції. Вони зрубали дерево за деревом, поки канадський не чув, що норвежець зупиниться. Зрозумівши, що це його шанс, канадський подвоїв свої зусилля.

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

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

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

Ви можете уявити, як він здивувався, дізнавшись, що програв.

  • Як це сталося? - запитав він норвежця. - Кожну годину я чула вас за десять хвилин зупинок. Мовляв, чорт забираєш, ти зумів вирубати більше деревини, ніж я? Це неможливо.

  • Насправді все дуже просто - просто сказав норвежець. - Щогодини я зупинявся на десять хвилин. І поки ти продовжуєш рубати дрова, я точив сокиру.

Тож вам слід весь час вчитися, щоб тримати гостроту сокири .


1
  • Це важливо, інакше ти залишишся позаду

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


1

Самовикладання дуже важливо з двох причин:

  • після навчання : як уже було сказано в інших відповідях, самонавчання - це те, що ви будете робити у своєму повсякденному житті як розробник. Ви не можете знати все, і компанії це знають. ТИ, ЩО ТИ ПОВИНЕН знати, - це вдосконалити себе. Найкращі розробники мають можливість швидко самостійно вивчати нові мови, нові технології.
  • під час навчання : відстань між тим, що навчатимуть курси коледжу, та реальністю того, що буде вашою роботою, величезна. Зокрема, я кажу про технічне обслуговування та ремонтопридатність. Основна частина роботи розробника полягає у підтримці застарілого коду (виправлення помилок, удосконалення, додавання функцій тощо). Ви можете прочитати: Взагалі створення нового програмного забезпечення є основною частиною більшості програм програмування? для отримання детальної інформації.
    Оскільки збереження застарілого коду є важливим, вам також потрібно буде самостійно писати постійний код, і це рідко викладається на уроках (див. Як покращити підготовку студентів щодо ремонту?). Якщо ви не займаєтесь самонавчанням і багато читаєте під час навчання, ви навряд чи здобудете необхідні навички, які зроблять вас кращим розробником, ніж середній показник.
    Не намагайтеся вивчати багато мов / технологій під час навчання, але вивчайте добрі практики та чисте кодування. Наприклад, вам краще прочитати «Чистий код» Роберта К. Мартіна, ніж «Повна довідка» Герберта Шильдта під час навчання.

-1

Самонавчання дуже важливо, оскільки ви усвідомлюєте свої концепції по-своєму, і це дійсно допомагає. Вибір мови для самонавчання дуже важливий. Мови, які мають чітку документацію, дуже важливі, а те, чим ви не хочете бути, дуже амбітні. бажаючи вивчити занадто багато популярних мов занадто швидко. Так як ви говорите, що ви почали з c ++, я б рекомендував java для вас, це завжди так добре працює для програмістів-самоучок.


-1

Я, мабуть, навчився 95 +% того, що знаю, що стосується програмування, спробувавши речі самостійно та дізнавшись, як це працює. Школа може допомогти викладати гарний стиль програмування та оптимізувати код для швидкості тощо, але ви ніколи не станете «хорошим» програмістом, просто прочитавши підручник. Прекрасний спосіб побудувати навички програмування - це знайти щоденні проблеми, які можна було б використовувати для вирішення комп’ютера, і спробувати написати якийсь код, щоб це зробити. Застрявати - це частина навчання. Я почав хотіти стати веб-розробником, тому досить часто робив фіктивні веб-сайти (не розміщуючи їх і нічого, звичайно), щоб перевірити нові речі, які хотів би спробувати. Це вийшло досить добре для мене!


-1

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

Це показує, що програмісту краще навчатись самому, ніж залежати від школи. Школа завжди буде приховувати інформацію, оскільки вони думають, що ми не готові до неї.


Не впевнений, що я згоден. Я вважаю, що самонавчання є важливим, але, безумовно, є багато основного матеріалу, який ви можете отримати завдяки формальній освіті, яка надасть вам інструменти для спілкування з іншими та навчитеся вирішувати нові проблеми замість тих, що вже були вирішені.
jmort253

за цей час кожен намагається зрозуміти, у чому навчається школа, і вони навчаються дуже швидкими темпами, які кожен не міг наздогнати.
Цзя Лян

Школа - це програма індоктринації, покликана дати нам основу основних понять, але ми повинні продовжувати цю освіту і продовжувати вчитися самостійно.
jmort253

Я згоден на те, що ти скажеш. Тобто у вас самоучка є необхідною, якщо ми хочемо покращити програмування.
Цзя Лян

-3

Як завжди в математиці та інформатиці - існує 2 точки зору: 1. Необхідні та 2. Достатня умова

  1. Потрібно (само-) вчитися протягом усього життя. Немає іншого варіанту бути і залишатися хорошим програмістом.
  2. Вища точка не є достатньою умовою - ви повинні мати міцний досвід математики - середню школу, а потім закінчити хороший університет у галузі інформатики. Це (можливо) достатня умова. Ваш мозок повинен бути навчений мислити алгоритмічно. ЦЕ НЕ МОЖЕ бути досягнуто шляхом самонавчання.

1
Ваш мозок можна навчити алгоритмічно мислити без університету. Я б навіть припустив, що є кращі способи цього навчитися, ніж вступити до університету (наприклад, учень був би більш ефективним для багатьох людей). З іншого боку, є багато людей, які просто не можуть алгоритмічно мислити незалежно від того, скільки курсів з інформатики вони проходять. Університет, безумовно, є величезною допомогою для більшості програмістів, але і цього не потрібно.
Філ

Якщо ви вмієте читати підручники, то читання декількох книг та використання Інтернет-інструментів, таких як stackexchange.com та програмісти, повинні забезпечити достатній досвід у галузі інформатики та алгоритмів.
Пітер Сміт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.