В начале был PHP и PHP был ITSupportMe… Шутки шутками, но именно этот отдел — старейший в компании, а еще один из самых многочисленных, организованных и самобытных. За годы совместной работы эти ребята накопили столько совместных идей, историй и инсайтов, что мы просто не можем скрывать их больше от вас. Итак, встречайте, наши PHP-шники!
А помогут нам разобраться, что к чему, наши крутые собеседники старожилы ITSupportMe, профи своего дела и просто интересные люди — Константин Литвинов, Евгений Шмыговский и Виктор Штанзе. И как это часто бывает с профессионалами, первый вопрос приводит нас к…
Константин Литвинов: Ну, да. Иногда даже на масло с икрой :) А вообще это простой язык. Есть две крылатых фразы (кто знает, поймет): во-первых, что это язык домохозяек, а во-вторых, очень часто говорят «так исторически сложилось», в других языках я не встречал такого выражения. Сам PHP уже не молодой и берет свое начало со времен, когда сайты делались статическими на html. Он и был задуман для того, чтобы простой человек мог себе сделать динамический сайт. То есть когда ты регистрируешься, и после тебе прилетает «Здравствуйте, Константин» — и все твои данные динамически подгружаются. Сейчас это все в порядке вещей, а тогда это был настоящий прорыв. Плюс PHP не компилируемый, а интерпретируемый, что проще. Можно заниматься отладкой во время девелопмента. Вносишь какие-то изменения в коде, выполняется запуск скрипта — и эти нововведения сразу принимаются, не нужно ждать, когда у тебя тесты пройдут, приложение соберется, как с Java языком, например, или Delphi, С и т. д. Он прост в понимании, прост во вхождении, многие студенты осваивают PHP одним из первых.
Виктор Штанзе: Да, я хорошо помню, как примерно в 2005 году началась активная волна с фрилансом. И тогда одна моя одногруппница неплохо зарабатывала для студента: днем универ, а вечерочком у нее под бутылочку пива хорошо заходили эти самые фриланс проекты на PHP. Притом человек проучился всего два курса, получил, считай, азы программирования, а PHP она в тот момент уже освоила и лабала на нем очень так конкретно.
В общем, тут главное, чтобы была какая-то логика, представление желательно об ООП — и в освоении этого языка у тебя никаких проблем не будет.
Константин Литвинов: В простоте этого языка есть свои подводные камни, конечно. Можно накосячить много в чем. Я помню свои этапы эволюции: сначала начинаешь развиваться, используя какие-то CMS-ки, после этого переходишь на фреймворк, и когда ты уже понимаешь первый, второй, третий фреймворк, начинаешь на нем писать, работать и зарабатывать деньги, то уже не хочется возвращаться на CMS, но иногда поностальгировать можно. Тут каждый сам себе выбирает.
А насчет плохого кода... когда ты что-то пишешь, и потом через полгода-год возвращаешься к тому, что сделал, читаешь — и если тебя все устраивает в том, что ты когда-то написал, значит, ты не растешь. А если ты видишь, что это г...окод, значит, ты вырос. То есть плохой код неизбежен. Главное — идти дальше.
Виктор Штанзе: Фишка в том, что если ты знаешь только PHP, то, считай, ты только на хлеб себе и заработаешь. Потому что в данный момент на чистом PHP ничего толкового не сделать. То есть тебе обязательно нужно знать какие-то фреймворки, понимать какие-то свои нюансы, которыми обладает каждый из них, тебе нужно будет учить какие-то дополнительные технологии: twig и т.п. Знание всего этого позволяет тебе котироваться как специалисту и быть востребованным. Ну, а если ты знаешь только PHP — сорян, чувак, этого уже мало, это уровень школьника. Та же банальная работа с базой требует от тебя знаний не только PHP, но и знаний SQL того же самого. Да, ты сможешь сделать простую выборочку, но когда начинаются какие-то большие сложные выборки, огромная база, в которых нужно понимать, как по индексам набирать и все остальное — для этого нужно углубляться в предметную область, поэтому одной только пыхой не отделаешься.
Евгений Шмыговский: PHP — это один из инструментов веб-разработки. А дополнительных технологий, инструментов, фреймворков сотни, плюс постоянно появляются новые, веб динамично изменяется. Одного знания PHP недостаточно. Чем больше ты знаешь о всевозможных технологиях, сопряженных с веб-разработкой, тем более ценный ты специалист.
Виктор Штанзе: Классно переходить на PHP с языков, где присутствует строгая типизация. Тогда ты понимаешь, с чем ты работаешь, ты привыкаешь к тому, что у тебя одна переменная должна быть строкой, вторая — числом и т.п. — и ты работаешь в этом контексте, иначе у тебя компилятор сразу ругнется. PHP этого не делает. В нем есть приведение типов просто так называемое, оно не такое, конечно, дурное как в JavaScript. PHP более мягкий, более лояльный язык, поэтому он закрывает глаза на некоторые ошибки.
Евгений Шмыговский: Хотя сейчас PHP идет в сторону строгой типизации, что есть в других языках. Потому что, когда много людей вовлечено в процесс разработки, читают код, важно, чтобы все они четко понимали друг друга и не оставалось недосказанности.
Виктор Штанзе: Я думаю, что Zend ведут PHP к тому, чтобы превратить его из какого-то серверного языка, который на начальных уровнях был довольно-таки простым, в полноценный язык, который умел бы почти все, как та же самая Сишка. Это было бы очень классно. Если бы PHP мог самостоятельно орудовать памятью и знал бы, как это все дело делать — вообще было бы шикарно, как мне кажется. Ты представляешь, что такое пыха, которая следит за тем, сколько памяти она жрет? Пыха, у которой есть гарбич коллектор и которая после выполнения зачищает после себя все следы и высвобождает память и все такое. Ну, это из серии «если бы…». Админы бы просто пищали от удовольствия, сколько сразу оперативки высвобождается. Короче, будет классно, если PHP станет еще круче, чем Сишка.
Евгений Шмыговский: Ну, опять же, PHP однопоточный, то есть он не может сохранить свое состояние. Запустился — выполнился — очистился — закрылся. Каждый раз заново. В Java, скорее всего, по-другому: там приложение, которое постоянно работает и, соответственно, со временем может забивать память. Но это уже совсем другая история.
Константин Литвинов: Да, с отдела PHP все началось. А вот когда все началось — уже никто, наверное, и не вспомнит. Андрей (обращаясь к Андрею Куликову), ты каким пришел? Третьим, четвертым? Семь лет белорусскому офису, в общем, ну, и нашему отделу, получается, тоже.
Константин Литвинов: Ну, смотри, с год назад мы нанимали специалиста, коуча по скраму. И вообще Леша (предыдущий тимлид) пришел с идеей сделать Nexus Scrum — это такой фреймворк, надстройка над стандартным скрамом. Когда у тебя много команд, то нужно их как-то правильно координировать. Но там идея не задалась по началу. В результате я уже перенял эту мысль, почитал, мне понравилось, в итоге мы уже месяцев восемь как это все построили — связи между командами, специфику взаимодействия внутри и т.д. — все это придумано до нас, мы велосипеда не изобретали. Просто взяли, чуть-чуть подредактировали — и используем. Ведь скрам не диктует какие-то моменты, которым нужно следовать от и до, а предоставляет, скажем так, скелет, на основании которого ты работаешь. Из таких вещей, которые мы с Женей Шмыговским адаптировали и что-то свое привнесли: мы немного изменили ITSM по работе, перепилили scrum dashboard, buildlog, и вот уже закончили prioritization — теперь тоже можно команды объединять на какие-то определенные проекты, и соответственно, на основании капасити этих команд и проектов можно уже приоритезировать задачи внутри.
Виктор Штанзе: Например, основные средства координации в нашей команде Charlie — стендапы, синки. Стендап — это процедура, пришедшая к нам из скрама, когда человек в течение пары минут отвечает на три вопроса: что я делал вчера, что я буду делать сегодня и есть ли у меня проблемы. Да, мы, как сектанты, становимся в кружок и каждый день в одно и то же время выполняем этот ритуал. В 10.45. Этот стендап хорош тем, что проговаривая всю схему действий, ты настраиваешься на работу. Ну, и это небольшое средство контроля, конечно.
Синк (sync — от англ. synchronize) — продукт собственного производства, такой сидячий стендапчик. Ты говоришь, чем ты занимаешься и какие у тебя планы до конца дня. Мы проводим его в середине рабочего процесса. Например, в начале дня у тебя были планы, а в середине ты рапортуешь: все ли у тебя хорошо идет, может, тебе надо обсудить что-то, попросить совета или помощи. Если ты завис на каком-то таске, бился над ним полдня и мозг был слишком загружен, чтобы оторваться и сказать: «Ребята, есть трабла», то синк — это лишний повод, чтобы это сделать. Он уже никак не относится к аджайл или скраму, это уже чисто наша хотелка, которая вышла из наших ретроспектив. Так мы работаем эффективнее. Синк идет в более произвольной форме, зачастую содержит какие-то технические детали.
Когда ты засинкиваешь все в конце спринта, существует большой риск не успеть справиться с глобальной задачей. Поэтому есть смысл синхронизироваться каждый день, чтобы держать руку на пульсе — и не придется мчаться потом навстречу локомотиву, поджав ягодицы, с криком: «Я успею закрыть этот спринт!»
Зачем тянуть до последнего, если мы можем синхронизироваться в том, что мы сделали для спринта, например, сегодня, каждый день — и таким образом процесс разработки становится еще более прозрачным, все проблемы поднимаются раньше и решаются быстрее. И, конечно, это помогает немного отвлечься на пару минут, если ты, например, был загружен.
Константин Литвинов: Распорядок как у всех в компании. Есть, конечно, такое понятие, как свободный график, но у меня немножко другой подход к нему. Да, я знаю, что некоторые выбирают себе определенные часы пересечения, допустим, все в команде присутствуют с 12 до там 3, а в остальное время как хочу так и хожу, главное — отработать 8 часов. Но я к этому не очень положительно отношусь, хотя да, свободный график есть, но у нас он не совсем свободный, а просто смещен. Народ оформляет дополнительное соглашение, и допустим, если я хочу приходить в 8 часов и работать до 5–6 вечера — ок, но только ты постоянно ходишь по этому графику. Ты можешь даже для каждого дня недели прописать определенный график, допустим, в понедельник с 10, во вторник с 11, в среду там с 9 и так далее. Это тоже нормально, просто, ориентируясь на этот график, я всегда знаю, когда человек на работе. Ну а в остальном все ходят с 10.30. Я лично никогда себе не беру отдельный график, хотя у меня двое детей, прихожу как все и ухожу как все. Иногда ребята задерживаются на работе, но я этого не приветствую. Как говорила одна из моих руководительниц на одной из моих прошлых работ, если ты не справился с поставленной задачей за рабочий день, то ты плохой работник. Надо все успевать.
Евгений Шмыговский: У нас аналогичная ситуация. Все, в принципе, приходят и уходят в одно время. Есть один человек, у которого тренировки, и он в какие-то дни приходит и уходит немного пораньше, но это частный, не особо выделяющийся случай.
Константин Литвинов: Работаем. Над собой. Программисты не отдыхают. Ну, как, отдыхают и не отдыхают одновременно. Есть и тимбилдинги, есть и просто отдых с семьей, есть и посидеть чуток покодить для себя.
Евгений Шмыговский: Раньше была хорошая традиция — гусей писать (наказывать сотрудника, забывшего залочить компьютер, смешной записью в общем чате от его имени, например, «Я люблю гусей»).
Константин Литвинов: Да тут от команды зависит. У нас, по сути, один отдел Bravo, состоящий из 4 команд, плюс Charlie Жени — и в каждой команде свои разработчики, тестировщики и бизнес аналитики со своими тимбилдингами и другими интересными событиями.
Виктор Штанзе: Charlie, например, не матерится. А все почему? Потому что не так давно решили вместе, что будем за каждый мат штрафовать сами себя на 50 копеек. Деньги шли в наш общий фонд. Мы себе тогда такой пуфик купили... Женя очень долго противился и доказывал, что есть еще и литературные слова: «Семерых ощенила сука…» — все цитировал он. В общем, это было тяжело примерно неделю. У всех счетчик долгов в копилочку все тикал и тикал, а потом как-то полегче стало внезапно, а затем и надобность в штрафах пропала за неимением преступных намерений — и мы недавно прекратили этот эксперимент.
Евгений Шмыговский: Мы еще штраф за опоздание вводили, опять же не с целью наказать, а с целью дисциплину что ли ввести, точнее самодисциплинироваться. Это не был запрет, все единогласно решили и подписались под этим, несмотря на то, что люди знали, что у них есть проблемы с приходом на работу точно в срок. И вот там мы уже знатно копилку команды пополнили, ведь за каждую минуту опоздания — рубль.
(Кстати, именно эта самая копилка во многом и помогла воспитанникам Гомельского приюта получить в подарок от ITSupportMe новенький телевизор https://www.itsupportme.by/news/18)
Виктор Штанзе: Все это почерпнуто у американцев. Я как-то прочитал историю мэра Джулиани, узнал о его теории разбитых окон — и вдохновился.