Буквально 2 години тому я мав позачергову розмову із одним із моїх студентів, яких я менторю (так Артеме, ти знаєш про кого я ;-). Перший тиждень програмування реальної практичної задачки геть демотивував та навис непідйомним грузом на плечах людини, що лише починає свій шлях у веб програмуванні.
Вже з власного досвіду знаю, що проблема не у браку знань, вмінню знайти інформацію, швидкості навчання, вмінню розв’язувати проблеми, а лише у браку мотивації та підбадьорення. Зазвичай 30 хвилин, де я розказую як я сам починав і якими важкими були мої перші 4 тижні ковирянні у незрозумілому коді, допомагають людині повернути віру у свої сили. А головне – дають розуміння того, що далеко не все що вона буде сама створювати буде їй на 100% зрозумілим. “Свідомий” код приходить лише з кількістю написаних рядочків коду, чим більше пишемо, чим більше читаємо чужого коду – тим швидше наш код стане “свідомим”.
Підвернулась класна англомовна стаття, де програміст та вчитель із 20-річним стажем дає поради та ділиться досвідом із початківцями програмістами. Тримайте український переклад, читайте, мотивуйтесь і набирайтесь терпіння у своїй дорозі під назвою “навчання програмуванню” 😉
За швидкий і класний переклад дуже дякую Антону Головня!
***
Я програмую вже бiльше 20 рокiв, i десь половину цього часу я веду курси програмування. Також я витратив в цiлому близько 1000 годин навчанню програмування. I усі наступні поради та рекомендації я кажу усiм моїм студентам прийнанi раз:
Ласкаво просимо до програмування.
Програмування насправдi є важким заняттям. Не важливо, як добре ти програмуєш, тiльки одна рiч, яка тягне тебе до низу – це твоя здатнiсть швидко вчитися та вирiшувати проблеми. І чим далі ти йдеш, тим більше залежиш від цієї здатності навчатись. Це фантастична особливiсть – тобi нiколи не набридне програмувати. Якщо ж таки нудно, то це перший знак того, що Ви робите щось не правильно, та повинi абстрагуватись від коду у вирішенні самої проблеми.
Програмування є також однiєю з найбiльш розчаровуючий речей, якою ти коли-небудь займатимешся.
Зазвичай досвiд програмування є таким: пробуєш вирiшити щось, розчаровуєшся, пробуєш ще раз, крок назад, надоходить прозріння i в кiнцi кiнцiв програма працює.
Переживати розчарування є цiлком нормальним явищем i це нiколи повнiстю не пройде 🙂 Оскільки ти стаєш кращим, тому отримаєш важчі проблеми, відповідно знову складні часи та розчарування аж допоки чергова проблема не є вирішеною.
Саме завдяки розчаруванням, вирішення кожної наступної проблеми даватиме значно більше задоволення. Ви просто повинні пристосовуватись і сприймати чергове розчарування кожного разу більш комфортно.
Не важливо наскільки сильним є розчарування і на скільки складною є проблема, завжди є рішення.
Якщо ти краще програмуєш, ти стаєш кращим i бiльш упевненiшим у собі. У цьому і є другий зміст розчарування – воно заставляє зробити тебе черговий поштовх для вирішення складнішої проблеми.
Коли ми були дiтьми, ми ні на чому не розумілися, але ми цим не переймались.
Дорослими ж, ми маємо дуже мало можливостей зробити щось погано, адже ми такі досвіджені порівняно з дитинством. То ж не треба надто сильно переживати за свої можливі помилки, просто згадайте як діти ставляться до своїх помилок і спробуйте зосереджуватися більше на успіху. Хто не помиляється, то й не навчається!
Знай, що твоя перша година програмування буде дуже вiдрiзнятися від твоiх наступних 10 годин, якi будуть насправдi вiдрiзнятися вiд наступних твоiх 100 годин.
То ж не зволікай і просто сідай писати код.
Ти чаклун! Програмування – це просто магiя. Лише подумайте про це. Ми тяжко навчаємось та занурюємось у нашi книги знань (компютер + iнернет), щоб робити заклинання (програму).
Чаклун може навчати iнших чаклунiв як використовувати свою магiю. Ми можемо робити речi, якi вiдбуваются у свiтi спонтанно, та створювати чудеснi девайси, якi будь-хто може використовувати(Iнтеренет чи мобiльний телефон). Цi девайси можуть робити такi речi, якi були б не можливими без наших вмiнь та навичок.
Використовуй iнтерет. Кожна проблема, яку ти маєш у перший рiк свого навчання програмуванню, була вже у сотні інших початківців до тебе. I всi вiдповiдi є в iнтернетi.
Чим швидше ти отримаєш допомогу погугливши, тим щасливiшим ти будеш. Застереження: не завжди бери фрагменти коду, якi ти знайдеш онлайн , якщо ти не розумiєш як воно працює.
Як програмiсти, ми маємо при собi усюди “набiр iнструментiв” усякий раз коли ми програмуємо.
Iнструменти – це усi трюки нашого ремесла. Першi речi якi ти вчив (змiннi, цикли, і таке iнше) є нашими викруткою та молотом.
Ти будеш використовувати їх кожен день твоєї кар’єри програмiста.
Коли ти набираєшся бiльше досвiду, ти починаєш вчити, як використовувати бiльш складні iнструменти, якi є менш важливими для повсякденного використання, але чудесними для вирiшування не звичайних проблем (дебагери, структури даних, і т.д.).
Більшість напрямкiв програмування (програмування iгор, веб програмування, бази даних) мають своi проблеми та розв’язки. Як результат, будь яка проблема , яку ти вже вирiшив, допоможе легше вирiшити будь-яку наступну проблему.
Будь яка програма коли-небудь написана складається iз коду. Ти можеш читати, змінювати, зламувати майже все на своєму комп’ютерi, а також бiльшiсть iнших програм написаних людьми. Це просто неймовiрна сила.
Найкращий шлях навчитися краще програмувати – писати багато коду. Просто створюй речі з допомогою коду. Як вчитель, я буду намагатися допомагати тобi коли я зможу. Але одного разу ти будеш знати достатньо, i що не будь, що я тобi скажу, ти будеш вже знати без мене, просто присвятивши цьому достатньо часу.
Просто продовжуй писати код (для початку будь-який!!!). Один розумний чоловiк менi сказав: “З наполегивiстю успiх неминучий”.
Також не лише пиши, але й читай багато коду. Є багато програмiстiв, якi розумнiшi, нiж ми обидва. Вони пишуть багато коду, тому ти можеш читати цей код, коли захочеш. Наприклад, на github.
Читання чужого кращого коду, це як сидіти збоку від того спеціаліста і заглядати на його шедеври та пробувати перебрати його досвід!
Ще скажу, що друга мова програмування буде тобі даватись важче. Перша мова програмування окреслить твій погляд на програмування. А коли ти будеш вивчати другу мову, ти повинен будеш повернутися знову назад.
Мови, якi не ламають твiй мозок, не варто вивчати. Пiсля твоєi другоi мови, ти будеш швидше вивчати новi мови. Я можу вивчити достатньо, щоб бути “небезпечним” в будь-якiй iмперпативнiй мовi за одні вихiднi!
Не має кращої чи гіршої мови. ДеякI мови та iнструменти є кращими для вирiшування деяких проблем, ніж iншi. Коли ти вчиш рiзнi мови, не намагайся перенести свої старi думки до нової системи. Замiсть цього, вчи як програмувати ідіоматично на новiй мовi.
Будь грайливим. Будь дитиною. Програмування це гiгантське лего, яке повне проблем, якi чекають розв’язку. Витрачай час щоб робити iграшкову програму просто для гри. Це значно веселіше, ніж лише виконувати поставлену перед вами задачу.
Кращi програмiсти регулярно намагаються програмувати поза роботою. Якщо ти постійно програмуєш поза роботою, тоді ти ніколи не залишился без роботи 🙂
Коли зовсім не виходить вирішити проблему – пиши програму на паперi. Серйозно. Це як магiя. Це звичайна практика у програмуваннi. Я думаю це працює тому, що ти не думаєш про синтаксис i тому бiльше мізкуєш над вирiшенням самої проблеми.
Порад є дуже багато, щоб покращити і полегшити свій шлях у навчанні. Але це вже ваша справа знайти і вибрати найкраще. Те, що спрацює саме для вас!
***
Від себе лише додам, що початок ніколи не буває простим. Завжди варта зібратись із:
- терпінням
- вірою в свої сили
- наставником 😉
- великим бажанням та відповіддю на питання “навіщо?”
і написати свої перші 100 рядочків коду. Сама книга ще нікого не зробила супер програмістом. Успіхів!
А які ви маєте поради всім тим, хто навчається програмуванню?
Будьмо дружніми!