Ошибки начинающих программистов, тех, кто только учится или только начинает работать, очень похожи друг на друга. Многие из них можно назвать не ошибками, а особенностями поведения, этапами, через которые проходят все новички. Нам, как создателям курсов Java, интересна эта тема, поэтому мы опросили лидеров мнений и собрали самые распространенные, на их взгляд, примеры таких поведенческих ошибок, чтобы… сократить их продолжительность для будущих разработчиков ПО. Если вы рано начнете замечать такие поведенческие ошибки и пытаться их исправить, ваш путь к мастерству будет короче, а ваша работа — более эффективной.

Использование неправильных инструментов

Самая распространенная ошибка, которую каждый может наблюдать среди людей, начинающих программировать, — это использование неправильных инструментов или их неправильное использование. Иногда они выбирают инструменты, но игнорируют задачу, которую им нужно решить с их помощью. Что-то слышали в рекламе, или читали отзывы. Полные новички иногда боятся расширять свой набор инструментов. Они могут упорно игнорировать Git, основы которого можно освоить очень быстро, использовать первый попавшийся редактор кода, устаревшую IDE, неправильный фреймворк и так далее.

Я видел несколько примеров, когда новички не знают о таких инструментах контроля версий, как Git, и вместо этого используют что-то вроде DropBox для хранения своего кода., Эрик Хеллман, внештатный разработчик программного обеспечения. , сказал: "Я также видел, как новички используют MS Word для написания кода, и на это может быть довольно забавно смотреть".

Игнорирование отладки

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

Итак… Вы работаете со статически типизированными языками, такими как Java, C++ и т. д. Следовательно, здесь нечего сказать, кроме отладки вашего кода! Попробуйте это сразу после написания ваших первых программ. Это чрезвычайно полезная привычка, и она необходима в вашей работе. Причем на момент начала своей самой первой работы желательно, чтобы в этом навыке уже была уверенность. Все современные IDE (а, исправив ошибку предыдущего абзаца, вы будете использовать современные IDE, верно?) имеют отличные встроенные отладчики со всеми необходимыми функциями. Вы можете отлаживать всю программу, ее модуль, отдельную функцию и так далее. Читайте документы, смотрите обучающие видео на YouTube или попросите помощи у опытного друга. В любом случае изучите отладчик.

Копирование без проверки

Поиск в Google и копирование чужого кода на самом деле не является преступлением. Как раз наоборот: этот процесс значительно ускоряет работу и помогает разработчику в его постоянном обучении. Однако здесь есть важный момент: копипаста должна быть продуманной. Учитесь у него, пытайтесь понять, как работает этот код, модифицируйте его под свою задачу.

«Как только новички преодолевают трудности со всеми инструментами, проблема заключается в том, что они не знают, как найти информацию. Копирование кода из первого найденного ответа StackOverflow или использование устаревших библиотек очень распространено среди новых разработчиков», — сказал разработчик программного обеспечения Эрик Хелман.

Игнорирование модульного тестирования

Очень часто новички на самом деле не пишут тесты для своего кода и не тестируют свой код. Некоторые начинающие разработчики проверяют свой код, но делают это очень специфическим образом. Например, вручную меняют данные в программе и выводят результат в консоль. На самом деле вам нужно начать разучивать этот метод сразу после того, как вы освоите базовый синтаксис.

Очень часто люди проводят ручные тесты, но не кейсов. Освоение модульного тестирования, понимание всех пограничных случаев вашего кода и работа с ними. Это одна из наиболее вероятных ловушек, из-за которых люди могут запутаться, и тогда, если вы действительно последовательно начинаете свою карьеру, — прокомментировал Дилан Исраэль, разработчик программного обеспечения и создатель контента YouTube.

Попадание в адскую ловушку учебников

Новички часто теряются и не знают, где именно узнать новую информацию и как ее усвоить. Вместо этого они смотрят видео за видео, выискивая все новые и новые истории. Вот что говорит Вадим Савин, инженер-программист и создатель контента для Youtube.

