Pull to refresh
27
0
ApeCoder @ApeCoder

Разработчик

Send message

Лечение «механического» Scrum. Часть 1. Работа PO

Reading time11 min
Views22K

Я больше 10 лет работаю с / в / для agile в сфере web-разработки. Из них больше всего пришлось иметь дело с самым популярным agile фреймворком — scrum (по данным VersionOne). Хочу поделиться с вами накопленными наблюдениями и выводами.


Начну с метафоры, так как иногда приходилось видеть внедрение scrum по такому сценарию:


  • До scrum: «разработка» как младенец — она целеустремленна, но не умеет нормально ходить, а очень хочет научиться, чтобы добираться до цели.
  • Внедрение: приходит учитель (scrum тренинги, курсы, agile coach и т.п.) и показывает, как ходить. Малыш счастлив, он двигается шагами! Топ-топ-топ. У нас спринты — мы ходим!
  • После внедрения: терпеливые стейкхолдеры говорят: «Окей, погнали к цели», на что получают «не давите на команду, мы ходим!». Разработка выписывает интересные траектории и получает удовольствие от процесса, но цель забыта.
  • Scrum-но: дальше пилюля правды от бизнеса, scrum «мутирует» и позволяет бизнесу получать какой-никакой продукт от разработки. И, к сожалению, формально ставится галочка «мы работаем по scrum», а реальный потенциал команды разработки так и не раскрыт, да и кругом говорят «scrum ненастоящий».


Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments35

IDisposable — что ваша мама не говорила об освобождении ресурсов. Часть 1

Reading time8 min
Views9.3K

Это перевод первой части статьи. Статья была написана в 2008 году. Спустя 10 лет почти не потеряла актуальности.


Детерминированное освобождение ресурсов — необходимость


В течение более чем 20-летнего опыта кодирования я иногда разрабатывал собственные языки для решения задач. Они варьировались от простых имеративных языков до специализрованных регулярных выражений для деревьев. При создании языков есть множество рекомендаций и некоторые простые правила не должны нарушаться. Одно из них:


Никогда не создавай язык с исключениями, в котором нет детерминированного освобождения ресурсов.

Угадайте какой рекомендации не следует рантайм .NET, и как следствие все языки на его базе?

Читать дальше →
Total votes 19: ↑14 and ↓5+9
Comments25

Особенности разработки API: какой API является хорошим?

Reading time21 min
Views24K
Наверное, абсолютно все читатели используют API, работая с фрэймворками, библиотеками, виджетами, как некий язык общения между сущностью и основным приложением. И вы наверняка замечали, что некоторыми API удобнее пользоваться, а в некоторых есть явные проблемы. Всеволод Шмыров (@vsesh) в своем докладе на Frontend Conf, расшифровку которого вы найдете под катом, постарался ответить на вопрос, какой API является хорошим.

Рассказ опирается на опыт разработки АPI Яндекс.Карт, и хотя это и JavaScript-библиотека, многие принципы и особенности его разработки применимы и к другим типам АPI, к примеру, к серверным API и Standalone библиотекам. Все то, о чем пойдет речь, относится именно к публичному АPI. Если к API вашей библиотеки обращаются только ваши коллеги, которым вы можете легко рассказать, что где-то что-то надо поменять, то вы, скорее всего, не столкнетесь с теми проблемами, с которыми сталкиваются разработчики публичного АPI.

image

Однако, в докладе не будет ответа на вопрос, нужен ли вам свой API. Надеемся, после прочтения вы взвесите все «за» и «против» и сами поймете, нужен ли он вам. Всеволод просто расскажет, с какими сложностями приходится сталкиваться разработчикам API, какие проблемы решать и что еще делать, а именно про эти четыре важных пункта:


Total votes 30: ↑29 and ↓1+28
Comments17

True XP/TDD в Пивотал изнутри: как это выглядит и возможно ли это?

