- •Сформулируйте и поясните закон Брукса
- •Поясните, наличия, каких умений Закон Дырявых Абстракций требует от программиста.
- •Расскажите, что означает “вхождение в поток”.
- •Почему выдающихся программистов эффективнее “вербовать” в начале или середине обучения в университете, а не в конце?
- •Чем работа над одной задачей двух программистов в “хирургической бригаде” отличается от работы двух программистов в “классической” технологии?
- •Почему личные кабинеты могли бы увеличить эффективность работы программистов?
- •Программист осуществляет свои построения на основе чистого мышления. Какое отношение это имеет к оценке сроков задач?
- •Почему средняя производительность программистов резко падает в крупных проектах по сравнению с малыми?
- •Что такое “концептуальная целостность”? Опишите это своими словами.
- •Сильно ли различается производительность программистов? Приведите пример(ы).
- •Что отличает программу от программного продукта? Программу от программной системы?
- •Приведите примеры линейно разделимой и линейно неразделимой задач.
- •Как обмен информаций и получение первоначального опыта новыми сотрудниками влияет на время, затрачиваемое на разработку?
- •Стоит ли давать практикантам серьезные задачи?
- •Что такое архитектура, и чем она отличается от разработки?
- •Сформулируйте возможную проблему “подавления творческой активности разработчиков архитекторами”. Каково ваше отношение к ней?
- •Msf и другие методологии говорят о “вехах”. События с какой отличительной чертой должны приниматься в качестве “вех”?
- •Две отличительные черты разработки программного обеспечения по Бруксу - Согласованность и Изменяемость. Каким образом они усложняют разработку программного обеспечения?
- •Чем программный продукт сложнее, например, автомобиля?
- •В чем суть итеративной (пошаговой) разработки?
- •В чем психологическое преимущество итеративной разработки?
- •Почему принцип “планируйте на выброс” был признан устаревшим в 80-е?
- •Назовите несколько из Top-10 рисков it от Барри Боэма.
- •Чем спиральная модель отличается от итеративной разработки?
- •Программное обеспечение тиражируется практически бесплатно. Дает ли это дополнительные основания привлекать лучших спецов к его написанию?
- •Чем плохи генераторы кода?
- •Где искать выдающихся разработчиков?
- •Приведите пример вопроса, который не следует задавать кандидатам на собеседовании.
Сформулируйте и поясните закон Брукса
Кратко этот закон звучит так:
Если проект не укладывается в сроки, то добавление рабочей силы задержит его еще больше.
Программные проекты чаще проваливаются из-за нехватки календарного времени, чем по всем остальным причинам вместе взятым.
Происходит это из-за:
Неоправданного оптимизма
Выделяют: замысел, реализацию, взаимодействие. Так как в программирование, реализация протекает без работы над каким-то конкретным материалом, физического типа, всё кажется сделать просто, однако вот отсюда и начинается этот необоснованный оптимизм.
Ошибка в самой единице измерения: человеко-месяц.
Стоимость действительно измеряется по формуле, произведение числа сотрудников на затраченные месяцы.
Но это только в случае, если процесс протекает без взаимосвязи.
Например, при сбора урожая.
Если задачу нельзя разбить на части, то тут тоже увеличение затрат не окажет влияния на график.
Для задач, которые могут быть разбиты на части, но требует обмена информацией, полученные затраты нужно добавить к общему объему работ.
В программирование дополнительная нагрузка состоит из обучения и обмена данными.
Перед тем, как сотрудник начнет работать над проектом, его нужно обучить: ввести в курс дела, обозначить цели проекта, стратегии. Если все части задания должны быть скоординированы между собой, то затраты так же увеличиваются. Плюс сюда можно отнести различного рода совещании, для совместного решения вопросов.
И самое главное начинают ошибочно добавлять новых людей.
Поясните, наличия, каких умений Закон Дырявых Абстракций требует от программиста.
"Закон дырявых абстракций"- это когда переход на более высокий уровень облегчает жизнь разработчика, но иногда приходится заглядывать глубже.
То есть хороший программист должен уметь «копаться в кишках».
Расскажите, что означает “вхождение в поток”.
У всех бывают перепады в настроение, у одних более мягкие, у других более жесткие и ярко выраженные. Иногда ничего не получается, ничего не хочется на протяжении целых дней или даже недель, но бывает состояние работы в потоке, после входа в которые повышается производительность и человек выдает высокие результаты. Входу в это состояние способствует тишина, отсутствие внешних раздражителей, отсутствие нерешенных проблем. Из этого состояния в отличие от входа, очень легко выйти.
Возможно, лучшим помощником учитывая, что большинство программистов интроверты, были бы отдельные кабинеты.
По мнению Сполски, с входом в потом, может помочь, так называемая тактика «Огонь и движение». Он взял это название из военной тематики, когда он служил в Израиле парашютистом, генерал сообщил им, что лучшая тактика боя это: огонь и движение. Движетесь в сторону противника и при этом ведете огонь, противник вынужден спрятать голову, поэтому он не может вести ответный огонь. Движение позволяет подойти к врагу и захватить территорию. Если же ничего не делать, то противник откроет огонь и убьет вас.
По его мнению по этому же принципу нужно и работать. Нужно начать и хотя бы 15 минут в день уделять работе. Кстати в этом он приводит ещё плюс парного программирования, при таком подходе, партнеры могут друг друга подталкивать к работе.