Как новичок, я всегда делал наоборот. Вот почему.

Мир огромен. Сложность везде. Недостаточно верить, что вы знаете ответ. Вам нужно выйти за пределы пузыря и попробовать разные вещи. Результат может быть положительным или отрицательным, но все они одинаково ценны.

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

Но сначала давайте начнем с самого начала ...

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

Я пришел к такому выводу, потому что компания, в которой я работал, тратила больше времени на устранение ошибок в производственной среде, чем на создание новых функций. Я предположил, что у больших компаний таких проблем не было. Я никогда не сталкивался с ошибками в самых популярных на то время сервисах, таких как Orkut, Geocities, Myspace и т. Д. Либо они исправляли ошибки достаточно быстро, либо не допускали их появления.

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

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

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

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

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

Это был мой способ использовать Адвоката дьявола как фундаментальный строительный блок моей жизни.

Адвокат дьявола стал моим образом жизни.

К сожалению, как и все программное обеспечение, все получилось не так, как планировалось.

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

Я также полагал, что если моя теория верна, я не буду всегда учить правильные вещи. Это только уменьшило бы мои шансы пойти в неверном направлении.

Это напоминает мне отрывок из Алисы в стране чудес:

Если вы не знаете, куда идете, любая дорога приведет вас туда

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

// Avoids Null Pointer Exception
Boolean.TRUE.equals(variable);
Boolean.TRUE.equals(null);
// NullPointerException if "variable" is null
variable == true
null == true

Я решил принять то, что мог понять, и игнорировать то, что не мог. Это означало, что я буду упускать некоторые ценные приемы, которые я не мог понять из-за отсутствия опыта.

Отличным примером ценных вещей, которые я не мог понять в то время, была идея сплоченности и сцепления. Чтобы понять их ценность, требуется много опыта и усилий.

Другой пример - получить выгоду от Test-Driven Development.

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

Это был самый важный эксперимент в моей жизни.

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

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

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

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

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

Если бы я мог вернуться в прошлое, я бы все равно провел этот эксперимент. Однако я бы поступил иначе.

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

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

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

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

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

Примите, что процесс обучения требует времени, и есть риск, если вы будете сокращать путь.

Самый смелый эксперимент в моей карьере программиста привел к изменению мышления. Мышление роста.

Никто не рождается с навыками, каждый их приобретает.

Это нужно понимать большему количеству новичков.

Им нужно помочь более опытным программистам.

Спасибо за чтение. Если у вас есть отзывы, напишите мне в Twitter, Facebook или Github.

Спасибо Ромуло Фуртадо и Густаво Хенке за их проницательный вклад в этот пост.