07.08.2022

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

Сергей Немчинский
8 минут просмотра
Сергей Немчинский: Топ-6 ошибок в обучении на программиста

Мы с нашими менторами собрали список ошибок, которые совершают наши студенты.

В этой статье я подробно объясню, почему важно не допускать таких оплошностей в обучении.

1. Не планировать время

Если не планировать время на учебу, а сидеть учиться после работы, то можно легко и быстро выдохнуться, выгореть. Поверьте, учиться на программиста и работать программистом — практически одно и то же. Когда вы работаете программистом, вы тоже постоянно учитесь. Вам нужно планировать и рабочую нагрузку, и учебную, и личную жизнь! Если вам не хватает времени на жизнь, долго вы учиться не сможете…

Я понимаю, что вам хочется поскорее разобраться, понять то, что сложно, залить эту проблему временем — но это путь в никуда. Ладно, один раз можете так сделать, но сами с собой договоритесь, что сделаете прорыв, а потом надо дать себе роздых. Но делать так часто не надо. А то будет маятник. Я вот три дня педалил, а потом неделю ничего не делал. Потом будет так: два дня педалишь — две недели ничего не делаешь. Потом день педалишь — три недели ничего не делаешь. А потом просто бросаешь. Так себе динамика.

Поэтому старайтесь этот маятник не разгонять, а успокаивать. Поработайте два-три часа, затем несколько часов отдохните. Не забывайте планировать время на отдых. Это очень важно в учебе. Как человек, который постоянно учится, могу сказать: когда слишком долго учишься, начинаешь сильно тупить. Продуктивнее сделать перерыв на несколько часов, и вернуться к задаче со свежими силами, возможно даже завтра. Так вы и поймете быстрее, и разберетесь быстрее, и вообще процесс будет легче. Зачем сидеть до двух часов ночи, если завтра можно сделать за 15 минут?

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

2. Поиск готовых решений в интернете

Студенты часто ищут готовые решения в интернете. Но в 99% случаев они там нерасширяемые и неэффективные. Даже если есть что-то подходящее, помните: вы должны найти решение проблемы, а не скопировать задачу. Если вы нашли готовую задачу, скорее всего, ее написал и выложил такой же студент. Потому что опытные программисты не выкладывают решения в открытом доступе в интернете, а хранят в репозитории.

Так что, если вы нашли в открытом доступе решение задачи, скорее всего, это лабораторка, и она сделано таким же студентом, как и вы. И сделана, скорее всего, плохо. И если решений много, скорее всего, они сделаны индусами — потому что индусов тоже много. А байки по поводу качества индусского кода — не совсем байки.

Поэтому правильное решение тут такое. Даже если вы нашли полное решение задачи, над которой бьетесь, посмотрите, как решение сделано, разберитесь и напишите аналогичное решение сами. Во-первых, это будет красивее, во-вторых, вы усвоите, что там написано, и в-третьих — что самое важное — это будет написано в вашем стиле. Этот код вы сможете потом поддерживать. Если у вас в коде есть скопированные куски, вы на них смотрите и ничего не понимаете. Оно работает? Работает. Но вы не понимаете, как. Такой блок кода выглядит как заплатка. Если таких заплаток в коде много, он выглядит безобразно и очень сложно поддерживается. Не делайте так.

3. Лениться читать

Увы, но и студенты, и программисты регулярно ленятся читать и пытаются обойтись двух-трехминутным роликом на Ютубе. Понимаете, видео ролики хороши только на первых этапах обучения, когда вы вообще ничего не понимаете. Вас нужно ввести в курс, провести по дорожке. Когда вы учите основы языка, синтаксис, видео — это хорошее решение.

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

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

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

4. Не соблюдать стиль написания кода

Студенты считают, что стиль — это неважно и пишут, как попало. «Это же учебный проект, вот я стану взрослым и напишу нормально». Нет, ребята. Учебный проект как раз и нужен, чтобы учиться писать код нормально. В рабочем проекте писать код нормально будет гораздо сложнее. Скорее всего, на проекте будет не ваш код, а написанный кем-то ранее. Скорее всего, написан он будет — ну, так себе. И вам, чтобы начать писать более-менее прилично, уже нужна привычка писать код хорошо. Тогда вы, скрепя сердце, сможете написать более-менее хорошо и в соответствии окружающему коду.

Мы очень много уделяем внимания качеству кода. Именно качество кода отличает профессионального программиста от вчерашнего выпускника университета, который сдавал только лабораторки и пишет черт знает что. По этому признаку можно отличить человека, который не имеет профессионального опыта. А мы хотим, чтоб наши студенты в любой момент писали код так, чтоб с ним было легко разобраться и все понятно. Эту привычку сложно выработать и легко потерять, потому что начать писать говнокод можно в любой момент. Всегда писать хорошо очень важно.

5. Клиенты — не всегда технические люди

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

Вы, конечно, скажете, что тут должен поработать UX/UI -дизайнер. Возможно. Потом. И он над вашим приложением поработает — возможно, потом. Но долизывание кода — с того момента, как он заработал, и до момента появления промышленного — это 80% рабочего времени программиста. Само написание занимает процентов двадцать, в остальное время вы приводите его в порядочек. Шаблоны, форматы даты-времени, верстку подравнять, сделать так, чтоб ничто никуда не наезжало, чтоб все было видно, чтоб надписи располагались друг под другом, чтоб табличечка была там, где надо — вот это все.

Большинство программистов, особенно бекэндовских, считает: “Да я вообще на бекэнде пишу, мне это никогда не понадобится”. Нет, ребята. Понадобится. Это второй аспект, который определяет, профессиональный программист вы или нет. Этому нужно учиться и к этому надо привыкать — никогда не бросать работу на 20%. Вы сделали 20%, у вас выводятся надписи, но вкривь и вкось, и ничего не понятно — это не сделанная работа. Работу надо доводить до конца. Поэтому у нас такие зарплаты — потому, что мы доводим работу до конца.

Привыкайте это делать еще на этапе обучения. На работе всему этому выучиться будет гораздо сложнее, чем во время учебы. Даже если вам кажется, что «Вот приду на работу и буду нормально писать». Не будете. Учитесь нормально писать, пока учитесь.

6. Невнимательность

Это реальный бич, и я сам об него много бился головой. Я человек нетерпеливый, мне тоже надо бежать скорее туда или сюда. Такие, как я, студенты не дочитывают задание до конца, не дочитывают описание метода или библиотечного класса, используют его наобум или вообще делают не ту задачу, что им поставили. Потом получается, что вы сделали какую-то ересь. И заказчик этому явно рад не будет и спросит — а где же то, что было написано в задаче?

Второе следствие из этой проблемы — студенты делают, чтобы выполнить, а не чтобы понять. И это реально бич. Нам не нужно, чтобы вы сдали задачу и получили баллы. Нам нужно, чтобы у вас были знания и умения. И вам не нужно проскочить побыстрее, пока преподаватель не заметил, и получить оценку. Зачем вам оценка, когда нужны знания? Вам нужно сделать нормально. Чтобы и ментор был доволен, и вы понимали, что задача сделана целиком, от начала до конца.

Поэтому делаем так. Читаем задание от начала до конца, раз пять. Даже если там две строчки. Как показывает практика, при первом и втором чтении вы какие-то аспекты упустите. Читаете. Выписываете то, что непонятно. Задаете вопросы — ментору или заказчику. И только после этого приступаете к работе над задачей. Потому что довольно часто оказывается, что первое понимание задачи вообще неправильное. А заказчик хотел видеть вообще противоположное. 

Всегда ваш Сергей Немчинский