среда, 19 января 2011 г.

Фэйл

Сегодня речь пойдет про то, что значит быть профессионалом и отношение к разработке.

Процесс разработки практически всегда ведется по такой схеме. Есть задания системе управления проектами. Разработчику назначается определенная задача. Он выполняет ее, как правило в отдельной ветке и создает ветку для обзора кода и мержа в транк, если все хорошо.

На примере "простого" задания рассмотрим все эти этапы.

Предположим ставится задача сделать экспорт данных в web-приложении. Требования к задаче: необходимо сделать экспорт данных для выбранной страницы (для профи это уже первый звоночек). Нужно сделать быстро. Все больше требований нет.

Смотрим приложение. Видим, что на странице есть таблица, пейджинг для нее и фильтр в виде выпадающих списков (для профи это уже второй звоночек).

Немного обдумав, принимается решение, что нужно со стороны web-клиента на сторону сервера сделать запрос об экспорте данных. Необходим инструмент для экспорта. Вроде все. Приступаем (профи этого не достаточно. Чего здесь не хватает?).

Пишем javascript, код на сервере для экспорта и возвтрата данных. Используем на сервере данные по умолчанию, т.е. те которые были в коде (для профи это уже третий звоночек).

Проверяем работу (четвертый звоночек). Нажал на линк, появилось загрузить файл, открыл, данные похоже. Все коммитем. Создаем ветку для ревью и мержа.

Люди смотрят функционал и говорят. Это не работает. Мы изменяем фильтр, а данные в экспорте не изменяются (смотри звоночки 1, 2, 3, 4). Изменяем пейджинг данные не меняются (тоже самое). Все очень плохо, у людей паника. Вывод это делал не профессионал!


Разбор полета.
Когда разработчик выполняет задачу, из-за трудностей связанных с интеграцией и учитывания факта "сделать быстро", он забывает о простых вещях: минимум план тестирования (основной функционал), понимание содержания используемых данных и т.д.

Как повел бы себя профи. Звонок первый: т.к. описание для задачи краткое, нужно понять, что оно значит. Звонок второй: имеются инструменты для "фильрации" данных, учитывая описание, следует предположить, что это же должно соблюдаться и для экспорта, т.е. при экспорте нужно учитывать выбранные условия "фильтрации". Звонок три: понять как на сервере формируются данные на основе каких условий, как они связаны с "фильтрацией" на стороне клиента. После этого имеем весь механизм работы связки "клиент-сервер-экспорт". Пишем экспорт на сервере, учитывая полученную информацию. Звонок четыре: описываем основной с вашей точки зрения функционал, учитывая полученные данный звонков 1,2,3. Тестируем сами. Дальше просим отдел QA посмотреть минут 20-30 ваш функционал (ip адрес вашего локального сервера). Если нужно правим. Все получаем хорошую реализацию задания. Это профи.

До этого нужно расти. Будем расти!!! И всем желаю.
Удачи.

Странно, здесь не встретился "северный песец". Это редкое "создание", кто-то преувеличивает. =)

2 комментария:

  1. Хороший программист — это тот, кто смотрит в обе стороны, переходя дорогу с односторонним движением.
    Даг Линдер

    ОтветитьУдалить
  2. Любой дурак может написать код, понятный компьютеру. Хороший программист пишет код, понятный человеку.
    Мартин Фаулер

    ОтветитьУдалить