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