• Они не зацикливаются на одном языке (или двух)
  • Комментирующий код — их вторая натура.
  • Они знают, КАК комментировать код и КОГДА комментировать код. Комментарии должны объяснять что и почему в комментируемой строке кода. Почему он так закодирован? Что делаешь?
  • Они знают, какой инструмент использовать для работы. Если кто-то создает операционную систему, он, скорее всего, будет использовать C. Если кто-то создает приложение, он может использовать что-то вроде Python, обернутого фреймворком с графическим интерфейсом, или C#, который разработан специально для разработки настольных приложений. Хороший программист никогда не будет использовать C++ для веб-разработки, но он будет использовать для этого Python, PHP и JS, поскольку они имеют хорошую поддержку для использования в Интернете.
  • Опытные программисты не задают вопросы о Stack Overflow, они отвечают на них.
  • Опытные программисты вбили себе в голову ООП.
  • Опытные программисты избегают gotos и процедурных меток.
  • Часто люди не учатся программировать, чтобы получить работу. Люди учатся программировать, чтобы они могли программировать вещи.

Редактировать: Хорошо, несколько вещей.

  • Плохой код — это плохой код, добавление комментариев не делает его хорошим, он просто делает его разборчивым.
  • Я понимаю, что ООП не для всего (Java не получил эту памятку), но хорошие программисты знают, когда использовать ООП, а когда нет.
  • Программисты понимают, как применять шаблоны проектирования самостоятельно, учитывая стоящую за ними абстракцию. Скажем, например, шаблон состояния. Есть несколько способов добиться этого, и вы всегда должны попытаться сделать несколько реализаций шаблона проектирования, прежде чем выбрать тот, который лучше всего соответствует вашим потребностям.
  • Программисты понимают, что код нужно будет рефакторить. Разделение кода на функции и их группировка в пространстве имен (C/C++), классе (Java, Python и др.) и файлах значительно упростит работу с рефакторингом.
  • Программисты часто используют константы вместо фиксированных литералов. Это связано с тем, что константу можно изменить позже, не вызывая сильной боли.
  • У программистов часто есть ниши. Разработчик игр может не разбираться в веб-разработке или машинном обучении, но, конечно же, программирование есть программирование.
  • У каждого языка есть свои особенности. Например, в Python есть метаклассы, декораторы и итераторы, в Java переключатели поддерживают любой тип данных, в отличие от других языков, в C++ есть пространства имен. Разработчик должен решить, какой из них лучше всего подходит ему.
  • Есть разница между раздуванием и обогащением. Я позволю тебе разобраться.
  • Не планируйте слишком далеко вперед и не делайте преждевременную оптимизацию. Я знаю, что это обычное дело, но тем не менее, это очень важно.
  • Они используют IDE. Серьезно, IDE спасают жизнь. Они делают компиляцию приятной прогулкой, есть много хороших бесплатных IDE, таких как Code::Blocks (C/C++), IntelliJ IDEA (Java), Visual Studio и VSCode (Python, C, C++, C#, JSON, XML, JavaScript…) или просто Notepad++ (Python, JavaScript, в основном сценарии, но также и для языков разметки, таких как Markdown, и таких вещей, как JSON, XML, YAML)