Reading time5 min
Views3.5K
Ранее на хабре публиковалась статья о том, как в теории выглядит Xp/Tdd в Пивотал Лабс, и были вопросы о том, возможно\нужно ли это в действительности. Я попытаюсь объяснить, как это выглядит на практике и почему это может быть (внезапно) хорошо.

В последние полгода мне пришлось поработать в одном из больших банков на проекте с Pivotal Labs, в их нью-йоркском офисе. Это очень отличается от всей энтерпрайс-разработки, которую мне приходилось видеть до этого.
Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments21

Держим дизайн системы под контролем, используя изолированное юнит-тестирование

Reading time17 min
Views8.2K
Согласитесь, ситуация, когда мы хотим выкинуть кучу готового кода, сильно раздражает. В этой статье вместе с Андреем Коломенским попробуем разобраться, какие для этого могут быть причины, и как узнать, как должна выглядеть наша система в точке максимально высокой продуктивности. Разберем, какой подход затянет нас в замкнутый круг недостаточно тщательного проектирования, а какой позволит получить тестопригодную систему, что в конечном счете приводит к качественному дизайну системы и уменьшает риск возникновения дефектов.



Сегодня мы поговорим о том,

  • Как делать тестирование сложными зависимостями?
  • Как добиться большого тестового покрытия?
  • Как тесты влияют на дизайн?
  • Что делать, когда много логики в базе?
  • Как соблюсти компромисс между дизайном и «не дизайном».


Total votes 41: ↑40 and ↓1+39
Comments114

Удивительный Angular

Reading time31 min
Views212K

Awesome Angular



От переводчиков


Всем привет, с вами Максим Иванов и Дмитрий Сергиенков, и сегодня мы поговорим о новостях в мире Angular. Мы подготовили для вас наиболее интересные материалы и отобрали список вопросов, который вам должен понравиться. Отметим только, что если вы будете ждать от этой статьи ответа на вопрос "Чем Angular лучше других технологий?", то придется вас огорчить, у нас не будет ответа на него. Почему? Как правило, все мнения вида "Технология X лучше технологии Y" почти всегда не более, чем отражение точки зрения высказывающегося. Однако для тех, кто только начинает изучать этот фреймворк, мы постараемся объяснить, что дает вам эта технология и какую пользу она приносит. Также не проходите мимо и ответьте на опрос, самые популярные ответы будут отправлены Игорю Минару (ведущий разработчик команды Angular). Ну что же, приступим.

Читать дальше →
Total votes 47: ↑45 and ↓2+43
Comments59

Рассказ о том, как я ворую номера кредиток и пароли у посетителей ваших сайтов

Reading time11 min
Views167K
Продолжение: Рассказ о том, как не дать мне украсть номера кредиток и пароли у посетителей ваших сайтов
Представляем вам перевод статьи человека, который несколько лет воровал имена пользователей, пароли и номера кредитных карт с различных сайтов.


То, о чём я хочу рассказать, было на самом деле. Или, может быть, моя история лишь основана на реальных событиях. А возможно всё это — выдумка.

Выдалась однажды такая неделя — безумное время, когда всех вокруг тревожила безопасность. Ощущение было такое, что новые уязвимости появляются ежедневно. Мне было не так уж и просто делать вид, будто я понимаю, что происходит, когда меня об этом спрашивали близкие люди. Их беспокоила перспектива того, что их взломают, что их данные утекут неизвестно куда. Всё это заставило меня на многое взглянуть по-новому.

В результате, скрепя сердце, я решил выложить всё начистоту и рассказать всему миру о том, как я в последние несколько лет воровал имена пользователей, пароли и номера кредитных карт с самых разных сайтов. Возможно, вы — администратор или разработчик одного из них.
Читать дальше →
Total votes 319: ↑312 and ↓7+305
Comments325

Объясняем современный JavaScript динозавру

Reading time15 min
Views265K


