Джоел Спольски: Что значит быть Разработчиком ПО (предисловие к книге «Coder to Developer»)
Майк Гандерлой, книга “Coder to Developer”
Знаете, что сводит меня с ума?
«Всё?» — спросите вы. Что ж, некоторые из вас знают меня слишком хорошо.
Но если серьезно, меня просто из себя выводит то, что большинство разработчиков даже не осознают, насколько ничтожно мало они на самом деле знают о разработке программного обеспечения.
Взять, к примеру, меня.
Будучи подростком, как только я закончил читать знаменитое руководство Питера Нортона по языку ассемблер для IBM-PC, я был уверен, что о разработке программного обеспечения я знаю все, что только можно знать. Да я, черт возьми, был готов основать компанию по разработке программного обеспечения и создать текстовый процессор. Я был абсолютно уверен, что меня ждет большой успех. Я даже воображал, как каждый час моя софтверная компания будет устраивать кофе-брейки с бесплатными пончиками. Н-да, в те дни многие мои мечты сводились к пончикам.
После армии я закончил колледж и получил диплом по информатике. Теперь-то я действительно знал всё. Но знал я гораздо больше лишь потому, что изучил кучу компьютерного и научного мусора по линейной алгебре, NP-полной задаче и чертовой лямбде-исчислению. А ведь все это очевидно бесполезно. Я решил, что они, должно быть, исчерпали запас полезных вещей, которым нас надо бы обучить, вот и скребут крошки по сусекам.
Ан нет. На своей первой работе я понял, сколько же вещей кафедра информатики не сочла нужным довести до нашего сведения. Такие вещи как командная работа над программным обеспечением. Практические советы по дизайну пользовательского интерфейса. Профессиональные инструменты вроде управления версиями, баз данных ошибок кода, дебаггеров и профайлеров. Дельные вещи. Кафедры информатики даже самых престижных вузов не будут вас учить тому, что не носит сугубо академический характер; и уж тем более преподавать то, что изучают старшеклассники в местном ПТУ, чтобы потом стать автомехаником, мастером по ремонту кондиционеров или «вонючим разработчиком софта».
Отчасти, я понимаю такое отношение. В конце концов, цель многих престижных вузов — подготовить студента к жизни, а не привить ему профессиональные навыки, которые устареют через 10 лет.
В течение следующего десятилетия я получил невероятные знания о разработке софта и о сопутствующих этому процессу нюансах. Я работал в Microsoft в команде разработки Excel, в Viacom — в веб-команде, в Juno — над их почтовом клиентом. И знаете что? На каждом этапе обучения я был абсолютно уверен, что о разработке программного обеспечения я знаю все.
«Так может, ты просто самонадеянный придурок?» — спросите вы, и даже возможно, используете слово покруче «придурка». Прошу прощения, но это мое предисловие; хотите нахамить — напишите свое чертово предисловие, мое вырвите, а свое тогда вставьте.
Есть в разработке программного обеспечения нечто странное, некая мистическая сила, которая заставляет людей думать, что они знают все, что и как делать. Я работал в доткомах, полных специалистов по гуманитарным наукам. Они не имели опыта работы с программным обеспечением и никогда этому не обучались, но тем не менее были убеждены, что знают, как управлять командами разработчиков и разрабатывать пользовательские интерфейсы. Это странно, потому что никто ведь не думает, что знает, как удалить воспаленный аппендицит или восстановить двигатель автомобиля, если на самом деле не владеет соответствующими навыками. Но по какой-то неведомой причине эти же люди уверены, что вполне осведомлены, как разрабатывать программное обеспечение.
Так или иначе, вся ответственность ложится на ваши плечи. Вполне возможно, вам придется самостоятельно научиться разрабатывать программное обеспечение. Если повезет, вы, конечно, поработаете с первоклассными разработчиками ПО и они вас научат, но большинству такой возможности не представится. Поэтому я рад, что Майк Гандерлой взял на себя ответственность написать книгу, которую вы сейчас держите в руках. Здесь вы найдете приятное, хорошо написанное введение во многие наиважнейшие вещи, которые вам нужно будет знать, когда из человека набирающего код вы превратитесь в человека разрабатывающего программное обеспечение. Улавливаете разницу? Это примерно как из шестилетнего ребенка, который умеет рисовать карандашом несколько простых слов, вырасти в успешного романиста, который пишет книги, получает восторженные отзывы и продает миллионы экземпляров. Быть разработчиком программного обеспечения — значит взять концепцию, создать команду, настроить все процессы, разработать программный продукт (нужный программный продукт) и произвести его. Это должен быть не просто программный продукт, а высококачественный программный продукт, который решает проблемы и радует пользователей. С документацией. Web-страницей. Программой установки. Сценарием тестирования. Версией на норвежском. Разговорном и литературном. Закуски, десерт, двадцать семь цветных глянцевых фотографий размером восемь на десять дюймов со стрелочками, кружочками и объяснениями на оборотной стороне. (Приношу свои извинения Арло Гатри.)
А потом, однажды, в один прекрасный день, вы наконец проснетесь и скажете (хотя может быть уже поздно): «Хмм. А вдруг я и правда не знаю, что на самом деле нужно для разработки софта». И только в этот день, и ни минутой ранее, а именно в этот день, и с этого дня начиная, вы получите право называть себя разработчиком программного обеспечения. А сейчас, пока еще все не потеряно, вот вам мое благословение, если захотите есть пончики каждый час.
Узнайте подробности, как получить востребованную профессию с нуля или Level Up по навыкам и зарплате, пройдя онлайн-курсы SkillFactory:
- Курс «Профессия Data Scientist» (24 месяца)
- Курс «Профессия Data Analyst» (18 месяцев)
- Курс «Python для веб-разработки» (9 месяцев)