(первоначально опубликовано 5 октября 2015 г.)

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

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

Песок

Настойчивость и страсть к достижению долгосрочной цели

12 лет программирования научили меня тому, что настойчивость — это единственное, что «делает работу». Решительность всегда побеждает талант и интеллект. Упорный труд побеждает талант, когда талант недостаточно усердно работает. Ваши собственные природные навыки и интеллект никогда не помогут вам достичь цели. На самом деле, я считаю, что это приведет вас только к стартовой линии. Настойчивость и решимость позволяют вам завершить задачу, с которой вы начали.

Мой личный опыт

6 лет назад я закончил ECU по специальности «Информатика». Я знал, как писать код на Java (и под словом писать я имею в виду буквально писать, а не понимать). Я заключил контракт с компанией MIMOSA, занимающейся стандартами техобслуживания на основе условий, и мне было поручено написать программу, которая будет преобразовывать этот XML:

в это

Я был выше головы. Были бизнес-концепции, с которыми я был почти незнаком. Мне пришлось написать графический интерфейс (чего я никогда раньше не делал). Черт, я даже не знал, что такое XML. Самым сложным, что я когда-либо делал до этого момента, было написание Java-приложения, которое решало логическую головоломку Рикети-мост. О, и я был единственным программистом в компании.

И я работал удаленно.

Я был на острове, один, и заплатил за выполнение задачи, которую, как я убедил себя, невозможно выполнить. Итак, я начал делать то, что делают все, когда сталкиваются с непреодолимой проблемой. Я начал думать о том, как я мог бы бросить курить, никого не разочаровывая и не зля. Я больше всего хотел, чтобы мой босс позвонил мне и сказал: «На самом деле нам больше не нужен этот XML». В конце концов, он позвонил мне, но попросил доставить товар через 2 месяца. Итак, мне было 23 года с 25 000 строк XML, которые мне пришлось перелопатить за 2 месяца. Самый длинный файл кода, который я когда-либо видел, исчислялся сотнями.

Глубоко внутри я знал, что не хочу сдаваться. Я знал, что навсегда разочаруюсь в себе, если уволюсь со своей первой работы из-за первого задания по программированию, которое мне когда-либо дали, поэтому я сделал единственное, что мог. Я засучил рукава, работал с раннего утра до поздней ночи и придумал это (которое я сдуру опубликовал на Github 4 года назад).

Оглядываясь назад на этот код, я понимаю, что сделал все, что мог, неправильно, неправильно. Условное ветвление вышло из-под контроля. Я использовал весь файл XML в один массивный DOM и напрямую манипулировал/реструктурировал его с помощью запросов xpath. Я даже написал «Драйвер» в XML, чтобы подробно описать структуру нового XML-документа, который скоро будет создан. Тем не менее, я все еще горжусь этим кодом больше, чем любым другим кодом, который я когда-либо писал, потому что я закончил его. Эта задача преподала мне ценный урок, который определил мою карьеру на долгие годы.

"Работа происходит в тишине и одиночестве, и никто не подбадривает вас, пока вы это делаете". - Санди Мец

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