Pull to refresh

Comments 67

Ни одного QA, зато куча DevOps, которые пишут тесты.
Магии нет.

DevOps не пишут тесты. DevOps кодят инфраструктуру.
Для end-to-end тестов инфраструктура чуть ли не важнее самих тестов. Это для Unit-тестов соотношение Code LOC/Test Loc может быть меньше 1, а для end-to-end этот показатель обычно больше 100. Но вот написать его в виде автоматически выполняемого сценария очень сложно, ибо много инфраструктурных вещей надо сделать: базы поднять, настройки развернуть, запросы нужные сделать, данные базы посмотреть. Готового Фреймворка для этого нет.
Как это нет? А Chef, Puppet, Ansible и еще десятки подобных инструментов?
end-to-end действительно писать гораздо сложнее, чем юниты, но все-равно не корректно ставить равно между QA и DevOps. Вторые отвечают только за то, чтобы инфраструктура работала как часы. Если с этой инфраструктурой разработчики выкатят «сломанную» версию DevOps не расстроятся. Когда есть отдел QA разработчики склонны скатываться к отношению «чукча писатель, чкча не читатель». Мне очень понравилась профессиональная этика GitHub'а: пацан написал код, пацан проверил, что код работает.
Может чат-бот умеет и тесты писать :-)
Здорово было бы, но ИИ пока не изобрели,… а если бы изобрели он бы и основной код писать смог )
У яндекса есть роботестер :) Он сам придумывает и проводит тесты
Он не придумывает, там краулер скорее с набором правил. Вообще крутой проект. Кажется 12% или 19% багов находит он. Точную цифру Яндекс называл, но я не помню.
Там интеллектуальный краулер. Который исходя из окружения поля ввода, перебора возможных состояний в графе, выбирает заданную глубину и ищет баги. Интеллектуальность заключается в том, что, например, в поле город, он введет именно город (помимо случайных величин для негативного кейса). Вот статейка про него habrahabr.ru/company/yandex/blog/193918/
DevOps — это не профессия/должность, я методология. Называть админов девопсами — то же самое, что называть разработчиков аджайлами.
«научился открывать двери в офисе», а если обнаруживается проблема, двери запечатываются до исправления… SkyNet прям )
Ага, и закрывать, пока сборка не позеленеет :)
Ага, причем если время близится к обеду/концу рабочего дня, проверяет «зеленые» билды диффами. Если удаленных строк больше, чем добавленных, пишет «Are you kidding me?» и не открывает двери)
ugettext(«Are you kidding me?»)
UFO just landed and posted this here
Почему сроки должны удвоиться?
UFO just landed and posted this here
То есть, если команда «такая», то от красивого кода отказываемся? Пишем говнокод!
mishinoleg правильно пишет. Я уже 8 лет профессионально занимаюсь разработкой и не хочу, чтобы астронавты архитектуры меня пугали. Идея не в том, чтобы писать говнокод, а в том, чтобы «не загоняться»: The Good, the Bad and the Ugly code, книга Роберта Си Мартина Принципы, паттерны и методики гибкой разработки на языке C#, статья Фаулера Is Design Dead и далее весь цикл об эволюционном рефакторинге.
UFO just landed and posted this here
UFO just landed and posted this here
<think>Пошёл переносить свои проекты на github</think>
UFO just landed and posted this here
Судя по частоте полосок — имеется тенденция к уменьшению частоты деплоев.
Чем это объяснить?

