5 навыков, которые нужны хорошему программисту
easy

5 навыков, которые нужны хорошему программисту

Прокачай их все

Чем больше программист знает и умеет, чем лучше у него получается выполнять свои задачи — тем больше он зарабатывает. В прошлый раз мы говорили о том, какие навыки нужны программисту на базовом уровне. Сегодня сделаем следующий шаг — поговорим о том, что отличает хорошего программиста от начинающего.

Привычка экспериментировать

В программировании встречается мало ситуаций, когда что-то нельзя откатить или вернуть к предыдущему состоянию. Поэтому нет ничего страшного в том, чтобы пробовать запускать код и проверять, будет ли он работать. Хороший программист так и делает, вместо того чтобы искать специалиста уровнем постарше и спрашивать его, что будет, если он сделает то или иное. Главное — не рисковать реальным продуктом, а проводить эксперименты на тестовой площадке. И не деплоить в пятницу :-)

Что поможет вам научиться экспериментировать:

  • сторонние проекты;
  • увлечение другими языками программирования, особенно из другого семейства (процедурные, стековые, параллельные и другие);
  • рабочее место с гиковскими игрушками;
  • частое предложение дурацких и нереалистичных решений.

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

Как приобрести эту привычку 

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

Эмоциональная отстранённость от кода

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

Как это выглядит на практике:

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

Как этому научиться

Для этого можно каждый день напоминать себе, что это вы контролируете идею, а не наоборот. Для начала найдите код, которым гордитесь больше всего, и удалите его :-) А затем перепишите этот код с нуля другим способом. Задача со звёздочкой — используйте при этом шаблон проектирования, который вам не нравится. К примеру, вас бесит Singleton, тогда используйте именно его и выясните, как заставить его работать. При необходимости удалите перезаписанный код после того, как он заработает, и напишите его заново с помощью другого шаблона или языка.

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

Стремление исправить то, что не сломано

Очень многим известна распространённая среди айтишников поговорка «Работает — не трогай». Она означает, что лучше не касаться того, что хоть как-то функционирует и выполняет свою задачу. Но хороший программист знает, что программа — это инфраструктура и что она создана для удовлетворения конкретных потребностей. А потребности всегда меняются. Так что всегда есть что доделать даже в работающей программе, чтобы она стала более современной и удобной.

Как это выглядит на практике:

  • поиск людей, которые будут пользоваться программой, и общение с ними;
  • склонность проверять, можно ли перепроектировать существующую функцию для выполнения ещё одной задачи, перед тем как добавлять новую функцию;
  • привычка сокращать количество строк проекта без добавления новой функциональности.

Как этому научиться

Программирование позволяет учиться поэтапно, так что не нужно переписывать всё с нуля. Более того, программы переписывают после того, как понимают, что они должны делать, чтобы в результате код стал проще, короче и красивее.

Начните с того, что оглянитесь вокруг. Пройдитесь по дому и сделайте все дела, которые вы раньше откладывали. Поправьте криво висящую картину на стене. Прочистите раковину, которая медленно сливает воду. Купите источник бесперебойного питания и внешний накопитель и настройте их на автоматическое выключение или резервное копирование. Замените все лампы накаливания энергосберегающими. Замените сетевой кабель, протянутый через половину квартиры, на Wi-Fi или какие-нибудь настенные розетки и кабелепровод. Короче, проветрите голову, перед тем как садиться за код.

Когда сделаете всё это, откройте свой последний проект и прочитайте код. Подумайте, что делает каждая часть программы. Например, здесь цикл, там сортировка, тут немного обработки чисел, где-то обновление экрана, где-то генерация HTML, базы данных NoSQL и так далее.

Теперь замените отлитый в бетоне HTML-код на динамическое создание страницы в скрипте. Замените все writeIn и MessageBox в обработчиках ошибок на структуру ведения журнала. Проведите рефакторинг кода, который пытается заимствовать методы из других классов. Используйте форматирование строк с учётом локали. Перестаньте гадать, насколько большим должен быть массив, и используйте динамическую коллекцию. Удалите бесхозный код.

Лестница роста в порядке возрастания важности:

  1. Код, который делает то же самое, но короче и эффективнее.
  2. Код, который делает то же самое, но использует подходящее колесо в платформе, вместо того чтобы изобретать собственное.
  3. Код, который делает то же самое, но его легче изменить для аналогичных нужд.
  4. Код, который делает то же самое, но его легче читать и понимать.
  5. Код, которого не существует.

Очарованность непостижимым

«Я только начинаю понимать, что делает преобразование Фурье, но изучаю его, потому что у меня есть предчувствие, что я могу его где-то использовать. Я пока не знаю, для чего и где, но однажды точно это сделаю». Это цитата одного хорошего программиста, который понял, что кругозор, любопытство и жажда выяснить разное отлично пригождаются в работе над ИТ-проектами.

Что может помочь развить в себе этот навык:

  • знание того, что такое АТФ-синтаза или опыт выделения ДНК из банана на своей кухне;
  • владение книгой с драконом на обложке;
  • стремление приблизиться на вечеринке к тому, кто произнёс слово «байесовский»;
  • привычка утомлять людей, объясняя что-то косвенно связанное с новостями, например компоновку кабины Airbus 330;
  • добрая зависть людям, у которых есть учёная степень в неизвестной вам области.

С чего начать

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

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

Храбрость учить других

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

Что может помочь:

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

Как развить это у себя

У всех есть друзья, семья, хобби и интересы, которые существуют уже давно. Если вы никогда никого раньше не учили, вы обнаружите, что постоянно запинаетесь или используете слова-паразиты, что вы плохо подготовлены и легко можете забыть, что ученик ещё не знает подробности, которые вы ему ещё не объяснили.

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

А когда освоитесь с простым обучением чему угодно — начните обучать тому, что знаете сами в ИТ-области. Вы удивитесь, насколько сильно это вас самих прокачает как специалистов.

Текст:

Инна Долога

Редактор:

Михаил Полянин

Обложка:

Алексей Сухов

Корректор:

Ирина Михеева

Вёрстка:

Мария Дронова

Соцсети:

Юлия Зубарева

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме
easy