Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014

833 views

Published on

  • Be the first to comment

  • Be the first to like this

А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014

  1. 1. Как мы разрабатываем Sphinx Аксенов Андрей Sphinx Technologies Inc
  2. 2. Про доклад • Nsk12…Ekb14 • Что? Сфинкс (сервер такой) • Кто? Команда! • Как? Удаленно! • Что хорошо? Что плохо? • Выводов не будет!
  3. 3. Структура компании • Консультанты, 2 • Разработка, 6 (*) • Консультации тоже • (*) Условно включая меня… • Продажи, 2 • Инфра, 2 • – А чо так мало? – А вот!!!
  4. 4. Мы говорим Ленин... • Команда разработчиков
  5. 5. Мы говорим Ленин... • Команда разработчиков • Маленькая, очень • Удаленная, полностью • Звездочка, исторически • Диктатура, вынужденно • Ничто не религия – так сложилось • Работа по домам – и плюсы и минусы
  6. 6. Вольно пасущиеся коты • Внешняя часть • Mantis, форум • Внутренняя часть • IRC, Skype, email, телефон • Eventum, Wiki, Mantis • Google Docs
  7. 7. Кафка. «Процесс». - Холст, сыр, масло • Как устроен процесс “про код”? • Какие именно Мега Практики есть? • Каких нету, каких зря, каких спецом? • Как и почему именно так получилось? • Полтора выстраданных опытом фокуса
  8. 8. “Мы е…и все на свете” • Waterfall ? • Agile ? • SCRUM ? • Kanban ? • Six Sigma ? . . .
  9. 9. “Мы е…и все на свете” • Waterfall ? • Agile ? • SCRUM ? • Kanban ? • Six Sigma ? . . . • X3M !
  10. 10. “Do the reasonable thing” • По-русски, возможно, “включи мозг” • Раскидываем баги, фичи, редкий R&D • Мини-лекции и “атаки” по потребности • Отчитываемся (еженедельный звонок) • Итерации типично короткие • Результаты типично прозрачные • Ничего особенного, как и обещал
  11. 11. Зоопарк VCS • Публичный svn (R/O зеркало, Gcode) • Был внутренний hg • Стал внутренний git-svn • Для длинных веток • Для секретных веток • Для промежуточных патчей • Когда-нибудь будет чисто Github
  12. 12. Зоопарк сред разработки • Каждый строчит, как он хочет • gcc + emacs + …, MSVC 2008/2012 • MSVS 2005, Xcode, Codeblocks • Довольно кроссплатформенно • Платформо-зависимого кода... МАЛО
  13. 13. Про кодстиль for ( int i=0; i<m_tSchema.GetAttrsCount(); i++ ) { const CSphColumnInfo & tCol = m_tSchema.GetAttr(i); ESphAttr eAttrType = tCol.m_eAttrType; if ( eAttrType==SPH_ATTR_UINT64SET ) { if ( tCol.m_eSrc==SPH_ATTRSRC_FIELD ) bHaveFieldMVAs = true; dMvaIndexes.Add ( i ); dMvaLocators.Add ( tCol.m_tLocator );
  14. 14. Про кодстиль • Своеобразный • Пробелы • Мини-венгерская нотация • Смесь систем именования типов • Но оправданный! • Мгновенный контекст • Читаемость без подсветки и в целом
  15. 15. Про кодстиль • Форсирую стиль • Форсирую компактность • Политика? • Религия? • Прагматика! • Ревью на старте. Типично ~1 мес • Линт и сразу и потом. Google ftw
  16. 16. Про библиотеки итп STL • STL, boost исторически не пользуемся • Было нельзя, сейчас незачем • Только вручную, только хардкор! • Сторонние библиотеки, эээ, по ситуации • libstemmer, libre2 линкуем • libaot, часть стеммеров переписали
  17. 17. Про ревью • Все еще без спецтулзов • Git бранчи FTW • NB, важно осознавать цели • Баги так ловить нельзя • Проверка стиля итп дури • Проверка “туда ли идем” • Двойные проверки особо важного
  18. 18. Внутренняя документация • Есть полупубличная, полудохлая • doc/internals*.txt • Есть совсем внутренняя • Особо секретная, так надо!!! • Маленькая, всего 10 18 страниц • Пишется по ситуации (найм / новое / хорошо забытое старое)
  19. 19. Внешняя документация • Неизменно БОЛЬ • Программисты плохо пишут • Пользователи плохо спрошают • Нужен уникальный спец-человек • Штоп разбирался • Штоп интересовался • Все еще пока не нашли!
  20. 20. Про тестирование • Внутреннее, автоматизированное • Функциональные тесты • 200+ штук, 4000+ запросов • Юнит-тесты • Тесты производительности (***) • Спецтестеров нет, вряд ли будет • Плюс фидбэк! (когда бывает)
  21. 21. “Толька! Этого мало!” • Все равно проникают адовые баги :) • Баги бывают трех классов, A, B, C • Но иногда! бывают баги класса Ы • issue-72, issue-136, … • bug-660, bug-1117, … • И отдельной строкой performance issues • prefork spin, O(n^2) zones, …
  22. 22. Специфика удаленки + Спокойно, нету геопривязки, офиса, свободный график… – Спокойно, ограниченный контакт, свободный график… • Ключевое, самодисциплина • Push модель vs pull модель • В остальном – вроде обычный orgchart
  23. 23. Стоит ли так жить? • Не знаю!!! • Но вот – иногда возможно
  24. 24. Вопросы? Аксенов Андрей Sphinx Technologies Inc shodan@sphinxsearch.com +1 (888) 333-1345

×