Pull to refresh
132
0
Кирилл Мокевнин @toxicmt

Программист & Предприниматель

Send message

Мифология и реальные методы прагматичного программирования

Reading time12 min
Views21K

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

Меня зовут Кирилл Мокевнин, и я — сооснователь школы программирования Хекслет. За последние пару лет я провел собеседования с более чем 400 человек, потенциальными наставниками по совершенно разным направлениям в разработке. В результате у меня собралась большая выборка наблюдений, которые мы и разберем в этой статье.

Читать далее
Total votes 74: ↑69 and ↓5+64
Comments27

Чек-лист хороших инженерных практик в компаниях

Reading time7 min
Views18K

Создание программного обеспечения — процесс, который может сильно усложниться с ростом количества разработчиков. Больше людей в команде — больше коммуникации и необходимости синхронизироваться: растет цена ошибки, система перестает умещаться в голове одного разработчика, а изменения в одном месте влияют на изменения в других местах.

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

В этой статье я расскажу о причинах такой катастрофической разницы, а также об инженерных практиках, которые позволят поддерживать высокий темп разработки:

Читать далее
Total votes 22: ↑20 and ↓2+18
Comments8

Как основать школу программирования в 2012 году и чуть не потерять всё из-за бума в Edtech

Reading time11 min
Views11K

CEO «Хекслета» Кирилл Мокевнин — о том, как не надо создавать свою школу программирования, если вы хотите зарабатывать, и почему инженерная экспертиза в IT-сфере мешает реальному пониманию рынка.

Читать далее
Total votes 64: ↑62 and ↓2+60
Comments22

Docker Workflow

Reading time10 min
Views28K
Перевод инфраструктуры hexlet.io на Docker потребовал от нас определенных усилий. Мы отказались от многих старых подходов и инструментов, переосмыслили значение многих привычных вещей. То, что получилось в итоге, нам нравится. Самое главное – этот переход позволил сильно все упростить, унифицировать и сделать гораздо более поддерживаемым. В этой статье мы расскажем о той схеме для разворачивания инфраструктуры и деплоя, к которой в итоге пришли, а так же опишем плюсы и минусы данного подхода.
Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments17

IT в регионе. Ульяновск. Выходим из сумрака

Reading time10 min
Views49K
Ульяновск — мой родной город, но карьеру разработчика я начал в Москве и прошел путь от PHP-девелопера в веб-студии до программиста Ruby On Rails в Skype. Зеленоград, в котором расположился офис Skype, оказался очень необычным городом. Он действительно очень зеленый, ухоженный и приятный для жизни. Именно там пришла мысль о том, что свет клином на Москве не сошелся. Через какое-то время я уволился и, не имея ни плана, ни сбережений, отправился домой, в Ульяновск, создавать компанию своей мечты.

Каково же было мое удивление, когда я узнал о том, насколько в городе развито ИТ-движение.

Читать дальше →
Total votes 85: ↑74 and ↓11+63
Comments174

Валидация за гранью фола

Reading time3 min
Views3.2K
Обычно, про валидацию в рельсах говорят только хорошее. Сегодня мы поговорим о некоторых ситуациях где система дает сбой.

Ситуация раз


При регистрации пользователя мы как обычно хотим сделать подтверждение пароля. Нет проблем, добавляем :confirmation => true. Через какое-то время у сайта появляется мобильное приложение, в котором тоже реализована регистрация, но подтверждения пароля там уже нет. Как поступить в этом случае?

решение под катом
Читать дальше →
Total votes 28: ↑23 and ↓5+18
Comments17

Иерархия контроллеров

Reading time3 min
Views12K
В большинстве встречавшихся мне rails проектов, структура контроллеров не имеет никакой организации и проект растет как придется. В больших проектах это приводит к тому что контроллеры становятся огромными (с десятками actions), а условные фильтры растягиваются на весь экран. Разобраться в таком коде бывает очень не просто.

Поработав с большим количеством rails проектов, у меня был сформирован подход к организации иерархии контроллеров, которая позволила унифицировать их структуру и упростить код.

Читать дальше →
Total votes 41: ↑38 and ↓3+35
Comments29

Переписываем проект с Zend Framework на Rails

Reading time9 min
Views7.8K
Около пяти месяцев назад я завязал с zend framework и пересел на рельсы. Тогда же начал переписывать свой проект www.okinfo.ru. Сейчас он уже закончен и sloccount показал что количество строк в проекте уменьшилось с 15000 до 4000. Мои знакомые php разработчики попросили success story и в итоге родилась эта статья. В ней я опишу как оно было, а так же немного расскажу о своем переходе на ruby.
Читать дальше →
Total votes 154: ↑143 and ↓11+132
Comments197

Человеческий фактор или «соглашения не работают»

Reading time4 min
Views3.6K
Представьте ситуацию. Вы со своей командой, после очередной итерации, обсуждаете слабое покрытие кода тестами и решаете что с понедельника текущего момента все пишут тесты как для нового кода, так и для всплывающих багов. Это кажется разумным (кто-то вспоминает последний неудачный деплой), все поддакивают и довольные расходятся с мыслью, что ну вот теперь то у нас точно все будет отлично. Приходит время следующего собрания на котором во время вопроса «а как у нас с тестированием» большинство отводит глаза. Результат ясен, все осталось по старому.

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

Читать дальше →
Total votes 56: ↑53 and ↓3+50
Comments42

Хранение, обработка и отдача статики

Reading time4 min
Views7.6K
У начинающих (и не очень) разработчиков часто возникают вопросы по поводу того как правильно работать с пользовательским контентом, а конкретно с картинками. У данной темы множество аспектов и не один вариант решения. Здесь будет рассматриваться всего лишь один из возможных вариантов имеющий свои плюсы и свои минусы. Так же будем считать что статика и код хранятся на одном единственном сервере, а файлы загружаются по одному.

Задачи решаемые системой:
— удобная загрузка файлов;
— возможность асинхронной обработки картинок;
— легкая работа с превью;
— отделение конфигурирования от выполнения.

Поехали

Читать дальше →
Total votes 61: ↑45 and ↓16+29
Comments49

Named scope для Zend Framework

Reading time3 min
Views1.4K
Работая с базой, постоянно приходится писать множество методов поиска. Вот типичный сценарий:

Предположим, что нам надо выводить список пользователей на сайте. Вначале это может быть так — $user_table->fetchAll(). А если нужно выводить только девушек? Напишем метод getFemaleUsers(). А только тех, кто не забанен и имеет аватарку? А вывод в админке только девушек, но без учета статуса пользователя?

В конце концов мы получим вагон методов, которые частично друг друга перекрывают или вообще делают одно и тоже, а различается только сортировка. А ведь их еще нужно тестировать…

Читать дальше →
Total votes 51: ↑44 and ↓7+37
Comments77

Практика внедрения PHPunit

Reading time7 min
Views8.6K
Уже достаточно сказано о пользе автоматизированного тестирования (например, тут и тут), но до сих пор многие так и не пишут тестов. Одна из причин, как мне кажется, в том что предлагаемые способы автоматизации тестирования сложнее чем необходимо для большинства случаев. Сегодня я хочу рассказать о том как это сделано у нас.

Читать дальше
Total votes 14: ↑10 and ↓4+6
Comments5

Information

Rating
Does not participate
Location
Miami Beach, Florida, США
Date of birth
Registered
Activity