Десять заповедей для тех, кто хочет научиться программировать
Многие хотели бы освоить работу с данными, выучить Python, R или C или то, что сейчас в моде. Но у кого действительно есть время выучить язык программирования с нуля? В своей статье на сайте Nature доцент биоинформатики в лаборатории Университета Колорадо в Боулдере Атма Иванцевич советует – начните с малого, чаще практикуйтесь и не бойтесь ошибок.
К сожалению, ничто из написанного ниже не сделает из вас мастера кодинга в одночасье, но большинство программистов считают, что начать – это самое сложное. Вот несколько советов, которые помогли мне:
1. Ставьте цели, которые помогут быстро достигнуть конкретных результатов
Я всегда интересовалась программированием и знаю, что оно упрощает многие задачи. Но как бы ни были благи намерения, у меня нет воли, чтобы посвящать все свободное время саморазвитию.
Наоборот, все, что я знаю, я знаю потому, что передо мной стояли конкретные задачи, которые нужно было быстро решить. Когда я готовлю иллюстрации, то пользуюсь пакетом для визуализации данных ggplot2. С помощью командной строки (например, утилит awk и sed) я быстро обрабатываю большие таблицы и текстовые файлы. В графической веб-оболочке Jupyter я записываю подробные комментарии и провожу предварительный анализ данных, тестируя куски кода в Python. Вычислительные кластеры позволяют параллельно запускать множество комплексных операций. Когда я писала диссертацию на двести страниц, то узнала, какие чудеса творит система верстки LaTeX. Вместо того, чтобы учиться просто так, стоит ставить цели и задачи, решение которых принесет пользу немедленно.
2. Изучая новый язык, не беритесь освоить все сразу
Не стремитесь изучить все особенности языка R сразу – узнайте достаточно, чтобы выполнить определенную задачу, затем следующую и так далее. Со временем работать с синтаксисом нового языка станет привычнее. Не забывайте, что вы всегда можете обратиться к справочным материалам. Если погрузиться в дело с головой и практиковаться, то научитесь быстро.
3. Делите задачи на части
Подумайте, чего хотите достичь, и запишите шаги, которые приведут вас к цели. Затем проработайте каждый этап и соедините между собой. Ваше первое решение не обязательно будет изящным или окончательным; оно должно работать ровно настолько, чтобы вы могли перейти к следующему шагу.
4. Не бойтесь что-то сломать
Самый быстрый способ узнать, как что-то работает, – это поломать, а затем попробовать починить. Создайте тестовые файлы, загрузите фрагменты кода и меняйте по одной строке. Каждый раз используйте отладочный вывод. Если для вас в этом есть смысл, попробуйте переформулировать или написать на другом языке.
Все мы иногда что-то ломаем. В большинстве операционных систем удалить папку с важными файлами – обычное дело. Все нормально. Ошибайтесь и учитесь. Серьезные ошибки учат лучше прочих, так что вы, вероятно, никогда не повторите их.
5. Управляйте версиями
Важные файлы и сценарии нужно сохранять. Не сохраняйте их под разными названиями и датами на безымянных флешках. Системы управления версиями существуют именно для того, чтобы вам не приходилось запоминать каждое изменение, которое вы вносите в исходный код или документ. Я большой поклонник Git, потому что пяти основных команд мне уже много лет хватает, чтобы им пользоваться.
6. Спрашивайте других разработчиков
До сих пор передо мной не стояло задач, ответы на которые я бы не находила в онлайн-сообществах вроде Stack Overflow или Biostars. Обычно мой вопрос уже задавали.
7. Не повторяйтесь
Хорошие программисты трудолюбивы; великие программисты ленивы. Настолько ленивы, что не будут повторять простые действия. Переставляете столбцы в электронной таблице? Компьютер сделает это. Анализируете и проверяете расчеты? Автоматизация процессов поможет с этим в кратчайшие сроки. Может показаться, вручную сделать быстрее потому, что вам не нужно думать о задаче или изучать что-то новое. Во многих случаях так и есть. Но в следующий раз, когда вы повторите задачу, прервитесь и подумайте: хотите ли вы повторять ее в третий раз?
8. Запланируйте учебное время в течение недели
В лаборатории где я писала диссертацию по вторникам мы соблюдали ритуал. Между 9 и 10 часами утра практиковались на языке Go на образовательном ресурсе Rosalind для тех, кто изучает биоинформатику. После занятий пили кофе. Пропустивший сессию угощал кофе остальных. Мы стали лучше программировать, а также случайно заработали зависимость от кофеина.
С тех пор мы разъехались по разным лабораториям и даже странам. Но и сейчас я всегда выкраиваю учебное время, которое стало неотъемлемой частью моего графика. Каждую неделю я отвожу час, чтобы узнать что-то новое. Как пользоваться новым пакетом R. Или освоить новый инструмент, который я увидела в Твиттере и собиралась попробовать. Иногда я работаю в группе; иногда сама по себе. Освоение нового держит ум в тонусе, и я медленно, но стабильно прогрессирую, независимо от моей занятости.
9. Посещайте семинары, если у вас есть такая возможность
Многие университеты и компании проводят вводные семинары по популярным языкам и технологиям. Даже если вы не новичок, имеет смысл их посещать: вы можете познакомиться и поспрашивать других программистов. Многие исследователи тоже нередко собираются, чтобы вместе программировать, пообедать и пообщаться, так что не забудьте проверить ближайшие встречи, например, в Meetup.
10. Начните сегодня
Если вы дочитали, то, возможно, узнали что-то новое. Если хотите большего, то вот отличные ресурсы для начинающих:
— Codecademy: Основы популярных языков программирования (например, Python).
— R Tutorial: Разбор распространенных задач в R.
— LinuxCommand.org: Базовое использование командной строки.
— Coppola Lab Bioinformatics Training Resources: Потрясающее руководство по биоинформатике.
— Explainshell.com: Полезный веб-сайт по shell-командам.
— xkcd: Здесь можно отвлечься, если работа стопорится.