Итак, про семь навыков...
1. Проводит декомпозицию задачи и проектирует ее решение
Получив задачу, программист не должен сразу бежать писать код. Правильный программист 80% времени работает головой, и только 20% времени - руками. Даже создание не очень сложной программы требует анализа и проектирования: декомпозиции задачи на боле простые подзадачи и последующего синтеза общего решения из частных. Например, выбор длины переменной целого типа есть элемент проектирования.
2. Адекватно оценивает затраты на выполнение
Ответ «Для решения этой задачи мне потребуется 8 часов» - неправильный. Оценка всегда величина вероятностная. Правильный ответ, например, «от 4 (быстрее точно не смогу) до 16 часов (скорее всего, точно сделаю)». Большой разброс не должен смущать руководителя, он отражает высокий уровень неопределенности при решении программистских задач.
3. Планирует свою работу и составляет график
При составлении план-графика решения задачи, программист должен расставлять приоритеты своих работ таким образом, чтобы максимально быстро снизить имеющиеся риски, а не добиться быстрого прогресса в решении. Отложенные «мутные» подзадачи могут выявить тупик в принятом проектном решении, и все придется начинать сначала.
4. Соблюдает принятые стандарты
Ну, тут все просто. «Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете». (с) Стив Макконнелл.
5. Обеспечивает требуемое качество, минимизируя затраты и риски
Это, наверное, самый сложный навык. Надо научиться находить золотую середину между запрограммировал, «как получится», и написал «самый совершенный код».
6. Выполняет тестирование и отладку кода
«Откомпилировалось - отправляем в тестирование!» - подход неверный. Программист обязан найти максимум ошибок в своем коде. Он может сделать это намного эффективнее, поскольку для него программа - «прозрачный ящик». Большинство ошибок лежит на границах областей определения и изменения переменных алгоритма. Тестировщик же будет тестировать код, как «черный ящик», бомбя по площадям перебором большого количества наборов данных.
7. Анализирует найденные дефекты и отклонения от графика
Ну и последнее, как любая самоуправляемая система программист должен обеспечивать обратную связь. Обязан анализировать фактические отклонения от планов по срокам и качеству и выявлять их причины для того чтобы скорректировать свой рабочий процесс и минимизировать подобные отклонения в будущем.
Немає коментарів:
Дописати коментар