Совет начинающим программистам
Сейчас я ухожу со второй должности программиста (постдокторантура по биоинформатике в университете). Пора оглянуться назад и спросить себя: что я узнал? Что бы я сделал по-другому, если бы снова приступил к этой работе?
Самый важный совет, который мне бы хотелось, чтобы кто-нибудь сказал мне четыре года назад, был: Централизуйте свой код! - С самого начала узнайте, как писать пакеты на вашем языке программирования!
Как часто вы, как новичок в программировании, снова и снова копировали одну и ту же функцию? На n-м экземпляре вы понимаете, что можете улучшить код, его производительность или читаемость, изменив ту или иную часть.
Но поскольку вы копируете бесчисленное количество раз одни и те же функции снова и снова, обновлять все определения функций во всей кодовой базе утомительно.
Что, если бы вы с самого начала узнали, как создать пакет на своем языке программирования? А если у вас - на всем вашем компьютере - есть только одно место, где вы определяете какую-либо единственную функцию?
- Вы бы точно знали, где определена ваша функция. И
grep
ing для начала определения функции приведет к ровно одному попаданию в ваш пакет. - Если вы улучшите / реорганизуете какую-либо из ваших функций, вы будете уверены, что улучшения будут действительны для любых вхождений функции в наш код. (Конечно, вы всегда должны улучшать обратную совместимость, чтобы ни один старый код не сломался).
- Вы бы никогда не почесали в затылке, где находится эта улучшенная версия вашего кода, потратите кучу времени на ее поиск, а затем откажетесь и вам придется заново изобретать улучшение (к сожалению, это случалось со мной бесчисленное количество раз).
- Ваши функции будут развиваться со временем - усилия не будут потрачены зря. Нет ничего лучше, чем знать, что ваш код хорошо организован и никакие усилия, сделанные в прошлом, никогда не пропадают зря.
- Вы бы приучили себя писать повторно используемый код.
- Вы можете использовать сэкономленное время для улучшения документации по вашей функции.
- Вы можете внести свой вклад в сообщество, предоставив им в какой-то момент свой хорошо документированный пакет.
Если бы у меня была машина времени, и я бы вернулся в то время, когда я начал программировать, я бы определил любую из функций только в одном месте в хорошо документированных пакетах на этом языке.
Это сэкономило бы мне массу времени и сил на поиск. И это заставило бы меня писать и публиковать больше пакетов не только для себя, но и для других.
В Python это означало бы научиться писать пакеты с использованием пакета poetry
, о котором я скоро напишу.
Больше контента на plainenglish.io