Если вы не изучали JavaScript с самого начала, то осваивать его современную версию сложно. Экосистема быстро растёт и меняется, так что трудно разобраться с проблемами, для решения которых придуманы разные инструменты. Я начал программировать в 1998-м, но начал понимать JavaScript только в 2014-м. Помню, как просматривал Browserify и смотрел на его слоган:


Browserify позволяет делать require («модули») в браузере, объединяя все ваши зависимости


Я не понял ни слова из предложения и стал разбираться, как это может помочь мне как разработчику.


Цель статьи — рассказать о контексте, в котором инструменты в JavaScript развивались вплоть до 2017-го. Начнём с самого начала и будем делать сайт, как это делали бы динозавры — безо всяких инструментов, на чистом HTML и JavaScript. Постепенно станем вводить разные инструменты, поочерёдно рассматривая решаемые ими проблемы. Благодаря историческому контексту вы сможете адаптироваться к постоянно меняющемуся ландшафту JavaScript и понять его.

Total votes 174: ↑171 and ↓3+168
Comments505

Как мы в Tutu.ru добиваемся эффективности каждого из 9000+ UI-тестов

Reading time8 min
Views7.4K


Любой проект в процессе своего развития и роста наполняется новыми функциональными возможностями. QA-процессы должны на это оперативно и адекватно реагировать, например, увеличением количества тестов всех видов. В этом докладе мы будем говорить про UI-тесты, которые играют важную роль в создании качественного продукта. Система автоматизации UI-тестирования не только в разы сокращает время на регрессионное тестирование, но и обеспечивает эффективную работу таких инструментов и процессов разработки, как Continuous Integration и релиз-инжиниринг.

Количество тестов постепенно растет от 1000 к 3000, от 6000 к 9000+ и т.д., и, чтобы эта «лавина» не накрыла наш QA-процесс, нужно с самого раннего этапа развития проекта автоматизации думать про эффективность всей системы и каждого теста в ней.

В этом докладе я расскажу, как сделать систему гибкой к запросам, поступающим от бизнеса, а также про эффективное использование каждого из тестов. Кроме того, мы поговорим про оценку и метрики не только процессов автоматизации, но и всего QA.
Total votes 22: ↑22 and ↓0+22
Comments12

20 лет Яндексу. Лекция Ильи Сегаловича — человека, который придумал это слово

Reading time48 min
Views26K
Ровно 20 лет назад — 23 сентября 1997 года — в интернете появился Яндекс. Аркадий Волож, Илья Сегалович, Елена Колмановская представили на выставке Softool поисковую систему Yandex.ru. Открывали её, перерезав ленточку перед компьютером — потому что не понимали, как надо открывать сайты в интернете.

Тогда он состоял из 5 тысяч сайтов, на которых было размещено около 4 гигабайт текста. Люди подходили к демонстрационному компьютеру, пробовали задавать запросы и получали ответы. На тот момент Яндекс учитывал морфологию русского языка, расстояние между словами и умел ранжировать документы.


Это одна из последних лекций, которую прочитал iseg, сооснователь и первый технический директор Яндекса Илья Сегалович. Она посвящена истории Яндекса с того момента, как Илья и Аркадий Волож сели в школе за одну парту. Качество записи лекции не настолько хорошее, насколько бы нам хотелось, но содержание — бесценно.

Total votes 91: ↑87 and ↓4+83
Comments15

Терминология OneGet, NuGet, Chocolatey, PowerShellGet — разложим по полочкам

Reading time5 min
Views18K
В этой статье я хочу помочь разобраться в структуре пакетных менеджеров под Windows. Статья нацелена больше на тех, кто, как и я, пришли из мира Linux, где принято заходить в понимание процессов ниже уровня абстракций.

Уверен, что абстракции вы уже прочитали и без меня:
chocolatey для установки приложений, nuget — для установки зависимостей разработчиком.

