Без заголовка
Поразмыслил еще немного на тему схожести программирования и менеджмента, и подумал, что учить надо обработке данных. Т.е. такой смежной области между программированием и математикой. Сжатие данных, фильтрация там, датамайнинг и т.д. и т.п. Сие занятие хорошо интуицию на учет издержек и критических участков/путей затачивает.
К примеру, у меня сейчас есть несколько Гб данных, и их мой комп нексолько минут их только читает. Для интерактивной работы, это неудобно. Приходится данные компрессировать, чтобы быстрее читал, уже раз в 10 приудмал как сжать. Потом вот дошел до идеи что надо индексы построить, ибо мне все данные не нужны, а нужные события встречаются редко, т.е. их можно закешировать в виде индексов, и при обработке данных сразу прыгать в нужное место.
А итог такой, что очень хорошо начинаешь понимать структуру данных и обнаруживаешь всякие неожиданные интересные взаимосвязи. Как писал тот же Донской, что они сделали в Каиссе возможность распечатывать внутренние ходы и переборы и потом внимательно их изучали. И тоже находили всякие нетривиальные вещи.
Вот это, на мой взгляд, и есть основа подготовки архитектора ПО.