Стало меньше багов?
Стало меньше фич?
Деплои стали более объёмными?
Деплоить стало сложнее?
просто кто-то наверное ушел в отпуск
Какое-то время релизу дают «устаканиться», прежде чем накатывать новый. Это время фича-бренч не мерижтся в мастер, чтобы иметь возможность откатиться на последнюю стабильную версию. Возможно в конце месяца выложили что-то пожирнее, а в начале вносили косметические изменения. Количество деплоев же не самоцель. А вот то, что они имеют возможность так быстро обновлять продакшн — это круто.
Интересно сколько у них уже флагов этих накопилось? я так понимаю, знают единицы ( а может уже и никто не знает полностью) за что каждый флаг в точности отвечает и как влияет на другие флаги.
Судя по скриншоту — у них флаги под каждый отдельный feature-brunch. А флаги/branch`и можно и удалять по истечению определенного срока (к примеру когда фича уже стабильна ее просто добавляют в master).
А запись выступления выложили или пока ожидаем? Не смог найти у яндекса.
я не в курсе насчет выступления, но статью прочитал взахлеб :)
Пока еще не вложили, по крайней мере я тоже не нашел. По ссылке в статье есть слайды.
Спасибо за статью!

Но вывод… я бы не стал говорить о том, что в России разработчики не ориентированы на классный продукт. Классные/профессиональные разработчики всегда ориентированы в первую очередь на классный продукт.
Я тоже знаю несколько очень классных разработчиков из России. Они наголову выше зарубежных коллег, с которыми я работал, в плане ориентации на создание продукта в том числе. Но по моему опыту, на западе больше тех, кто нацелен именно на релиз (не в ущерб качеству). У нас я встречаю гораздо больше астронавтов архитектуры. Я не против архитектуры, я против говнокода, но должен быть какой-то баланс. Нельзя рефакторить проект вечно и если вы создаете абстрактную фабрику фабрик и кладете ее в IOC-контейнер, а потом настраиваете для нее XML… ну тут что-то не так)
С тем, что на Западе больше профессиональных разработчиков (т.е. разработчиков ориентированных на продукт) я согласен. Мне кажется, что корни этого растут еще из образовательных проектов. В тех же Штатах, насколько я слышал от знакомых, которые там учились, всё направлено на создание совместных проектов, которые, вроде как, почти всегда должны идти в мир, становиться основами для собственных стартапов и так далее. У нас же почти все студенческие проекты заранее приговорены к смерти в конце семестра. Вот и получается, что акцент на то, чтобы сдать зачет / закрыть таск.

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

Имхо.
Воистину!
Априорный приговор к смерти для студенческих проектов, вернее их изначальное ненацеливание на долгосрочное развитие, жизнь и содержание автора — самая расхолаживающая практика в студенчестве.
Тут дело в приоритетах компании.
Есть, например, такое понятие как principle of good enough, а у других — другие приоритеты.
Ну теперь то понятно, почему я почти каждый месяц оформляю им баг-репорт, когда отваливается та или иная функциональность.
А было такое, чтобы через какое-то время после исправления эта функциональность снова не работала? Едва ли) Потому что регрессионные тесты. Короче, я за. На фиг QA — даешь автоматизацию! =)
Ну это выглядело бы глупо, если бы они не исправляли баги)
Подобный подход может работать только в случаях, когда деплой можно провести за пару минут (т.е. быстренько сварганить хот-фикс и сразу исправится ошибка) И когда пользователи лояльны (а в большинстве случаев программисты именно такие, ведь «у всех бывает» (с) ) в случае десктоп и мобильных приложений, подобный подход — сущее зло и тут не о чем спорить:)
Теперь вы знаете, что писать надо не баг-репорт, а в твиттер! Тогда у них упадут тесты и они откатят версию =)
Ну в поле ввода для текста описания ошибки сказано, что если я уложусь в 140 символов, то они подарят золотую звезду. Так кстати, до сих пор и не подарили ( Я им каждый раз напоминаю «где моя звезда, guys?»
В очередной раз пролили свет на обилие единорогов и пятисотых ошибок. Статья про то, как не надо делать, если хотите получить стабильный и надежный сервис.
Субъективно Bitbucket тоже бывает падает. На сколько я знаю, у них народу меньше. Я не активный пользователь GitHub, и к счастью с 500ыми ошибками не сталкивался. Почему вы пользуетесь сервисом, если не устраивает стабильность?
То, что сервис меня устраивает в целом, не означает, что меня устраивает его стабильность, вроде очевидно. Стабильность гитхаба вообще мало кого устраивает, это его объективный минус, который уже стал притчей во языцех.

Bitbucket работает намного стабильнее и предсказуемее, пользуюсь обоими, поэтому могу сравнивать.
Можно ещё сравнить твиттеры:
twitter.com/bitbucket: последнее сообщение о проблемах 30 сентября;
twitter.com/githubstatus: последнее сообщение 15 часов назад.

Я не к тому, что подход гитхаба неприемлем, совсем нет, и практика это доказывает. Но то, что у них отсутствует QA, и тестируют они на пользователях, активным пользователям очевидно без всяких статей. Просто они осознанно забили на стабильность в обмен на что-то ещё, поэтому если нужен надежный сервис — их подход не вариант.
Я не покупал платный акк никогда на гитхабе. Есть разница интересно? У них же явно больше одной машины. Есть мнение, что «страдают» бесплатные пользователи.
UFO just landed and posted this here
Не понравилось обобщение о западных и восточных разработчиках в конце статьи, правила разработки часто диктуются условиями бизнеса и менеджерами. Подстроиться под них не всегда удается. В моей компании например написание тестов это инициатива прежде всего разработчиков, на это не выделяется время и это никак не поощряется.
А не надо грузить бизнес техническими проблемами. Закладывайте тесты в эстимейт. Это можно написать только за такое время, а если по другому, то все сломается, наш сервис упадет. Мы то на зарплате сидим, нам пофиг, а вот вы деньги потеряете. Бизнес сразу становится лапочкой.
Почему не нужно грузить бизнес техническими проблемами? Вот в западных компаниях часто написание тестов отдают на аутсорс например нам. При этом там бизнес учитывает эти проблемы.
Мы закладываем время написания тестов во время решения задачи, но это позволяет лишь частично покрыть код юнит тестами, а вот модульное и интеграционное тестирование мы пишем нелегально с угрозой получить по шапке.
Ну вот представьте, придет директор и начнет рассказывать про проблемы с налогообложением, про демпинг конкурентов, про то что клиент не платит во время. Что отвечают программисты: ну вы же «начальника», надо было предусмотреть, подстраховаться, а я че, я ниче, я код пишу. Так пишите код хорошо. Услуга, разработчиков — написать софт, удовлетворяющий заказчика. Мы — сфера обслуживания, а ведем себя, как девочка-старшеклассница: «ой, кто-же нам с тестами поможет». Да никто, просто возьмите и напишите.
Флоу работы гитхаба, судя по всему, вполне допускает ночные релизы. И, в общем-то, на графике это заметно.
Про флаги, включающие-выключающие фичи.
А есть процедура «когда фича устоялась, удалить старый код и флаг?»
Еще есть хорошая стать от Scott Chason Github flow. Мне подход Github понравился больше чем Git-flow, но у них своя специфика — много фич в параллельной разработке и частые деплои.
Многие находят Git-flow перегруженным. Я в том числе.
Стало интересно, а как у них реализуется упомянутый в статье режим фичи «staff-only»? Есть вообще какой-нибудь более или менее стандартный подход к организации «частичной» выкатки фич в Rails?
Просто в коде проверяется авторизация, если член группы GitHub — welcome, иначе притвориться, что фичи нет. Я не спрашивал как конкретно это реализовано. В asp.net я бы создал атрибут. В Руби же есть мета-программирование, вполне вероятно используются эти механизмы. Короче в любом случае это просто реализовать самому на любой платформе.
UFO just landed and posted this here
Можно на уровне балансировщиков, отправлять либо на один бэк либо на второй по определенным условиям. Это если раскатка на отдельные сервера.
Огромное спасибо за статью!
Мне так нравится их методология, что я теперь сомневаюсь, хочу я работать в гугле или гитхабе :)
<очкарик_mode_on> Непонятно из сообщения в чем именно сомневаетесь. Вы не можете определится где именно хотите работать (гугл или гитхаб) или же хотите ли работать вообще в подобных организациях, в частности гугл и гитхаб. </очкарик_mode_on>
Восхищение!

Я б не стал с наскоку деплоить исправление, в котором чуть отображение данных в html меняется. Правда-правда: если у тебя тысяча пользователей — страшно. Самый безобидный апдейт ни раз приводил к бессонной ночи.

А тут у вдохновителей явно железная логика, яйца и нервы: мильён мильёнов пользователей и без проблем любой разработчик может что-то там выкатить под присмотром лишь какой-то там автоматики. Суперсистема!
Это как раз и культивирует ответственность, что если ты оплошал, то об этом узнают все и сразу.
Sign up to leave a comment.

Articles