tech talks @nsu: Проходим тест Джоэла

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

Upload: tech-talks-nsu

Post on 19-Jan-2017

103 views

Category:

Education


3 download

TRANSCRIPT

Page 1: Tech Talks @NSU: Проходим тест Джоэла

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

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

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

Page 2: Tech Talks @NSU: Проходим тест Джоэла

Joel Spolsky

• StackOverflow (+StackExchange network)

• Trello

• etc.

Page 3: Tech Talks @NSU: Проходим тест Джоэла

Joel Spolsky

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

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

• “The Best Software Writing”

• “Smart and Gets Things Done”

Page 4: Tech Talks @NSU: Проходим тест Джоэла

The Joel Test

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

Page 5: Tech Talks @NSU: Проходим тест Джоэла

The Joel Test

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

Page 6: Tech Talks @NSU: Проходим тест Джоэла

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?

Page 7: Tech Talks @NSU: Проходим тест Джоэла

1. Do you use source control?

Page 8: Tech Talks @NSU: Проходим тест Джоэла

FTP rule the world!

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

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

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

Page 9: Tech Talks @NSU: Проходим тест Джоэла

1984 год позади

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

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

Page 10: Tech Talks @NSU: Проходим тест Джоэла

Git

Page 11: Tech Talks @NSU: Проходим тест Джоэла

Git

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

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

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

Page 12: Tech Talks @NSU: Проходим тест Джоэла

Но я же один?!

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

Page 13: Tech Talks @NSU: Проходим тест Джоэла

Портфолио

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

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

Drive

Page 14: Tech Talks @NSU: Проходим тест Джоэла

2. Can you make a build in one step?

Page 15: Tech Talks @NSU: Проходим тест Джоэла

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

Page 16: Tech Talks @NSU: Проходим тест Джоэла

Continuous Integration

• Тесты.

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

• Post-commit сборка.

Page 17: Tech Talks @NSU: Проходим тест Джоэла

Teamcity

Page 18: Tech Talks @NSU: Проходим тест Джоэла

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

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

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

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

Page 19: Tech Talks @NSU: Проходим тест Джоэла

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

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

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

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

Page 20: Tech Talks @NSU: Проходим тест Джоэла

3. Do you make daily builds?

• Опять же — buildserver.

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

Page 21: Tech Talks @NSU: Проходим тест Джоэла

4. Do you have a bug database?

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

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

Page 22: Tech Talks @NSU: Проходим тест Джоэла

4. Do you have a bug database?

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

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

Page 23: Tech Talks @NSU: Проходим тест Джоэла

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

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

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

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

Page 24: Tech Talks @NSU: Проходим тест Джоэла

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

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

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

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

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

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

Page 25: Tech Talks @NSU: Проходим тест Джоэла

Багтрекеры

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

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

Page 26: Tech Talks @NSU: Проходим тест Джоэла

Багтрекеры

• Trac, Bugzilla, Redmine...

• Jira, Lighthouse...

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

Page 27: Tech Talks @NSU: Проходим тест Джоэла

5. Do you fix bugs before writing new code?

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

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

Page 28: Tech Talks @NSU: Проходим тест Джоэла

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

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

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

Page 29: Tech Talks @NSU: Проходим тест Джоэла

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

Page 30: Tech Talks @NSU: Проходим тест Джоэла

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

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

Page 31: Tech Talks @NSU: Проходим тест Джоэла

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

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

Page 32: Tech Talks @NSU: Проходим тест Джоэла

7. Do you have a spec?

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

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

Page 33: Tech Talks @NSU: Проходим тест Джоэла

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

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

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

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

Page 34: Tech Talks @NSU: Проходим тест Джоэла

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

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

Page 35: Tech Talks @NSU: Проходим тест Джоэла

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

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

Page 36: Tech Talks @NSU: Проходим тест Джоэла

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

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

Page 37: Tech Talks @NSU: Проходим тест Джоэла

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

Да!

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

• Feature creep

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

Page 38: Tech Talks @NSU: Проходим тест Джоэла

8. Do programmers have quiet working conditions?

The good

Page 39: Tech Talks @NSU: Проходим тест Джоэла

8. Do programmers have quiet working conditions?

The bad

Page 40: Tech Talks @NSU: Проходим тест Джоэла

8. Do programmers have quiet working conditions?

The ugly

Page 41: Tech Talks @NSU: Проходим тест Джоэла

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

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

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

Page 42: Tech Talks @NSU: Проходим тест Джоэла

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

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

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

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

Page 43: Tech Talks @NSU: Проходим тест Джоэла

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

Page 44: Tech Talks @NSU: Проходим тест Джоэла

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

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

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

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

Page 45: Tech Talks @NSU: Проходим тест Джоэла

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

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

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

Page 46: Tech Talks @NSU: Проходим тест Джоэла

10. Do new candidates write code during their interview?

Page 47: Tech Talks @NSU: Проходим тест Джоэла

10. Do new candidates write code during their interview?

Page 48: Tech Talks @NSU: Проходим тест Джоэла

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

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

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

Page 49: Tech Talks @NSU: Проходим тест Джоэла

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

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

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

Page 50: Tech Talks @NSU: Проходим тест Джоэла

11. Do you have testers?

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

Page 51: Tech Talks @NSU: Проходим тест Джоэла

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

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

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

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

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

Page 52: Tech Talks @NSU: Проходим тест Джоэла

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

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

Page 53: Tech Talks @NSU: Проходим тест Джоэла

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

Page 54: Tech Talks @NSU: Проходим тест Джоэла

12. Hallway usability tests

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

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

«с улицы»

Page 55: Tech Talks @NSU: Проходим тест Джоэла

12. Hallway usability tests

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

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

Page 56: Tech Talks @NSU: Проходим тест Джоэла

The Joel Test

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

Page 57: Tech Talks @NSU: Проходим тест Джоэла

Joel Spolsky

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

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

• “The Best Software Writing”

• “Smart and Gets Things Done”

Page 58: Tech Talks @NSU: Проходим тест Джоэла

Спасибо!

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

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