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

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

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

73
Ви помітили, що тепер ви набагато більш досвідчені, ніж рік тому - адже я думаю, що рік тому ви не знали, скільки ви можете навчитися! Я вважаю, що це відбувається кожні 2-5 років, я дивлюся назад і йду "Wow, я мав, що все неправильно і навіть не знаю, що можна зробити це краще". Самостійне навчання є критичним, постійно, якщо ви хочете бути навіть помірно хорошим. Крім того, я б не хотів працювати з тим, хто не міг навчитися.
додано Автор Aesin, джерело
Коли я був у вашому віці, я б не міг не самостійно займатися програмуванням, навіть якщо б я пробував. Це занадто весело. І так, це виявилося надзвичайно важливим і корисним для моєї кар'єри, але це був просто гарний побічний продукт. Зробіть це для задоволення від цього, і вам не доведеться думати про те, чи потрібен вам цей досвід чи ні.
додано Автор David Brabant, джерело
Мови, які я використовую щодня, не існувало, коли я навчався в коледжі. Таким чином, самонавчання дуже важливо для вивчення нових технологій, якщо ви плануєте бути розробником більше декількох років.
додано Автор Jon Strayer, джерело

17 Відповіді

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

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

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

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

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

100
додано
+1, я помічав дуже старий "TSRs в C" в моїй шкільній бібліотеці в 2004 році. Цікаво, якщо він все ще там.
додано Автор ya23, джерело
Повністю узгоджений. При прийомі на роботу, я віддаю перевагу людині, яка має як ступінь, щоб показати теорію, так і навчила технологію самостійно, але я візьму того, що навчився техніці самостійно, над ким-небудь з будь-яким ступенем. Ступінь має значення, але проявляє ініціативу, пристрасть і здатність більше вчитися на власні справи. Я в основному навчаюся з точки зору програмування (мій ступінь в теоретичній математиці), і він добре працював для мене.
додано Автор bedwyr, джерело
Теорія важлива, але навчитися її легше, ніж раніше, оскільки відео багатьох університетських класів доступні в Інтернеті. Смію сказати, що можна було б дізнатися більше від перегляду лекцій великого професора в Інтернеті, ніж від фізичного присутності на лекціях посереднього.
додано Автор emeryville, джерело
@ Steven Burnap: "Комп'ютерні курси навчають теорії, а не технології" - це не так. У моєму університеті (KIT, Німеччина), ми повинні вивчати Java (і робити деякі маленькі проекти), а також деякі вправи в C. Підготовка до ICPC (конкуренція, як TopCoder), де ми дізнаємося, як швидко вирішувати проблеми в C ++, запропоновано. Ми також повинні зробити досить великий проект (одна група створила програму для Windows-телефонів, які можуть автоматично децентралізувати установку мобільної мережі, якщо мережа не працює через стихійні лиха). Ми також отримуємо вступ до Scala/Haskell.
додано Автор Martin Thoma, джерело
Але це правда, що ви завжди повинні робити проекти самостійно. Університет просто пропонує багато відправних точок. Я думаю, якщо ви не цікавитеся, якщо ви не хочете спробувати деякі речі, ви не повинні хотіти працювати програмістом (як повний робочий день).
додано Автор Martin Thoma, джерело
Це. Теорія дуже важлива і важче бути самоучкою. Я не погоджуюсь на тренінг компанії, хоча .. Наше поле дуже затребуване в наші дні, і компанії мають проблеми з пошуком хороших талантів. (Принаймні у моєму регіоні)
додано Автор jaybers, джерело

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

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

29
додано
Існує формальне і самоосвіта, але ви не маєте наставника на робочому місці, який може бути найкращим способом розтягнути свої навички і дізнатися, як програмне забезпечення дійсно робиться.
додано Автор bstpierre, джерело
"Проте, якщо говорити, формальна освіта також дуже важлива, якщо ви хочете увійти в цю кар'єру, готові взяти активну позицію в робочій силі". ... Цей вирок дуже розпливчастий. «Активна позиція» в «робочій силі»? Дійсно? Що це означає?
додано Автор MikeP, джерело
@blesh Погоджено. Змінено формулювання.
додано Автор Johnny Rotten, джерело
Я думаю, що на робочому місці найважливіше ... але велика частина цього є самоучкою. Ви не можете очікувати, що всі у вашому офісі навчать вас усьому, а найкраще беруть свій досвід з будь-якого місця, де вони можуть отримати його.
додано Автор jaybers, джерело

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

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

11
додано

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

6
додано

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

4
додано
@CrazyEddie: Просто сказати щось вірно, не надаючи деяких причин підтримки не є корисним на такому форумі.
додано Автор Boris Terzic, джерело
-1: Я згоден, що самонавчання є незамінним вмінням, але просто сказати, що це не робить це так.
додано Автор Boris Terzic, джерело
@Jim - рудиментарний огляд ваших відповідей змушує мене відповісти: "Люди, які живуть у скляних будинках, не повинні кидати каміння".
додано Автор Brett McCann, джерело
@Jim - що абсолютно абсурдне міркування у вас є. WTF я повинен навіть зробити з цього? "Я згоден, але -1, тому що ви це сказали". O_o
додано Автор Brett McCann, джерело
+1 Не згоден з голосуванням. Я б сказав те ж саме, і він заснований на моєму досвіді теж.
додано Автор CodeART, джерело

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

3
додано

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

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

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

3
додано

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

  1. Необхідно (самостійно) вчитися протягом усього життя. Немає іншого варіанту бути і залишатися хорошим програмістом.
  2. Вищенаведена точка не є достатньою умовою - ви повинні мати сильний досвід у математиці - середню школу, а потім випускник хорошого університету в області інформатики. Це (можливо) достатня умова. Ваш мозок повинен навчитися мислити алгоритмічно. Це НЕ МОЖЕ бути досягнуто шляхом самонавчання.
3
додано
Ваш мозок можна навчити, як мислити алгоритмічно без університету. Я б навіть припустив, що є кращі способи вивчення цього, ніж відвідування університету (наприклад, навчання у багатьох людей буде ефективнішим). З іншого боку, є багато людей, які просто не можуть подумати алгоритмічно, незалежно від того, скільки навчальних дисциплін навчають. Університет - це величезна допомога більшості програмістів, але це також не потрібно.
додано Автор user7935, джерело
Якщо ви володієте читанням підручників, то читання кількох книг і використання онлайнових інструментів, таких як stackexchange.com і програмісти, повинні забезпечити багато досвіду в галузі комп'ютерних наук і алгоритмів.
додано Автор A. I. Breveleri, джерело

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

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

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

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

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

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

2
додано

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

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

2
додано

Існує хороша притча про це:

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

     

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

     

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

     

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

     

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

     

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

     

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

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

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

Таким чином, ви повинні вивчати весь час, щоб зберегти різкий хрест .

2
додано

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

1
додано

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

It takes at least 10 years of practice before one can become great in any given area. So it is important to start early.

The fact that you started at an early stage of your life doing something you seem to like already puts you way ahead of the pack. So unless you're having second thoughts about the area you'll be working, don't stop... don't ever stop!

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

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

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

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

1
додано
Для тих з нас, хто не є талановитим, не відразу підбирайте речі, вимагайте читання і використання тих самих речей знову і знову, поки вони не отримають його, і задайте багато питань, на які дають відповіді дійсно щедрі і терплячі люди, міф, який є вирішальним для натхнення у важкі часи.
додано Автор Craig Vermeer, джерело
@ Dunk тоді, можливо, їм не вистачає пристрасті, а не таланту.
додано Автор Voltaire, джерело
@Dunk Я згоден. Я думаю, що ідея більше в тому сенсі, що навіть талановитим людям потрібно хоча б 10 років, щоб дізнатися щось добре, а талант не є паспортом для слави. Поєднання таланту і справжньої відданості протягом багатьох років.
додано Автор Voltaire, джерело
: Я вважаю, що досить легко виявити талант, навіть коли він сирий і недосвідчений, і він ніколи не отримає його.
додано Автор Switch, джерело
Говорячи про міфи ... Я вважаю, що 10 років практики мантри також є міфом. Ви можете дати багатьом людям 100-річну практику на певних навичках, і вони ніколи не отримають її. Звичайно, вони можуть бути кращими, ніж коли вони почали, але якщо це все ще не достатньо, це не достатньо. Крім того, я бачив, як нові гради запускають кола навколо дуже досвідчених розробників програмного забезпечення. Звичайно, їм ще треба було вчитися, але це роблять дуже досвідчені розробники, навіть ті, з 10-річною практикою. Талант дуже і дуже важливий. Без неї ви можете отримати тільки поки що.
додано Автор Switch, джерело
Я погоджуюсь з тобою. Талант без практики не займе далеко. Проте, я, здається, пам'ятаю, що прочитав оригінальну статтю, і автор стверджував, що навіть люди з звичайним талантом з певним навиком можуть стати цілком досвідченими з 10 000 годин практики. Я повністю не згоден з цією оцінкою. Це стає дійсно очевидним в області розробки програмного забезпечення, особливо якщо ви працюєте на додатках з навіть середньою складністю. Переважна більшість розробників здатні робити лише відносно прості речі. Ніяка кількість практики, здається, не бере їх за межі точки
додано Автор Switch, джерело

Самостійне навчання є дуже важливим з двох причин:

  • after your studies : as already stated in other answers, self-teaching is what you will do in your everyday life as a developer. You cannot know everything and companies know this. What you MUST know is how to improve yourself. Best developers have the ability to learn new languages, new technologies quickly by themselves.
  • during your studies : the distance between what college courses will teach you and the reality of what will be your job is huge. Specifically I am talking about maintenance and maintainability. An essential part of a developer's job consists in maintaining legacy code (bug fixes, improvements, adding features, etc). You can read Is the creation of brand new software generally a major part of most programming jobs? for further details.
    As maintaining legacy code is essential, you will also need to write maintainable code yourself, and this is rarely taught with formal lessons (see How to improve the training of students regarding maintainability?). If you don't practice self-teaching and read a lot during your studies, you are unlikely to acquire the needed skills that will make you a better developer than the average.
    Don't try to learn lots of languages/technologies during your studies, but learn good practices and clean coding. For example you'd better read Robert C. Martin's "Clean Code" than Herbert Schildt's "Java The Complete Reference" during your studies.
1
додано

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

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

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

1
додано

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

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

1
додано
Не впевнений, що я згоден. Я вважаю, що самостійне навчання є важливим, але, безумовно, є багато фундаментальних матеріалів, які ви можете отримати від формальної освіти, яка надасть вам інструменти для спілкування з іншими і навчиться вирішувати нові проблеми, а не ті, які вже були вирішені.
додано Автор jmort253, джерело
Школа - це програма індоктринізації, розроблена для того, щоб дати нам фундамент основних концепцій, але нам належить продовжувати цю освіту і продовжувати навчання самостійно.
додано Автор jmort253, джерело
протягом цього часу кожен з них намагається зрозуміти, що навчає школа, і вони навчають дуже швидкими темпами, кожен не міг наздогнати.
додано Автор Jie Liang, джерело
Я згоден з тим, що у вас говорять. Саме вчити себе є обов'язковим, якщо ми хочемо покращити програмування.
додано Автор Jie Liang, джерело