Проходим тест Джоэла

E51d363aa46f4d059d54a15e0bcd8e6f?s=47 Tech Talks @NSU
September 23, 2014

Проходим тест Джоэла

Олег Годовых и Семён Факторович (Noveo) рассказывают о тесте Джоэла и о том, почему он важен не только для IT-компаний, но и для маленьких команд и разработчиков-одиночек.

Видеозапись: http://www.youtube.com/watch?v=9sWD3RBwz30

http://techtalks.nsu.ru

E51d363aa46f4d059d54a15e0bcd8e6f?s=128

Tech Talks @NSU

September 23, 2014
Tweet

Transcript

  1. Проходим тест Джоэла Семён Факторович, @lazeez Олег Годовых, @0leGG

  2. Joel Spolsky • StackOverflow (+StackExchange network) • Trello • etc.

  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?
  7. 1. Do you use source control?

  8. FTP rule the world! • Можно управлять совместным доступом. •

    Даже прямо на production. • Гибко и удобно!
  9. 1984 год позади • Дисковое место стоит очень недорого. •

    Куча сервисов рады предоставить свои возможности. • Есть очень много открытых решений.
  10. Git

  11. Git • Наиболее широко используется в индустрии. • Есть github

    — стандарт де-факто в индустрии. • Можно использовать и исключительно локально.
  12. Но я же один?! • Ой, сломалось! • Ой, выключилось!

    • Ой, Ctrl+Z не работает!
  13. Портфолио • Даже учебные проекты (в том числе курсовики и

    дипломы) — уже задел на будущее. • Даже текст лучше отслеживать. • «Для бедных» — Dropbox и Google Drive
  14. 2. Can you make a build in one step?

  15. <@insomnia> it only takes three commands to install Gentoo <@insomnia>

    cfdisk /dev/hda && mkfs.xfs /dev/hda1 && mount /dev/hda1 /mnt/gentoo/ && chroot /mnt/gentoo/ && env- update && . /etc/profile && emerge sync && cd /usr/portage && scripts/bootsrap.sh && emerge system && emerge vim && vi /etc/fstab && emerge gentoo-dev-sources && cd /usr/src/ linux && make menuconfig && make install modules_install && emerge gnome mozilla-firefox openoffice && emerge grub && cp /boot/grub/grub.conf.sample /boot/grub/grub.conf && vi / boot/grub/grub.conf && grub && init 6 <@insomnia> that's the first one
  16. Continuous Integration • Тесты. • Pre-commit проверка. • Post-commit сборка.

  17. Teamcity

  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. Багтрекеры • Поддержка жизненного цикла бага • Передача бага от

    одного члена команды к другому • Подробное описание бага • Обсуждение происходящего
  26. Багтрекеры • Trac, Bugzilla, Redmine... • Jira, Lighthouse... • Бесплатно

    и удобно: Github issues
  27. 5. Do you fix bugs before writing new code? Чем

    позже вы почините проблему в коде, тем дороже вам обойдется починка. Серьезные проблемы лучше решить в первую очередь, новые фичи подождут.
  28. 6. Do you have an up-to-date schedule? Если вы сами

    не знаете, когда вы выпустите первый релиз продукта... ...то скорее всего вы его и не выпустите
  29. 6. Do you have an up-to-date schedule?

  30. Наличие дедлайна мотивирует и держит в тонусе (вспомните курсовики и

    дипломные проекты)
  31. Дедлайн — лучшее средство от feature creep «А давайте добавим

    в первый релиз вот это, а еще это и это...»
  32. 7. Do you have a spec? У вас должен быть

    какой-то документ, описывающий создаваемую программную систему. Требования, функциональность, UI, архитектура...
  33. Спецификация? Зачем? • Чтобы не забыть, что делать • Спецификация

    = критерии проверки • Список требуемых фич легко группировать и приоретизировать
  34. Спецификация? Зачем? Очень важно закрепить требования к системе на бумаге

  35. Спецификация? Зачем? Очень важно закрепить требования к системе на бумаге

  36. Спецификация? Зачем? Апеллирование к письменным договоренностям

  37. Спецификация для курсовых проектов? Да! • Приоретизация фич • Feature

    creep • Тестирование
  38. 8. Do programmers have quiet working conditions? The good

  39. 8. Do programmers have quiet working conditions? The bad

  40. 8. Do programmers have quiet working conditions? The ugly

  41. Фокусировка и поток «Поток» — это пиковое состояние человека, когда

    он сфокусирован на одном деле и полностью в него погружен
  42. Фокусировка и поток • Вы становитесь очень продуктивны и делаете

    больше за меньшее время. • Вы сконцентрированны на выполнении одной задачи • Вы чувствуете себя великолепно — счастливо, спокойно и уверенно.
  43. 9. Do you use the best tools money can buy?

  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. Вы разработчик, а вас заставляют еще и тестировать продукт? Что-то

    тут нечисто.
  53. Привлекайте к тестированию ваших курсовых проектов сторонних людей

  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”
  58. Спасибо! Семён Факторович, @lazeez Олег Годовых, @0leGG