Любопытная лекция про наблюдения о влиянии структуры организации на структуру решения. Если проще, то группе из четырех программистов дали задание написать компилятор, в результате заказчик получил компилятор состоящий из четырех стадий. Возникает вопрос, а если бы программистов было пара сотен, неужели и стадий было бы столько же? Ответ нет, но произошло бы кое-что другое... Эта пара сотен программистов разделилась бы на группы, каждая из которых займется каким-то отделяемым аспектом программы и очень вероятно, что мы в итоге получим такое количество частей в проекте, сколько подгрупп в этой паре сотен программистов.
Еще, эта лекция освещает одну ОЧЕНЬ интересную штуку, - решение задачи. Допустим мне требуется написать компилятор, но я новенький-зелененький, не знаю как такая шмыргалка устроена. Один из возможных подходов, который я возьму на вооружение, заключается в делении проблемы на более мелкие ровно до тех пор, пока только что поделенную проблему уже не на что делить, да и не зачем. На определенном этапе дробления, задача станет более понятной, решаемой. Таким образом, я могу найти решение в целом, путем деления задачи на подзадачи. И вот тут возникает та самая интересная штука! Я использовал специфичный прием при решении задачи и этот прием продиктовал СТРУКТУРУ решения.
Главная задача дробиться на подзадачи, те в свою очередь тоже дробятся, если это необходимо, в итоге мы получаем иерархическое дерево. Такой подход для мелких задач вполне подходит, но как только нам подсовывают задачку посложнее, мы можем столкнуться с проблемой, когда такое иерархическое дерево окажется слишком большим, чтобы комфортно в нем ориентироваться, а если задуматься про обслуживание, то волосы дыбом встают, везде!
Одно из решений заключается в создании библиотек, которые имеют свой интерфейс взаимодействия. Каждая такая библиотека решает какую-то свою достаточно большую проблему и выступает в качестве черного ящика, о внутреннем устройстве которого пользователю знать не требуется.
Но я не уверен, насколько такое решение удачно, так как мы продиктовали структуру каждого из этих решений - методом решения.
У настоящих деревьев требуют основу, они растут в землю, они не летают как пчелки, они не похожи на космические корабли и не поют как люди. Всё ли перечисленное было создано тем же дроблением?
Решение всех проблем одним путем вроде бы понятно, но как-то... скучно что-ли, или грустно.