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

Вместо того, чтобы объяснять, что произошло, я вам покажу. Задача заключалась в рефакторинге кода, который анализирует набор данных о качестве вина из UCI Machine Learning Repository.

Я рекомендую всем читателям попробовать выполнить задачу в Google Colab, которую я создал, прежде чем приступить к остальной части статьи.

Заявление об ограничении ответственности. Это задание взято у инженера по машинному обучению Nanodegree на Udacity.

Прежде чем я расскажу о решении, которое прояснило мое невежество, позвольте мне показать вам решение, которое разработчики курса попросили нас улучшить ...

# Course providers solution
labels = list(df.columns)
labels[0] = labels[0].replace(' ', '_')
labels[1] = labels[1].replace(' ', '_')
labels[2] = labels[2].replace(' ', '_')
labels[3] = labels[3].replace(' ', '_')
labels[5] = labels[5].replace(' ', '_')
labels[6] = labels[6].replace(' ', '_')
df.columns = labels
df.head()

Это казалось довольно простой задачей. Вот мое решение ...

# My improvement of the solution
def remove_spaces(df):
    cols = list(df.columns)
    for i in range(len(cols)):
        cols[i] = cols[i].replace(" ", "_")
    df.columns = cols
    return df
df = remove_spaces(df)
df.head()

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

Вот как поставщики курсов оптимизировали свое решение…

df.columns = [label.replace(' ', '_') for label in df.columns]
df.head()

Просто и элегантно.

Что меня больше всего раздражает в их решении, так это то, что я его понимаю. Я хорошо знаю логику. Я могу составлять списки понимания так же, как они это делали. Но я не мог прийти к такому решению. Мне ни разу не приходило в голову сделать понимание списка, что безумно думать об этом сейчас, потому что я использовал цикл for.

Этот ляп активировал мою последнюю миссию. Не проходит и дня, когда я активно не пытаюсь улучшить свои навыки программирования.

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

# 1 Чтение кода

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

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

Вот некоторые репозитории Github с действительно хорошим кодом:

Это не останавливается на чтении кода.

Существует множество книг, которые помогут вам стать лучше программистом. Популярная книга, которая поможет вам начать, - это Прагматичный программист Дэвида Томаса и Эндрю Ханта, но чтение, в целом, действительно полезно, так как расширяет кругозор.

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

# 2 Выделите время на рефакторинг

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

Конечно, рефакторинг кода служит другой цели. Цель рефакторинга кода - сделать код более эффективным, более удобным в обслуживании или и то, и другое.

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

# 3 Практика через действие

Если вы хотите стать писателем лучше, вам нужно писать больше. Если вы хотите научиться готовить лучше, вам нужно готовить больше. Если вы хотите стать лучшим программистом, вам нужно писать больше программ.

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

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

Последняя мысль

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

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

Спасибо за прочтение!

Если вам понравилась эта статья, свяжитесь со мной, подписавшись на мою БЕСПЛАТНУЮ еженедельную рассылку. Никогда не пропустите мой пост об искусственном интеллекте, науке о данных и фрилансе.

Статьи по Теме