То же самое касается разработки ПО. Религиозные убеждения о разработке ПО и технологиях могут разжигать конфликты и споры не хуже споров о зарождении жизни или существовании верховного божества. Конечно, мы не убиваем людей за то, что iOS им нравится больше, чем Android, но мы недолюбливаем таких людей и сильно ругаем их, когда нам кажется, что это никто не видит.
И я верю, что ты сможешь добиться невообразимых высот в том случае, если не будешь превозносить технологии и относиться к ним как к чему-то божественному. Я предлагаю рассмотреть этот вопрос подробнее.
Да, это правда. Ты можешь предпочитать определенные технологии или язык программирования, который кажется тебе лучше остальных. Кстати говоря, так считает бо́льшая часть программистов. И это совершенно нормально. Мы всегда с энтузиазмом и увлеченностью относимся к тому, чем занимаемся, и везде, где присутствуют эти два чувства, могут возникнуть жаркие споры. Яркий пример – профессиональный спорт.
Проблема заключается в том, что бо́льшая часть нас, разработчиков, религиозна по отношению к определенным технологиям. Почему?
Потому что это то, что нам знакомо, с чем мы постоянно имеем дело. Совершенно нормально считать, что наш выбор – лучший, так что мы очень часто негативно реагируем на противоположные мнения и высказывания. Мы не можем достаточно хорошо знать обо всех технологиях, так что мы не можем решить, какая из них лучшая; мы просто выбираем то, что нам знакомо, и считаем свой выбор единственно правильным, иначе наша жизнь была бы очень сложной.
Такой порядок вещей очень разрушителен и ограничен. Когда мы придерживаемся убеждения, основанного лишь на собственном опыте, мы стараемся общаться только с разделяющими наши взгляды людьми. При этом мы избегаем людей с другими мнениями. В итоге образуются разнообразные отдельные сообщества, в которых приветствуются одни и те же идеи. В какой-то момент мы достигаем точки и перестаем расти, так как мы уже нашли ответы на все вопросы.
Бо́льшую часть своей карьеры я был очень религиозен по отношению к операционным системам, языкам программирования и даже текстовым редакторам. И только спустя время я понял, что не нужно выбирать что-то одно и считать свой выбор лучшим, не давая шанс другим возможностям.
Нет идеальных технологий, но большинство популярных технологий весьма достойны. Дело в том, что плохая технология вряд ли станет распространенной и успешной. Конечно, обстоятельства и условия постоянно меняются, но важно понимать, что в какой-то определенный момент каждая технология была или просто хорошей, или даже идеальной.
Разные взгляды на этот вопрос помогут понять, что не существует единственного верного или лучшего решения проблемы. Нет того самого, лучшего языка программирования, фреймворка, операционной системы и… да, даже текстового редактора. Конечно, тебе может нравиться определенная технология больше других, возможно, ты становишься продуктивнее, когда пользуешься определенным языком программирования, но это не означает, что теперь эта технология или язык лучшие.
Довольно долгое время я относился к технологиям с большой религиозностью. Я мог тратить бессчетное количество времени на споры о том, почему Windows лучше MacOS. Я возмущался и пытался всем доказать, что C# и остальные статически типизированные языки намного лучше динамически типизированных языков, например Perl и Ruby. Иногда я – мне стыдно в этом признаваться – проклинал других разработчиков, считавших иначе. Да как они посмели верить во что-то другое и не соглашаться со мной?
Поучительный опыт я получил, когда меня попросили стать тимлидом для проекта, написанного на Java. До этого я был разработчиком. NET и специализировался на работе с C#. Ладно, не совсем так. Я превозносил С++ еще до того, как появился. NET. Честно говоря, мне не нравилось работать с Java. Он мне казался каким-то грязным и несуразным, особенно в сравнении с аккуратным С#. Как мне могло понравиться писать на Java, если я даже не мог использовать лямбда-выражения?
В конце концов я принял предложение о работе. Это было довольно выгодное предложение, и я подумал, что я могу потерпеть год, тем более что это была работа по контракту. И знаешь что? Решение принять эту работу было одним из лучших за всю мою карьеру. Работа с языком, который я ненавидел, помогла мне открыть глаза на остальные технологии. Оказалось, что Java – вполне себе нормальный язык программирования. И я понял, почему некоторые разработчики предпочитают использовать Java вместо C#.
За несколько лет работы над этим проектом я узнал больше, чем за весь отрезок карьеры перед этим. Я открыл для себя множество новых возможностей решать задачи, которые до этого были для меня невыполнимы.