Но это мало того грубо, так еще и неправда.

Итак, какие типы пакетов мы знаем из мира Linux? Внимание: не пакетные менеджеры, а именно сами пакеты. Самые распространенные условно делятся на две группы: ОС-зависимые (deb, rpm) или языко-зависимые (как правило, tar-болы). В принципе можно сказать, что первая группа — это приложения (утилиты), а вторые — зависимости (библиотеки). Но иногда это не так: среди пакетов ОС есть библиотеки, а среди языковых пакетов есть пакеты, устанавливающие еще и утилиты (например stdeb в pip или elastalert в npm) — если их устанавливать глобально, то получится как пакет ОС.

Возвращаемся к Windows.
Читать дальше →
Total votes 22: ↑19 and ↓3+16
Comments23

Что намазать на зубы, чтобы они не выпали

Reading time8 min
Views193K


Хорошо зафиксированный пациент в анестезии не нуждается

По многочисленным просьбам трудящихся сегодня мы будем заниматься очень важными вопросами:


  • Как правильно мазать зубы пальцем?
  • Хорошо ли растворяются пломбы в кислоте?
  • Почему больно, когда сверлят зубы дрелью без анестезии?
  • Зачем мазать зубы зеленкой?
  • Лечение кариеса на дому
  • Глубокое микрофторирование эмали

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

Читать дальше →
Total votes 209: ↑206 and ↓3+203
Comments693

Что может пойти не так в туре — и какое отношение это имеет к поисковому агрегатору

Reading time9 min
Views12K

Карточка отеля в Турции за 275 рублей на человека в сутки. Цена сгубила минимум троих.

«Тур был хороший, только в бассейне полчаса плавал жмур. Турки говорят, купаться можно, если не боитесь. Меня выбесило, а наши искупались».

Напомню, 5 лет назад нам казалось, что мы айтишники и делаем чисто ИТ-бизнес — агрегатор туров. Поиск, кэш, сравнение, балансировка надёжности поставщиков, хороший дата-майнинг — вот это всё. Но нет. Реальность несколько раз удивила, и в итоге мы всё равно занимаемся туристическим бизнесом, только чуть иначе.

В рамках хаба «Управление проектами» я расскажу про то, что может пойти не так в туре, который обычный человек нашёл через нас как агрегатора (поиск) и купил продукт туроператора.

Поскольку покупка-то шла через нас, при любом косяке отвечаем мы. И уже мы трясём туроператора и остальных причастных. И, надо сказать, это весьма эффективно. У обычного туриста шансов на справедливость меньше: кроме отзыва, ничего он туроператору не сделает, разве что крайне редко дойдёт до суда и обломается через полгода. А у нас рычаг очень простой — мы продаём сотни туров этому оператору и можем настаивать.

Истории ниже немного изменены в целях безопасности, чтобы не было возможности найти конкретных людей.
Читать дальше →
Total votes 30: ↑29 and ↓1+28
Comments20

Создание вашей первой игры на Phaser. Часть 1 — Введение

Reading time3 min
Views19K

Phaser


Оглавление


0. Подготовка к работе
1. Введение [Вы тут]
2. Загрузка ресурсов
3. Создание игрового мира
4. (wip) Группы
5. (wip) Мир физики
6. (wip) Управление
7. (wip) Добавление целей
8. (wip) Последние штрихи


Добро пожаловать в наш первый урок по созданию игр на Phaser. Здесь я расскажу вам, как создать небольшую игру — платформер, которая познакомит вас с основными функциями данного фремворка и работу с ним в нынешних реалиях (ES6 / TypeScript + WebPack).


Что такое Phaser?


Phaser — это HTML5 (JavaScript / TypeScript) игровой фреймворк, который призван помочь разработчикам создавать крутые, кросс-браузерные HTML5 игры в короткие сроки и, в отличии от других фреймворков, phaser изначально затачивался под мобильные устройства. Единственное требование выдвигаемое данным фреймворком — поддержка тега <canvas />. Он также много чего унаследовал от Flixel.

