Совет начинающим программистам

Сейчас я ухожу со второй должности программиста (постдокторантура по биоинформатике в университете). Пора оглянуться назад и спросить себя: что я узнал? Что бы я сделал по-другому, если бы снова приступил к этой работе?

Самый важный совет, который мне бы хотелось, чтобы кто-нибудь сказал мне четыре года назад, был: Централизуйте свой код! - С самого начала узнайте, как писать пакеты на вашем языке программирования!

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

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

Что, если бы вы с самого начала узнали, как создать пакет на своем языке программирования? А если у вас - на всем вашем компьютере - есть только одно место, где вы определяете какую-либо единственную функцию?

  1. Вы бы точно знали, где определена ваша функция. И greping для начала определения функции приведет к ровно одному попаданию в ваш пакет.
  2. Если вы улучшите / реорганизуете какую-либо из ваших функций, вы будете уверены, что улучшения будут действительны для любых вхождений функции в наш код. (Конечно, вы всегда должны улучшать обратную совместимость, чтобы ни один старый код не сломался).
  3. Вы бы никогда не почесали в затылке, где находится эта улучшенная версия вашего кода, потратите кучу времени на ее поиск, а затем откажетесь и вам придется заново изобретать улучшение (к сожалению, это случалось со мной бесчисленное количество раз).
  4. Ваши функции будут развиваться со временем - усилия не будут потрачены зря. Нет ничего лучше, чем знать, что ваш код хорошо организован и никакие усилия, сделанные в прошлом, никогда не пропадают зря.
  5. Вы бы приучили себя писать повторно используемый код.
  6. Вы можете использовать сэкономленное время для улучшения документации по вашей функции.
  7. Вы можете внести свой вклад в сообщество, предоставив им в какой-то момент свой хорошо документированный пакет.

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

Это сэкономило бы мне массу времени и сил на поиск. И это заставило бы меня писать и публиковать больше пакетов не только для себя, но и для других.

В Python это означало бы научиться писать пакеты с использованием пакета poetry, о котором я скоро напишу.

Больше контента на plainenglish.io