Чи кожен може навчитись програмуванню? Досвід викладача

  • 20 июля, 12:51
  • 1629
  • 0

Навчитися програмуванню може кожен? Майкл Чои, засновник Coding Dojo, упродовж декількох років учить програмуванню як новачків, так і досвідчених фахівців. З цього він сам здобув немало важливих уроків, якими ділиться у своєму блозі.

У 2011 році я був партнером в процвітаючій компанії і не міг знайти кваліфікованого, але не занадто дорогого розробника, який встигав би за нашим зростанням.

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

Після внутрішнього навчання сотень розробників та переконання в їх успіху, я запитав себе:  "Якщо правильно провести навчання, чи необхідний попередній досвід програмування?"

Я вирішив перевірити свою ідею.

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

Дізнайтеся, як програмувати: що потрібно знати та уроки, які я засвоїв

 По-перше, не можна сказати, чи хтось з самого початку стане чудовим розробником.

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

  1. У програмі Coding Dojo у нас є кілька легких запитань щодо алгоритму, які ми задаємо як частину процесу подання заявки, але ми сприймаємо результати діяльності студента  достатньою скептично. 

Протягом своєї кар’єри я навчав LAMP, MEAN, Python / Django, iOS та Ruby on Rails для успішних керівників технологій, підприємців, розробників з 10-15-річним досвідом та студентів CS. Більшість з учнів були абсолютними новачками в програмуванні. 

Ви здогадаєтесь, що розробники з 10-15-річним досвідом або ті, хто має ступінь CS, будуть працювати набагато краще, ніж ті, хто ніколи не програмував. Це було справедливо протягом перших 6-7 тижнів нашого завантажувального табору, де спостерігалася наступна загальна закономірність:

навчання-програмування

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

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

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

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

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

Нижче наведено загальний графік для ілюстрації деяких з цих понять.

навчання-програмування

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

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

2. Будь-хто може навчитися кодувати, хоча не очікуйте лінійного прогресу.

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

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

Насправді, у правильному середовищі  навчання може бути прискорене  від 20 до 100 разів.

Ось приклад з мого життя. Коли мені було 14 років, я переїхав зі своєю сім'єю з Кореї в США. До цього я вчив англійський упродовж декількох років. А після переїзду в Штати я зрозумів, що зовсім не можу розмовляти! Я почував себе пригнічено і затиснуто. Хоча я стільки років вчив англійську, це навчання абсолютно не підготувало мене до занурення в  середовище.

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

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

Озираючись назад, я розумію, що це були ті самі моменти осяяння, коли все вияснюється.

Навчання програмуванню дуже схоже на навчання новій мові. Воно часто складається з декількох таких "моментів просвітлення", коли успіхи значно зростають. Схожим чином, навчання прискорюється, коли учня занурюють в нього з головою.

Ще я зрозумів, що прогрес в програмуванні абсолютно не лінійний. Насправді, він виглядає

навчання-програмування

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

З іншого боку, якщо ви не будете наполегливими, і якщо ви насправді не «занурені», ваш розвиток буде застійним.

Навчання кодуванню: мої висновки

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

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

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

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


Теги: учеба
Banner
0 комментариев
Сортировка:
Добавить комментарий