Читать дальше →
Total votes 22: ↑16 and ↓6+10
Comments2

Охота на мифический MVC. Обзор, возвращение к первоисточникам и про то, как анализировать и выводить шаблоны самому

Reading time24 min
Views142K
— Не понимаю, почему люди так восхищаются этим Карузо? Косноязычен, гугнив, поёт — ничего не разберешь!
— А вы слышали, как поёт Карузо?
— Да, мне тут кое-что из его репертуара Рабинович напел по телефону.

Детектив по материалам IT. Часть первая


Я осознаю, что писать очередную статью на тему Модель-Вид-Контроллер это глупо и вредно для «кармы». Однако с этим «паттерном» у меня слишком личные отношения – проваленный проект, полгода жизни и тяжелой работы «в корзину».


Проект мы переписали, уже без MVC, просто руководствуясь принципами – код перестал быть похож на клубок спагетти и сократился наполовину (об этом позже, в обещанной статье про то, как мы применяли «принципы» в своем проекте). Но хотелось понять, что же мы сделали не так, в чем была ошибка? И в течении долгого времени изучалось все, что содержало аббревиатуру MVC. До тех пор пока не встретились исходные работы от создателя – Трюгве Реенскауга…


И тогда все встало на свои места. Оказалось что фактически на основе принципов мы пере-изобретали «original MVC». А то, что зачастую преподносится как MVC, не имеет к нему никакого отношения… впрочем также как и к хорошей архитектуре. И судя по тому сколько людей пишет о несостоятельности «классического MVC», спорит о нем и изобретает его всевозможные модификации, не одни мы столкнулись с этой проблемой.


Более 30 лет собранные в MVC идеи и решения остаются наиболее значимыми для разработки пользовательских интерфейсов. Но как ни странно, несмотря на существующую путаницу и обилие противоречивых трактовок, разработчики продолжают довольствоваться информацией «из вторых рук», черпая знания о MVC из википедии, небольших статей в интернете и фреймворков для разработки веб-приложений. Самые «продвинутые» читают Мартина Фаулера. И почему-то почти никто не обращается к первоисточникам. Вот этот пробел и хотелось бы заполнить. И заодно развеять некоторые мифы.


Читать дальше →
Total votes 73: ↑71 and ↓2+69
Comments387

Toyota: 81 514 нарушений в коде

Reading time5 min
Views102K


Люди: — Эй, Тойота, мы тут посчитали, у вас из-за корявой электроники и софта 89 человек погибло с 2000 по 2010.
Тойота: — Да они сами виноваты, путают педали.
Люди: — Хьюстон, у нас проблемы.
NASA: — Ща разберемся, нам надо 10 месяцев и 3 миллиона долларов.
Люди: — На.
Тойота: — 3 миллиона мало, вот вам еще сверху кэшем.
(прошло 10 месяцев)
NASA: — Эй, Тойота, мы у вас пару ошибок в коде нашли, а точнее 7134 нарушения стандартов MISRA, рекурсию, функцию на 740 строк и 9000 глобальных переменных.
Тойота: — А у нас свои стандарты. А вы ваще на Луну летали?
NASA (публично): — Тойота ни в чем не виновата.
(Акции Тойота подскочили на 4,6%)
Люди: — Ну ё-моё.
(спустя 3 года)
Два американских тестировщика (у которых дедушки погибли в Перл-Харбор): — Нет багов? А если найдем?
Total votes 131: ↑123 and ↓8+115
Comments268

Agile API — возможно ли?

Reading time11 min
Views13K
Множество статей и книг посвящено тому, как правильно проектировать API, но едва ли кто-то затрагивал тему постоянно меняющихся (гибких) API. Динамично развивающаяся компания зачастую выпускает по несколько релизов в неделю, а иногда и в день. При этом для добавления новых функций необходимо постоянно вносить изменения в существующее API. В этой статье мы расскажем о том, как мы в Badoo решаем эту задачу, какие подходы и идеи мы используем в своей работе.

