Сергій Немчинський: Топ-6 помилок у навчанні на програміста - FoxmindEd
07.08.2022

Сергій Немчинський: Топ-6 помилок у навчанні на програміста

Сергій Немчинський
8 хвилин перегляду
Сергій Немчинський: Топ-6 помилок у навчанні на програміста

Ми з нашими менторами зібрали список помилок, які роблять наші студенти.

У цій статті я докладно поясню, чому важливо не допускати таких помилок у навчанні.

1. Не планувати час

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

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

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

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

2. Пошук готових рішень в Інтернеті

Студенти часто шукають готові рішення в інтернеті. Але в 99% випадків вони там нерозширювані та неефективні. Навіть якщо є щось слушне, пам’ятайте: ви повинні знайти вирішення проблеми, а не скопіювати завдання. Якщо ви знайшли готове завдання, швидше за все, його написав та виклав такий самий студент. Тому що досвідчені програмісти не викладають рішення у відкритому доступі в інтернеті, а зберігають у репозиторії.

Так що, якщо ви знайшли у відкритому доступі рішення завдання, швидше за все, це лабораторка, і вона зроблена таким самим студентом, як і ви. І зроблено, швидше за все, погано. І якщо рішень багато, швидше за все, вони зроблені індусами, бо індусів теж багато. А байки щодо якості індуського коду — не зовсім байки.

Тому правильне рішення тут таке. Навіть якщо ви знайшли повне рішення задачі, над якою б’єтеся, подивіться, як рішення зроблено, розберіться та напишіть аналогічне рішення самі. По-перше, це буде красивіше, по-друге, ви зрозумієте, що там написано, і по-третє — що найважливіше — це буде написано у вашому стилі. Цей код ви зможете потім підтримувати. Якщо в коді є скопійовані шматки, ви на них дивитеся і нічого не розумієте. Воно працює? Працює. Але ви не знаєте, як. Такий блок коду виглядає як латка. Якщо таких латок у коді багато, він виглядає потворно і дуже складно підтримується. Не робіть так.

3. Лінуватися читати

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

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

Ось про це регулярно говорять наші ментори – не треба лінуватися читати. За останні десять років роботи програмістом я жодного разу не скористався відео порадою. Один раз рішення було у відео форматі — і як же це було незручно! Відео було лише півтори хвилини, але його довелося переглянути не один раз, щоб зрозуміти, як воно працює. Потім ще й виявилось, що воно для моєї проблеми не підходить. А в тексті я переглянув би інформацію секунд за п’ятнадцять, зрозумів би, що це не про мою ситуацію, і рушив би далі.

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

4. Не дотримуватись стилю написання коду

Студенти вважають, що стиль — це неважливо і пишуть абияк. “Це ж навчальний проект, ось я стану дорослим і напишу нормально”. Ні, друзі. Навчальний проект для того і потрібен, щоб вчитися писати код нормально. У робочому проекті писати код нормально буде набагато складніше. Швидше за все, на проекті буде не ваш код, а написаний кимось раніше. Швидше за все, написан він буде — ну, так собі. І вам, щоб почати писати більш-менш пристойно, вже потрібна звичка писати код добре. Тоді ви, скріпивши серце, зможете написати більш-менш добре і відповідно до навколишнього коду.

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

5. Клієнти – не завжди технічні люди

Найчастіше клієнти взагалі не технічні люди. Студенти часто люблять вивішувати на інтерфейс користувача технічну інформацію. ID запису в базі, UNIX-time, дату-час у форматі введення тощо. Звертаю вашу увагу: саме програміст відповідає за те, щоб циферки-літери на екрані були зрозумілі людині.

Ви, звичайно, скажете, що тут має попрацювати UX/UI -дизайнер. Можливо. Потім. І він над вашим додатком попрацює, можливо, потім. Але доопрацювання коду з того моменту, як він запрацював, і до моменту появи промислового, це 80% робочого часу програміста. Саме написання займає відсотків двадцять, у решту часу ви приводите його до ладу. Шаблони, формати дати-часу, верстку підрівняти, зробити так, щоб ніщо нікуди не наїжджало, щоб усе було видно, щоб написи розташовувалися один під одним, щоб табличка була там, де треба — це все.

Більшість програмістів, особливо бекендівських, вважають: “Та я взагалі на бекенді пишу, мені це ніколи не знадобиться”. Ні, друзіі. Знадобиться. Це другий аспект, який визначає, професійний програміст ви чи ні. Цьому треба вчитися і до цього треба звикати — ніколи не кидати роботу на 20%. Ви зробили 20%, у вас виводяться написи, але вкрив і навскіс, і нічого не зрозуміло — це не зроблена робота. Роботу треба доводити до кінця. Тому в нас такі зарплати — ми доводимо роботу до кінця.

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

6. Неуважність

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

Другий наслідок цієї проблеми — студенти роблять, щоб виконати, а не щоб зрозуміти.. Нам не потрібно, щоб ви здали завдання та отримали бали. Нам потрібно, щоб у вас були знання та вміння. І вам не потрібно проскочити якнайшвидше, поки викладач не помітив, і отримати оцінку. Навіщо вам оцінка, коли потрібні знання? Ви повинні зробити нормально. Щоб і ментор був задоволений, і ви розуміли, що завдання зроблено цілком, від початку до кінця.

Тож робимо так. Читаємо завдання від початку до кінця, разів п’ять. Навіть якщо там два рядки. Як показує практика, при першому та другому читанні ви якісь аспекти упустите. Читаєте. Виписуєте те, що незрозуміло. Запитуєте — ментора чи замовника. І лише після цього приступаєте до роботи над завданням. Тому що досить часто виявляється, що перше розуміння завдання взагалі неправильне. А замовник хотів бачити взагалі протилежне.

Завжди ваш Сергій Немчинський