Игорь Савчук - Отъявленный программист: лайфхакинг из первых рук
- Название:Отъявленный программист: лайфхакинг из первых рук
- Автор:
- Жанр:
- Издательство:ООО Издательство «Питер»
- Год:2015
- Город:Санкт-Петербург
- ISBN:ISBN 978-5-496-01806-7
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Игорь Савчук - Отъявленный программист: лайфхакинг из первых рук краткое содержание
Введите сюда краткую аннотацию
Отъявленный программист: лайфхакинг из первых рук - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
После чего постепенно следует переход в более узкоспецифичную плоскость, и я бы даже сказал, что порой вопросы носят провокационный или откровенно шутливый характер, вот примеры:
• Что значит «Variable variables» в мире PHP?
• Знаете ли вы иврит?
• Что значат периодические сообщения PHP об ошибке T_PAAMAYIM_NEKUDOTAYIM?
• Расскажите нам побольше про PHP, например про переменные и функции, которые здесь могут существовать в двух отдельных пространствах имен.
• Если я правильно понимаю, вы можете использовать как функцию fix(), так и переменную $fix. Пожалуйста, поясните, в чем преимущества такого подхода PHP?
• Является ли PHP действительно безопасным в отношении типов? (После утвердительного ответа возникло ощущение попадания в заготовленную ловушку и последовала ритмичная серия добивающих вопросов.) Проверяли ли вы это лично на практике? Расскажите нам про это поподробней, пожалуйста.
Следующие вопросы по PHP задавались в 2013 году, некоторые из них неактуальны по состоянию языка на текущий год.
• Поддерживает ли PHP стандартный тип integers, больший, чем 32 бита?
• Есть ли в PHP тип unsigned integers?
• Как в PHP можно получить «тело» http-запроса, отличного от типа POST? Например, сделайте это нативными для PHP средствами для запросов, выполненных методом PUT.
• Поддерживает ли PHP методику duck typing? (Кстати говоря, наверное, в связи с популярностью Python в Google я заметил повышенное внимание к вопросам, связанным с латентной типизацией, я получил несколько вопросов от разных людей именно на эту тему.)
• Пожалуйста, как специалист по PHP попробуйте переписать следующий типичный фрагмент PHP-кода, взятый нами для примера из популярного блогерского движка WordPress, чтобы PHP, SQL и HTML не были перемешаны все вместе.
Таких вопросов может быть много — от менее болезненных до более провокационных, в зависимости от компетенции и темперамента конкретного ведущего интервью.
В чем главная суть подобных эскалаций в интервью?
Никто на вас не давит и не язвит над вашими персональными вкусами, отношение всегда уважительное и терпеливое (я не заметил, чтобы хоть раз кто-то перебил или остановил мои объяснения, даже когда я явно отклонялся от темы). Здесь важно просто уметь отстаивать свою точку зрения и самому не делать взаимоисключающих утверждений. Иначе говоря, никто не против того, чтобы программировать именно на PHP, важно просто суметь объяснить, что это ваша сознательная позиция, что так делать действительно лучше и эффективнее. Ваш сознательный выбор и аргументированные предпочтения даже в мелочах, таким образом, подчеркивают ваш профессионализм и выдают опыт.
Обратите внимание: ответы на приведенные провокационные вопросы потенциально могут тянуть за собой бороду интересных работодателю следствий насчет вас как специалиста и человека вообще, ваших личных взглядов на жизнь, индивидуальных человеческих особенностей и предпочтений, выходящих далеко за пределы лишь одной профессиональной сферы.
Получается, что, находясь на таком собеседовании, вы словно подопытная мышь, которую буквально под микроскопом внимательно изучают Люди в Белых Халатах. Инициатива не принадлежит вам, вы лишь безвольный игрок в чужой программе?
Я бы не был столь категоричным, отчасти это ваш собственный личностный выбор, который выходит далеко за рамки лишь интервью и трудоустройства в Google. Если вы посмотрите вокруг себя, то в равной степени увидите в жизни как обреченных и покорных людей на коротком поводке контракта, так и успешных и независимых создателей собственного дела и новых рисковых стартапов, и все это в рамках одной и той же среды.
Что касается моих курсов, я часто отрабатываю со своими студентами домашние заготовки в стиле «удиви меня» для органичного переключения контекста разговора и перехвата роли ведущего. Этот прием позволяет проявить вам свои самые сильные стороны, ведь, как хорошо известно, самая лучшая импровизация — заранее заготовленная импровизация. И эта одна из моих любимых игр на площадке собеседований Google. Снова приведу типичный набор ситуаций из личного собеседования, чтобы проиллюстрировать, что я имею в виду.
Двигаясь по темам в резюме, которыми я занимался, мы довольно монотонно и поверхностно прошли по ООП и различным паттернам программирования, пока не дошли до моего любимого аспектноориентированного программирования (АОП). Здесь сразу стало очевидно, что настрой ведущего и его коллег поменялся, он попросил рассказывать все максимально подробно, потому что «это интересная тема». Отвечая на многочисленные встречные вопросы насчет причин моего интереса к функциональному программированию, АОП и событийно-ориентированному программированию (СОП), нас постепенно вынесло на другую логичную тему — недостатки методологии объектно-ориентированного программирования как таковой, которая в наше время стала своего рода безальтернативным мейнстримом в индустрии программной разработки.
Я прошелся по калейдоскопу из мнений ряда крупных фигур в мире программирования, в частности перечислил аргументы хорошо известных ярых противников ООП: Дейкстры, Ричарда Столлмана и Никлауса Вирта, по памяти процитировал причины разочарования в объектах Степанова (создателя STL) и общей проблематике рефакторинга как неизбежного диалектического следствия любой разработки, центрированной на ООП-стиле. Также рассказал про интересную критику ООП от Джоэля Спольского, о его похождениях в Microsoft и тамошних «архитектурных астронавтах», замучивших навязыванием этой методологии другим.
Просто в качестве любопытного наблюдения: тема «порочных практик» Microsoft вызвала дополнительное оживление у гуглеров, и мы остановились на этом отдельно. В ходе обсуждения я поделился мнением своего хорошего знакомого о том, как своеобразно соблюдаются «coding guidelines» в Microsoft, где некоторые методы могут содержать тело из кода в сотню экранов, а сам файл с их исходником — весить больше мегабайта.
Я так подробно остановился на этом моменте лишь для того, чтобы показать простую, но важную стратегию: гораздо выгоднее, когда вы рассказываете что-то интересное сами, и то, что заведомо хорошо знаете, чем, затаившись, ждете очередного вопроса с подковыркой из длинной очереди заданий, которые выдает команда из нескольких интервьюеров по очереди. Суметь удачно переключить контекст собеседования на этот благоприятный для себя проактивный режим — ключевой момент, как мне видится, для наиболее комфортного из всех способов прохождения подобных интервью. Фактически в моем случае это было больше похоже не на стандартное стресс-тестирование собеседника, где я выступал в качестве ведомого и испытуемого, а на приятную дискуссию знакомых, у которых вспыхнула интересная для обоих полемика. Считаю, что из всей серии собеседований это был один из моих самых удачных дней, и чтобы передать общий позитивный фон, на котором мы расстались в тот день, приведу последние слова ведущего:
Читать дальшеИнтервал:
Закладка: