Собрали целую кучу признаков идеального мета-сеньора в разработке. Конечно, вряд ли существуют программисты, которые могут сочетать все эти качества, но если у вас есть хотя бы часть из них — то это уже хорошо.
Это адаптированный перевод статьи 26 Things I Noticed from a Very Experienced Programmer, повествование ведется от имени опытного разработчика и блогера Джозефа Круза.
Я встречал очень много людей, которые любят программирование, просто очень и очень много таких людей. Я всегда стараюсь узнать от них какой-нибудь секрет о программировании, хотя, конечно, не у всех есть такие секреты. Мы все разные. Я тоже отличаюсь от других — хожу вот и делаю записи о полезных секретах программистов, которыми мог бы поделиться в блоге.
В ходе моих импровизированных исследований получился такой вот мета-сеньор.
- Он без восторга встречает новые фреймворки, языки и библиотеки.
- Дает непростые ответы на простые вопросы, чтобы его решения не наносили вреда в долгосрочной перспективе.
- Код, написанный им на JavaScript, мало отличается от его кода на C++ и любом другом языке.
- Он знает, как пользоваться командной строкой, а еще — всегда читает документацию, а не пилит свой велосипед.
- Относится с настороженностью ко всему нагугленному и не спешит добавлять это в кодовую базу, сначала тестирует.
- Избегает спагетти-кода (
switch
,goto
,break
), но все же иногда балуетсяreturn
. И вообще — ничем не брезгует, если конструкция семантически уместна. - Ему плевать на то, что Билл Гейтс богат. Он восхищается им за другое — например, за то, как тот спрятал пасхальные яйца в свой интерпретатор BASIC.
- Он очень добр к людям, но совершенно немилосерден к программному обеспечению.
- Раньше у него была личная библиотека с любимыми функциями, но потом он понял, что это не имеет смысла. В конце концов после лямбда-функций в Algol 68 человечество не придумало ничего нового.
- Он ненавидит Jira, поскольку точно знает, что это бесполезный мусор. В отличие от дилетантов — они тоже ненавидят Jira, но просто не понимают, из-за чего так к ней относятся.
- Ему больше нравится удалять куски кода, чем писать их.
- Ему уже не надо гуглить синтаксис команд, со временем он выучил все наизусть.
- У него случаются логические ошибки в коде, но вот синтаксические — очень редко.
- Он не против оптимизации, но против чрезмерной оптимизации. Все улучшения, которые он вносит, имеют глубокий практический смысл.
- Старается писать читабельный код, который хорошо задокументирован. Все это ради того, чтобы его работа была полезной для коллег.
- В документации описывает теорию, по которой код работает. Вместо того, чтобы просто по этапам расписывать, что именно этот код делает.
- У него очень много баллов репутации на StackOverflow.
- Он постоянно учится новому, потому что понимает, что в программировании без этого никуда.
- Когда он получает реквест, то делает кучу работы еще до того, как сядет писать код: анализирует все сценарии и разрешает возможные сомнения.
- Чтобы не изобретать колесо, использует небольшие методы, которые легко переиспользовать, а еще хорошо знает встроенные функции языка.
- Часто пользуется файлами конфигурации. Так он сможет при необходимости внести изменения в один файл и не запускать повторную компиляцию.
- Он соблюдает стандарты: документирует код, правильно именует переменные, использует методы в необходимом контексте.
- Делает чуть больше, чем от него требуется — это позволяет сэкономить себе время на возможных проблемах в будущем.
- На каждый вопрос у него есть несколько вариантов ответа. А если он не знает ответа, то может предложить альтернативный вариант.
- Он не отказывается от работы просто потому, что задача поставлена плохо. Он всегда объясняет, как можно решить возможные проблемы, и помогает переформулировать задачу — например, предупреждает, что нужны другие инструменты, или надо больше ресурсов.
- С удовольствием делится своими знаниями, потому что не боится конкуренции и уверен, что всегда найдет себе место под солнцем.
Воспринимайте этот список с долей скепсиса, ведь я описал идеального программиста. Я не верю, что один человек может подойти под все эти требования — да и не должен. Но мне нравится вести такие списки, потому что они помогают мне строить планы по развитию.
Читайте также: Как сохранять фокус на протяжении всего обучения: советы от Хекслета