2. Про доклад
• Nsk12…Ekb14
• Что? Сфинкс (сервер такой)
• Кто? Команда!
• Как? Удаленно!
• Что хорошо? Что плохо?
• Выводов не будет!
3. Структура компании
• Консультанты, 2
• Разработка, 6 (*)
• Консультации тоже
• (*) Условно включая меня…
• Продажи, 2
• Инфра, 2
• – А чо так мало? – А вот!!!
5. Мы говорим Ленин...
• Команда разработчиков
• Маленькая, очень
• Удаленная, полностью
• Звездочка, исторически
• Диктатура, вынужденно
• Ничто не религия – так сложилось
• Работа по домам – и плюсы и минусы
6. Вольно пасущиеся коты
• Внешняя часть
• Mantis, форум
• Внутренняя часть
• IRC, Skype, email, телефон
• Eventum, Wiki, Mantis
• Google Docs
7. Кафка. «Процесс».
- Холст, сыр, масло
• Как устроен процесс “про код”?
• Какие именно Мега Практики есть?
• Каких нету, каких зря, каких спецом?
• Как и почему именно так получилось?
• Полтора выстраданных опытом фокуса
8. “Мы е…и все на свете”
• Waterfall ?
• Agile ?
• SCRUM ?
• Kanban ?
• Six Sigma ?
. . .
9.
10. “Мы е…и все на свете”
• Waterfall ?
• Agile ?
• SCRUM ?
• Kanban ?
• Six Sigma ?
. . .
• X3M !
11. “Do the reasonable thing”
• По-русски, возможно, “включи мозг”
• Раскидываем баги, фичи, редкий R&D
• Мини-лекции и “атаки” по потребности
• Отчитываемся (еженедельный звонок)
• Итерации типично короткие
• Результаты типично прозрачные
• Ничего особенного, как и обещал
12. Зоопарк VCS
• Публичный svn (R/O зеркало, Gcode)
• Был внутренний hg
• Стал внутренний git-svn
• Для длинных веток
• Для секретных веток
• Для промежуточных патчей
• Когда-нибудь будет чисто Github
13. Зоопарк сред разработки
• Каждый строчит, как он хочет
• gcc + emacs + …, MSVC 2008/2012
• MSVS 2005, Xcode, Codeblocks
• Довольно кроссплатформенно
• Платформо-зависимого кода... МАЛО
14. Про кодстиль
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 );
15. Про кодстиль
• Своеобразный
• Пробелы
• Мини-венгерская нотация
• Смесь систем именования типов
• Но оправданный!
• Мгновенный контекст
• Читаемость без подсветки и в целом
16. Про кодстиль
• Форсирую стиль
• Форсирую компактность
• Политика?
• Религия?
• Прагматика!
• Ревью на старте. Типично ~1 мес
• Линт и сразу и потом. Google ftw
17. Про библиотеки итп STL
• STL, boost исторически не пользуемся
• Было нельзя, сейчас незачем
• Только вручную, только хардкор!
• Сторонние библиотеки, эээ, по ситуации
• libstemmer, libre2 линкуем
• libaot, часть стеммеров переписали
18.
19. Про ревью
• Все еще без спецтулзов
• Git бранчи FTW
• NB, важно осознавать цели
• Баги так ловить нельзя
• Проверка стиля итп дури
• Проверка “туда ли идем”
• Двойные проверки особо важного
20. Внутренняя документация
• Есть полупубличная, полудохлая
• doc/internals*.txt
• Есть совсем внутренняя
• Особо секретная, так надо!!!
• Маленькая, всего 10 18 страниц
• Пишется по ситуации (найм / новое
/ хорошо забытое старое)
21. Внешняя документация
• Неизменно БОЛЬ
• Программисты плохо пишут
• Пользователи плохо спрошают
• Нужен уникальный спец-человек
• Штоп разбирался
• Штоп интересовался
• Все еще пока не нашли!
22. Про тестирование
• Внутреннее, автоматизированное
• Функциональные тесты
• 200+ штук, 4000+ запросов
• Юнит-тесты
• Тесты производительности (***)
• Спецтестеров нет, вряд ли будет
• Плюс фидбэк! (когда бывает)
23.
24. “Толька! Этого мало!”
• Все равно проникают адовые баги :)
• Баги бывают трех классов, A, B, C
• Но иногда! бывают баги класса Ы
• issue-72, issue-136, …
• bug-660, bug-1117, …
• И отдельной строкой performance issues
• prefork spin, O(n^2) zones, …
25.
26. Специфика удаленки
+ Спокойно, нету геопривязки, офиса,
свободный график…
– Спокойно, ограниченный контакт,
свободный график…
• Ключевое, самодисциплина
• Push модель vs pull модель
• В остальном – вроде обычный orgchart
27. Стоит ли так жить?
• Не знаю!!!
• Но вот – иногда возможно