«Самая распространенная ошибка, которую совершают начинающие программисты, — попадание в адскую ловушку руководств. Сколько курсов udemy вы купили и сколько из них прошли? Проблема не в туториалах, потому что из них можно многому научиться, проблема в отсутствии практического опыта. Если вы хотите стать лучшим в баскетболе, вы не будете целый год смотреть уроки и читать книги, вы выйдете на корт и начнете тренироваться. То же самое и с обучением программированию. Начните строить проекты. Следуя учебнику, не просто смотрите, а делайте то же самое, что и наставник. Затем попробуйте еще раз, но на этот раз по памяти. После того, как вы освоите основы, приступайте к внедрению новых знаний в реальные проекты. Начните создавать веб-сайт/приложение/игру, которые вы всегда хотели создать. Таким образом, у вас будет мотивация практиковаться, потому что вы будете работать над тем, что вам нравится, и вы хотите почувствовать бремя обучения».

Страх и чрезмерная реакция на код-ревью

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

Слишком много или недостаточно усилий

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

Каролина Совинска, специалист по работе с данными и создатель контента для YouTube:

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

Маша Зверева, основатель YouTube-канала Coding Blonde:

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

Инженер-программист Салдина Нурак и автор канала на YouTube:

«Главная ошибка, которую совершают новые программисты, — это либо неуверенность в себе и мысль о том, что они недостаточно умны, либо полная противоположность этому, думая, что они все знают, хотя на самом деле это не так.

Оглядываясь на студенческие годы, могу сказать, что я был в первой категории. Я мог понимать код во время лекций, когда его объясняли профессора, но у меня были проблемы с решением тех же задач в одиночку, поэтому мне было интересно, не достаточно ли я умен.

Теперь я знаю, что это из-за того, что я мало тренировался. То же самое, когда вы изучаете новый язык, большинство людей могут понять его, прежде чем они смогут говорить на нем.

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

Сверхинжиниринг

Спросите у начинающего программиста, каким, по его мнению, должен быть идеальный код. Распространенным ответом будет «оптимально, конечно!» Обычно это означает «оптимальный» с точки зрения производительности и потребления ресурсов. Логичный ответ, не так ли? Да, это так в идеальном мире, но, увы, мы не в таком живем.

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

Кстати, такой код, скорее всего, будет содержать комментарии. И они будут именно там, где они нужны. Переходим к следующей ошибке.

Где твои комментарии, чувак?

Комментарии… Новички и комментарии — это просто древняя трагедия. Комментарии могут быть буквально везде и объяснять очевидные вещи, или наоборот код вообще без комментариев. Не будь таким, пожалуйста. Объясните, что не читается простым способом или ссылается на другие модули.

Одна из распространенных ошибок – фраза «Нам не нужны вонючие комментарии с извинениями перед The ​​Treasure of the Sierra Madre, откуда была взята оригинальная версия этой строки. Буквально на прошлой неделе при обсуждении этой проблемы было высказано предположение, что комментарии бесполезны, потому что при обновлении или рефакторинге кода комментарии обновляются редко, поэтому мы могли бы с ними покончить».Кен Фогель, Java Champion, Преподаватель информатики в колледже Доусон рассказывает: Однажды мне пришлось удалить комментарии из отправки в проект с открытым исходным кодом. Комментарии представляют собой техническое руководство по сложным системам. Представьте, что вам нужно отремонтировать современный автомобиль без руководства по ремонту.

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

Беспорядочное форматирование кода и разочаровывающие имена

Иногда начинающие разработчики не понимают важности стандартизации своего кода. Они еще не осознали, насколько сложно ориентироваться в чужом коде, и не понимают, что пишут код не только и не столько для себя.

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

Еще более драматично именование переменных и функций. Если в учебной задаче int p; выглядело вполне адекватно, в модуле большого проекта - нет! persentOfYearIncome выглядит ужасно, но гораздо яснее, о чем мы говорим. Кстати, не пытайтесь использовать короткие имена и писать расшифровки в комментариях. Лучше не поленитесь и подберите свои переменные. функции, классы имеют понятные имена. Пусть даже они не самые элегантные.

Выводы

На самом деле я считаю ошибки очень полезными. Это то, что учит вас больше всего, когда вы пытаетесь решить проблему, которую вы не планировали. Я думаю, что если бы мне нужно было назвать действие, которое может совершить программист, и назвать его «ошибкой, это было бы тогда, когда мы сталкиваемся с проблемой в коде и просто сдаемся», разработчик программного обеспечения и автор YouTube Филип Гребовски, — сказал он.

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