Для начала я должен немного подробнее рассказать о Badoo, чтобы вы понимали, кто работает с нашим API и почему оно так часто меняется.

Читать дальше →
Total votes 35: ↑34 and ↓1+33
Comments0

.NET Core: релиза не будет, но вы держитесь, здоровья вам, хорошего настроения

Reading time5 min
Views28K

Пост о том как не надо вести разработку фреймворков, и о том, почему жизненный цикл программного обеспечения это не пустые слова, особенно, если на вас полагаются миллионы разработчиков по всему миру. Далее следует критика подхода к разработке платформы .NET Core, и, тесно связанного с ним фреймворка, ASP.NET Core.



История версий .NET Core (шутка с просторов Интернета):


* Alpha
* Beta
* RC1
* 2RC 2Furious
* RC: Tokyo Drift
* RC4: The Big RC
* 7
* RC8
Читать дальше →
Total votes 52: ↑40 and ↓12+28
Comments31

.NET-разработка: девять вопросов взрослым

Reading time14 min
Views38K
.NET становится по-настоящему кроссплатформенным: после долгого ожидания наконец объявлена дата релиза ASP.NET Core, JetBrains готовит альтернативу Visual Studio на базе ReSharper и IDEA, Microsoft приобрела Xamarin, сделала Xamarin Community бесплатной, а Mono перевела на MIT-лицензию и наконец, Windows Server 2016 получит поддержку Windows-контейнеров в Docker.

С новыми возможностями нас встречают новые вызовы:
  • Как будет работать один и тот же код под .NET Core и Mono, на Windows и Linux, в docker-контейнере?
  • Стоит ли переходить на .NET Core уже сейчас и как получить максимум от новой платформы?
  • Какие перспективы у Mono и Xamarin?
  • Какие изменения произошли «под капотом» .NET с переходом на Roslyn и .NET Core?

Всего через три недели на конференции DotNext в Питере 20 спикеров выступят с докладами о настоящем и будущем платформы .NET, об оптимизации производительности и многопоточности, о внутреннем устройстве платформы .NET и CLR, о профилировании и отладке .NET-кода.

А пока мы попросили четырех из них поделиться своим опытом и мнениями о грядущих изменениях в мире .NET. На наши вопросы ответили:

  • Ведущий мировой эксперт по производительности .NET-платформы, восьмикратный Microsoft MVP, автор прекрасной книги по производительности .NET «Pro .NET Performance» Саша Голдштейн;
  • Главный разработчик протокола реактивного многопроцессного взаимодействия в Rider Дмитрий Иванов из JetBrains;
  • Ещё один разработчик Rider’a из компании JetBrains, .NET MVP, к.ф.-м.н., серебряный призёр ACM ICPC, постдок в Вейцмановском институте науки Андрей Акиньшин;
  • CTO Promarket и эксперт в области Mono и Linux Никита Цуканов.
Читать дальше →
Total votes 37: ↑35 and ↓2+33
Comments19

Кодь кто живой: Livecoding.tv запустил онлайн-хакатон по созданию своего приложения

Reading time2 min
Views17K
У одного из наших зарубежных друзей — известного вам, надеюсь, сервиса Livecoding.tv, сегодня стартовал конкурс на создание собственного мобильного приложения. Блог Cloud4Y является информационным спонсором проекта в России.



Т.к. это сервис онлайн-трансляций кодинга, то и конкурс объявлен онлайновый — т.е. разработка должна вестись в прямом эфире. Тогда, если даже не получится сделать лучше других, хотя бы можно выиграть приз за самую интересную трансляцию.
Читать дальше →
Total votes 22: ↑18 and ↓4+14
Comments15

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity