Джоэл Спольски много лет назад придумал тест на качество и адекватность IT-компании, но ценности он не теряет и по сей день.
Сентябрь 2014, TechTalks NSU, Новосибирск
3. Joel Spolsky
• Блог joelonsoftware.com (2000-2010)
• Книги:
• “Joel on Software”,“More Joel on Software”
• “The Best Software Writing”
• “Smart and Gets Things Done”
4. The Joel Test
12 вопросов,
которые должна
задать себе каждая
IT-компания
5. The Joel Test
12 вопросов,
которыми должен
задаться каждый
уважающий себя
разрабочик
6. 1.Do you use source control?
2.Can you make a build in one step?
3.Do you make daily builds?
4.Do you have a bug database?
5.Do you fix bugs before writing new code?
6.Do you have an up-to-date schedule?
7.Do you have a spec?
8.Do programmers have quiet working conditions?
9.Do you use the best tools money can buy?
10.Do you have testers?
11.Do new candidates write code during their
interview?
12.Do you do hallway usability testing?
11. Git
• Наиболее широко используется в
индустрии.
• Есть github — стандарт де-факто в
индустрии.
• Можно использовать и исключительно
локально.
12. Но я же один?!
• Ой, сломалось!
• Ой, выключилось!
• Ой, Ctrl+Z не работает!
13. Портфолио
• Даже учебные проекты (в том числе
курсовики и дипломы) — уже задел на
будущее.
• Даже текст лучше отслеживать.
• «Для бедных» — Dropbox и Google
Drive
18. Типичная процедура
• По коммиту в определённую ветку
вызывается hook.
• На специальном компьютере (агенте)
запускается процедура сборки.
• По итогам артефакты копируются в
нужные места.
19. Не только
компиляция
• Тестирование
• Выгрузка на dev/staging окружение.
• Рутинные процедуры (бэкапы, развёртка).
• Сборка документации.
• Anything you want
20. 3. Do you make daily builds?
• Опять же — buildserver.
• Проходит больший набор тестов.
• Происходит в основном ночью — когда
люди спят.
21. 4. Do you have a bug database?
Все баги должны быть задокументированы
(по крайней мере, сведены в один список)
22. 4. Do you have a bug database?
Все баги должны быть задокументированы
(по крайней мере, сведены в один список)
23. Что полезно знать о баге
• Критерии воспроизведения
Нажать на кнопку «Оплатить» два раза подряд
• Версия продукта
Версия 2.0, ревизия a35fdd0c
• Окружение
IE 6, запущенный подWine 1.2 в Ubuntu 8.08
24. У бага могут быть разные статусы
• Баг обнаружен, но им пока никто не занялся
• Баг подтвержден: проблема действительно
есть
• Багом начали заниматься
• Баг пофиксан, но это нужно независимо
проверить
• Баг пофиксан и проверен
25. Багтрекеры
• Поддержка жизненного цикла бага
• Передача бага от одного члена команды к
другому
• Подробное описание бага
• Обсуждение происходящего
27. 5. Do you fix bugs before
writing new code?
Чем позже вы почините проблему в коде,
тем дороже вам обойдется починка.
Серьезные проблемы лучше решить в
первую очередь, новые фичи подождут.
28. 6. Do you have an up-to-date schedule?
Если вы сами не знаете, когда вы выпустите
первый релиз продукта...
...то скорее всего вы его и не выпустите
31. Дедлайн — лучшее средство от feature creep
«А давайте добавим в первый релиз вот это, а
еще это и это...»
32. 7. Do you have a spec?
У вас должен быть какой-то документ,
описывающий создаваемую
программную систему.
Требования, функциональность, UI,
архитектура...
33. Спецификация? Зачем?
• Чтобы не забыть, что делать
• Спецификация = критерии проверки
• Список требуемых фич легко группировать
и приоретизировать
41. Фокусировка и поток
«Поток» — это пиковое состояние человека,
когда он сфокусирован на одном деле и
полностью в него погружен
42. Фокусировка и поток
• Вы становитесь очень продуктивны и
делаете больше за меньшее время.
• Вы сконцентрированны на выполнении
одной задачи
• Вы чувствуете себя великолепно —
счастливо, спокойно и уверенно.
44. 9. Do you use the best tools
money can buy?
• Удобное рабочее место повышает
продуктивность.
• Чем продуктивнее программист, тем большую
пользу он наносит фирме.
• Цена второго монитора меньше зарплаты
junior-а.
45. И не только софт и железо
• Не жмитесь на плюшки и печеньки!
• Нужно, чтобы разработчика беспокоили лишь
проблемы, связанные с разработкой.
46. 10. Do new candidates write
code during their interview?
47. 10. Do new candidates write
code during their interview?
48. Программист должен писать код
• Если ваш код не важен работодателю —
повод задуматься.
• Если люди, с которыми вы будете
работать, не заинтересованы в качестве
вашего кода — стоит крепко задуматься.
49. На код нужно смотреть всегда
• github == портфолио.
• Пишете курсач с
другом?
Предварительно
оцените его умения!
50. 11. Do you have testers?
Тестированием кода должны заниматься
не те же самые люди, которые его писали.
51. Выделенные тестировщики
Тестированием кода должны заниматься не те же
самые люди, которые его писали.
• Эффект замыленного глаза
• Неумышленное использование корректных
входных данных
• Нежелание находить себе дополнительную работу
52. Вы разработчик, а вас заставляют еще и
тестировать продукт?
Что-то тут нечисто.
54. 12. Hallway usability tests
Эффект «замыленного глаза»
Для тестирования юзабилити и
интерфейсов в целом привлекайте людей
«с улицы»
55. 12. Hallway usability tests
• Выйдите в коридор и позовите сотрудника
другого отдела, чтобы показать ему
интерфейс вашего продукта
• Покажите свою игрушку бабушке, пусть она
в ней разберется самостоятельно
56. The Joel Test
12 вопросов,
которыми должен
задаться каждый
уважающий себя
разрабочик
57. Joel Spolsky
• Блог joelonsoftware.com (2000-2010)
• Книги:
• “Joel on Software”,“More Joel on Software”
• “The Best Software Writing”
• “Smart and Gets Things Done”