Инжинириум Химки

5 НАВЫКОВ, КОТОРЫЕ НЕОБХОДИМЫ ПРОГРАММИСТУ НА БАЗОВОМ УРОВНЕ

5 НАВЫКОВ, КОТОРЫЕ НЕОБХОДИМЫ ПРОГРАММИСТУ НА БАЗОВОМ УРОВНЕ
На вопрос «что значит быть хорошим программистом» можно ответить по-разному. Вот одно из рассуждений о том, каковы базовые навыки хорошего программиста и по каким признакам можно понять, что есть над чем поработать.
Понимание логики кода и его работы.
Этот навык значит, что вам было бы хорошо научиться выполнять фрагменты кода в голове, понимая при этом, какова цель программы.
Как научиться выполнять код в голове?
Попробуйте попрактиковаться, используя в качестве помощника отладчик, который может выполнять код по одной строке за раз. Например, в VSCode это означает установку точки останова в начале проблемной области и пошаговое выполнение. Постарайтесь проверять значения переменных до и после их изменения, пока не поймёте, что именно делает код.
Цель такой практики — достичь уровня, при котором не понадобится отладчик, чтобы следить за потоком кода в голове. В результате вы откроете дополнительный навык — выявлять избыточный и ненужный код, а также находить ошибки в существующем коде без необходимости заново реализовывать всю процедуру с нуля.
Понимание модели программирования языка.
Программирование бывает разным: объектно-ориентированным, функциональным, декларативным и так далее. Каждая из этих моделей отличается от процедурного, или императивного программирования, так же, как процедурное программирование отличается от ассемблера или программирования на основе GOTO. Многие языки следуют основной модели программирования, например, объектно-ориентированному, но с улучшениями, такими как понимание списков, обобщения, утиная типизация и так далее.
Изучать модель программирования лучше всего на новом проекте, используя в нём новые конструкции. Также будет полезно практиковаться в объяснении особенностей модели в общих чертах, постепенно наращивая знания, пока не получится понять все тонкости.
Постоянное изучение особенностей языка или платформы.
В современных языках много встроенных команд и функций. Некоторые языки настолько обширны, что их изучение может занять несколько лет. Но хороший программист сначала станет искать встроенную функцию, которая делает нужное ему. А создавать свою собственную он начнёт, только если подходящей встроенной нет. Блестящие программисты и вовсе ещё до начала разработки разбивают задачу на абстрактные проблемы и ищут существующие структуры, шаблоны, модели и языки, которые можно адаптировать к этой задаче.
Чтобы не переставать учиться, придётся отвлекаться от написания кода. Поможет второй монитор: на нём можно искать ответы на возникшие вопросы, сверяться с документацией по языку или платформе. Хорошим упражнением может быть рефакторинг своего старого кода: чем сильнее получится его уменьшить, тем лучше.
Понимание указателей и ссылок.
Концепция указателей позволяет создавать сложные структуры данных и эффективные API. Управляемые языки используют вместо указателей ссылки с аналогичным функционалом. Неспособность понять эту концепцию будет выливаться в плохое проектирование структуры данных и ошибки. Без понимания указателей и ссылок у программиста будет ограниченный ряд программ, которые он может написать.
Умение видеть рекурсию.
Понять идею рекурсии достаточно легко, но у программистов часто возникают проблемы с тем, чтобы представить в уме результат рекурсивной операции или того, как сложный результат можно вычислить с помощью простой функции.
Развитие перечисленных навыков поможет программисту не только справляться с текущими задачами, но и создавать более эффективный и оптимальный код в будущем.
2024