З чого почати вивчати програмування – одне з найчастіших питань. Вивчення починається з азів, і я вважаю, що це можна зробити самостійно. У цій статті поговоримо, з чого почати та на які нюанси звернути увагу.
Вивчіть англійську мову
Перш ніж узятися до вивчення безпосередньо програмування, зайдемо з іншого боку. Вся інформація з програмування в інтернеті (крім самої базової) англійською мовою. Вся документація виключно англійською. Ви не станете хорошим програмістом, якщо не знаєте англійську хоча б на рівні читання документації. Інформацію, яку ви можете знайти російською – не повна, застаріла чи помилкова. Тому програміст гуглить та читає виключно англійською мовою. Так, стартові книги та відео з будь-якої програмістської спеціальності можна знайти російською. Але коли ви почнете працювати професійно, вам у будь-якому випадку знадобиться англійська.
Без англійської, якщо не неможливо зовсім, то дуже важко. Без мови ви витратите втричі більше часу, щоб досягти тих же результатів, яких досягли б зі знанням англійської. Розмовна англійська теж важлива і стане в нагоді в кар’єрі, але вміння читати документацію абсолютно необхідне. І саме з цього ви маєте розпочати.
*Програмісти 1С можуть не вивчати англійську. Це особлива каста.
Шукайте джерело вивчення
Джерело вивчення з тієї мови програмування, яку ви вибрали, може бути будь-яким: книги, курси в інтернеті (у тому числі безкоштовні) та ін. Мені найбільше до душі книга, але тут вибір за вами. Як вибирати мови програмування я вже розповідав, читайте тут.
Виділяйте достатньо часу на навчання
Якщо сідаючи щось вчити ви витрачаєте менше 1 години, ви ніколи нічого не вивчите. Вам потрібно виділити щонайменше 1,5-2 години на кожне заняття програмуванням.
Займатись треба не менше трьох разів на тиждень. Займаючись рідше, ви забуватимете все, що вивчили на попередніх уроках, і вам щоразу буде потрібно багато часу, щоб відновити рівень, якого ви досягли на попередньому занятті.
Тут усе зрозуміло та очевидно. Можна вчитися роками й не далеко відійти від стартової точки, бо без регулярних занять ви все забуватимете.
Відводьте більше часу на практику
Навчання програмування – це прикладне завдання. Тільки практика допоможе зрозуміти і запам’ятати, як вирішуються ті чи інші завдання: як завдання декомпозується в код, як будується алгоритм, як вирішується завдання з допомогою програми. Все це досить складно, вивчити це між справою не вдасться, лише практика.
Звичайно, якщо ви вже програмуєте якоюсь іншою мовою і вивчаєте нову, то ці питання для вас не проблема. Всі мови +/- про одне. Переважна кількість сучасних мов імперативна, і з однієї імперативної мови ви досить просто перейдете на іншу, потрібно тільки вивчити синтаксис.
Якщо ж це ваша перша мова програмування і ви ніколи нічого в житті не програмували і не розумієте, що з цим усім робити, знадобиться багато часу, щоб просто налаштуватися на мислення програміста. Далі буде простіше.
Звертаю вашу увагу! Весь час, який ви витрачаєте за сидінням за консоллю (не тільки коли ви пишете код, а й коли налаштовуєте ваше IDEшку, базу даних, оточення тощо) – це все навчання програмуванню. Цей час не марний, ви його витрачаєте на навчання. У цьому моменті у деяких новачків виникає паніка, мовляв, два дні витратив тільки на те, щоб налаштувати фреймворк, там все криво і нічого не виходить. Ці два дні ви не втратили, точніше, ви їх витратили з користю. Якби ці два дні ви просто слухали лекції з програмування і не займалися практикою – ось тоді ви витратили б час. Все що ви робите руками на комп’ютері, що хоч якось стосується програмування – це навчання. Все, що не стосується написання коду та роботи з вашим оточенням – це отримання довідкової інформації. І вона не така вже й важлива.
Ви берете навчальний курс або книгу з вашої мови програмування і починаєте практикувати всі завдання, які там є. Якщо у цій книзі/курсі немає практичних завдань – просто викидайте її. Завдання обов’язково мають бути! Ви повинні писати код, налаштовувати консоль і все, що навколо вас знаходиться. Тому що саме цим ви будете займатися на роботі. Чим досвідченіше ви будете ставати, тим менший відсоток часу у вашій роботі займатиме безпосередньо написання коду і більше часу йтиме саме на налаштування, читання документації, осмислення що ж все ж таки потрібно зробити і ін.
Складіть список, що потрібно знати програмісту-початківцю
Вам не обов’язково дочитувати/доробляти всю книгу до кінця. Як правило, книги та курси складаються таким чином, щоб дорожче продати, відповідно, набивають у зміст якомога більше. І не все вам потрібно. Вивчіть, що потрібно знати програмісту-початківцю конкретно з вашої мови. У нас є чек лист, в якому зібрано список вимог. Коли ви пройшли приблизно третину книги, загляньте в цей чек-лист, випишіть ті технології, які ви повинні знати своєю мовою, і звіряйтеся по ньому, що ви знаєте, а що ні. Далі кидаєте книгу для початківців і переходите безпосередньо на вивчення тих фреймворків та бібліотек, які вам потрібні.
Не скачіть з мови на мову
Я дуже часто зустрічав новачків-програмістів, які кілька місяців вивчали одну мову, потім перейшли до іншої, потім ще і ще. Такий підхід ні до чого не веде — добре засвоїти мову за кілька місяців неможливо і в результаті ви не станете фахівцем в жодній з них. Якщо ви витратите 9 місяців на вивчення Python, ви станете Python-розробником. Якщо ви витратите ці ж 9 місяців на 3 різні мови, то в результаті не станете ніким.
Міняти професію/мову програмування варто лише у двох випадках:
- Якщо ви розумієте, що вам категорично не подобається, і ви більше не хочете працювати в цьому напрямку. Тоді чесно признаєтеся собі, що згаяли час даремно на освоєння цієї професії/мови і шукайте нову.
- Ви стали senior, пропрацювали багато років в одному напрямку і зрозуміли, що набридло, що хочеться чогось нового.
Тільки в цих випадках ви переходите з мови на мову. У всіх інших випадках — вибрали і пиляйте її. І не морочитесь над іншими.
Ніколи не опускайте руки
Так, вчитися складно. Навіть на курсах вам буде складно, бо самостійне навчання – це нелегко. А все, що не самостійне навчання, то не навчання зовсім, адже за вас вам знання в голову ніхто не вкладе. Якщо вам дали чіткий список, що потрібно зробити, щоб програма запрацювала, ви це зробили і тепер думаєте, що ви програміст — на жаль, ні. Програміст — той, хто може написати список того, що потрібно зробити, щоб програма запрацювала.
Вчитися програмуванню важко — це справді складна професія. Якби поріг входу не був таким високим, кожен був програмістом і отримував великі зарплати. Але є хороша новина. Будь-яка людина, яка не має пошкоджень мозку, може освоїти програмування. Питання лише в тому, чи вистачить вам для цього мотивації. А це вже залежить лише від вас. Оточіть себе мотивованими людьми, домовтеся зі своєю сім’єю, щоб вона вас підтримувала, знайдіть ментора, який допоможе та покаже шлях. Ніколи не опускайте руки!
Як відомо, якщо ви вважаєте, що у вас вийде, або якщо ви вважаєте, що не вийде — ви в обох випадках маєте рацію.
Завжди ваш Сергій Немчинський