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

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

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

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

Семён Факторович, @lazeez

Олег Годовых, @0leGG

Joel Spolsky

• StackOverflow (+StackExchange network)

• Trello

• etc.

Joel Spolsky

• Блог joelonsoftware.com (2000-2010)

• Книги:• “Joel on Software”, “More Joel on Software”

• “The Best Software Writing”

• “Smart and Gets Things Done”

The Joel Test

12 вопросов, которые должна задать себе каждая IT-компания

The Joel Test

12 вопросов, которыми должен задаться каждый уважающий себя разрабочик

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?

1. Do you use source control?

FTP rule the world!

• Можно управлять совместным доступом.

• Даже прямо на production.

• Гибко и удобно!

1984 год позади

• Дисковое место стоит очень недорого.• Куча сервисов рады предоставить свои возможности.

• Есть очень много открытых решений.

Git

Git

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

• Есть github — стандарт де-факто в индустрии.

• Можно использовать и исключительно локально.

Но я же один?!

• Ой, сломалось!• Ой, выключилось!• Ой, Ctrl+Z не работает!

Портфолио

• Даже учебные проекты (в том числе курсовики и дипломы) — уже задел на будущее.

• Даже текст лучше отслеживать.• «Для бедных» — Dropbox и Google

Drive

2. Can you make a build in one step?

<@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

Continuous Integration

• Тесты.

• Pre-commit проверка.

• Post-commit сборка.

Teamcity

Типичная процедура

• По коммиту в определённую ветку вызывается hook.

• На специальном компьютере (агенте) запускается процедура сборки.

• По итогам артефакты копируются в нужные места.

Не только компиляция

• Тестирование• Выгрузка на dev/staging окружение.

• Рутинные процедуры (бэкапы, развёртка).

• Сборка документации.• Anything you want

3. Do you make daily builds?

• Опять же — buildserver.

• Проходит больший набор тестов.• Происходит в основном ночью — когда люди спят.

4. Do you have a bug database?

Все баги должны быть задокументированы

(по крайней мере, сведены в один список)

4. Do you have a bug database?

Все баги должны быть задокументированы

(по крайней мере, сведены в один список)

Что полезно знать о баге

• Критерии воспроизведенияНажать на кнопку «Оплатить» два раза подряд

• Версия продуктаВерсия 2.0, ревизия a35fdd0c

• ОкружениеIE 6, запущенный под Wine 1.2 в Ubuntu 8.08

У бага могут быть разные статусы

• Баг обнаружен, но им пока никто не занялся

• Баг подтвержден: проблема действительно есть

• Багом начали заниматься

• Баг пофиксан, но это нужно независимо проверить

• Баг пофиксан и проверен

Багтрекеры

• Поддержка жизненного цикла бага• Передача бага от одного члена команды к другому

• Подробное описание бага• Обсуждение происходящего

Багтрекеры

• Trac, Bugzilla, Redmine...

• Jira, Lighthouse...

• Бесплатно и удобно: Github issues

5. Do you fix bugs before writing new code?

Чем позже вы почините проблему в коде, тем дороже вам обойдется починка.

Серьезные проблемы лучше решить в первую очередь, новые фичи подождут.

6. Do you have an up-to-date schedule?

Если вы сами не знаете, когда вы выпустите первый релиз продукта...

...то скорее всего вы его и не выпустите

6. Do you have an up-to-date schedule?

Наличие дедлайна мотивирует и держит в тонусе

(вспомните курсовики и дипломные проекты)

Дедлайн — лучшее средство от feature creep

«А давайте добавим в первый релиз вот это, а еще это и это...»

7. Do you have a spec?

У вас должен быть какой-то документ, описывающий создаваемую программную систему.

Требования, функциональность, UI, архитектура...

Спецификация? Зачем?

• Чтобы не забыть, что делать

• Спецификация = критерии проверки

• Список требуемых фич легко группировать и приоретизировать

Спецификация? Зачем?

Очень важно закрепить требования к системе на бумаге

Спецификация? Зачем?

Очень важно закрепить требования к системе на бумаге

Спецификация? Зачем?

Апеллирование к письменным договоренностям

Спецификация для курсовых проектов?

Да!

• Приоретизация фич

• Feature creep

• Тестирование

8. Do programmers have quiet working conditions?

The good

8. Do programmers have quiet working conditions?

The bad

8. Do programmers have quiet working conditions?

The ugly

Фокусировка и поток

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

полностью в него погружен

Фокусировка и поток

• Вы становитесь очень продуктивны и делаете больше за меньшее время.

• Вы сконцентрированны на выполнении одной задачи

• Вы чувствуете себя великолепно — счастливо, спокойно и уверенно.

9. Do you use the best tools money can buy?

9. Do you use the best tools money can buy?

• Удобное рабочее место повышает продуктивность.

• Чем продуктивнее программист, тем большую пользу он наносит фирме.

• Цена второго монитора меньше зарплаты junior-а.

И не только софт и железо

• Не жмитесь на плюшки и печеньки!

• Нужно, чтобы разработчика беспокоили лишь проблемы, связанные с разработкой.

10. Do new candidates write code during their interview?

10. Do new candidates write code during their interview?

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

• Если ваш код не важен работодателю — повод задуматься.

• Если люди, с которыми вы будете работать, не заинтересованы в качестве вашего кода — стоит крепко задуматься.

На код нужно смотреть всегда

• github == портфолио.

• Пишете курсач с другом? Предварительно оцените его умения!

11. Do you have testers?

Тестированием кода должны заниматься   не те же самые люди, которые его писали.

Выделенные тестировщики

Тестированием кода должны заниматься не те же самые люди, которые его писали.

• Эффект замыленного глаза

• Неумышленное использование корректных входных данных

• Нежелание находить себе дополнительную работу

Вы разработчик, а вас заставляют еще и тестировать продукт?

Что-то тут нечисто.

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

12. Hallway usability tests

Эффект «замыленного глаза»

Для тестирования юзабилити и интерфейсов в целом привлекайте людей

 «с улицы»

12. Hallway usability tests

• Выйдите в коридор и позовите сотрудника другого отдела, чтобы показать ему интерфейс вашего продукта

• Покажите свою игрушку бабушке, пусть она в ней разберется самостоятельно

The Joel Test

12 вопросов, которыми должен задаться каждый уважающий себя разрабочик

Joel Spolsky

• Блог joelonsoftware.com (2000-2010)

• Книги:• “Joel on Software”, “More Joel on Software”

• “The Best Software Writing”

• “Smart and Gets Things Done”

Спасибо!

Семён Факторович, @lazeez

Олег Годовых, @0leGG