программист - это почти самое низкое звено. Годам к 28 пора занимать руководящую должность. Кого первого начали выгонять с работ в начале Кризиса? Программистов, конечно. Они просто не нужны в таком количестве. А вот человека, который пишет документацию, вряд ли выкинут с работы при сокращении.
Ошибаетесь.
Во-первых, документацию пишет "технический писатель" (technical writer) -- мягко говоря, не самая высокая должность; в любом случае, не "руководящая".
Другое дело, если Вы имеете в виду аналитиков, т. е. специалистов, формирующих требования к разрабатываемому программному обеспечению. Но это тоже обычно никакие не руководители.
Во-вторых, программисты тоже разные бывают: от младшего до ведущего. Хороших программистов как не хватало до кризиса, так не хватало и во время кризиса и не хватает сейчас.
Ну а "руководящие" должности -- это обычно как раз ведущие программисты (lead developers) и руководители проектов, причём, довольно часто эти две роли совмещаются.
Лично у меня написание программы, как таковой, от общего времени разработки занимает малую толику времени.
Так и должно быть. В типичном проекте по разработке программного обеспечения собственно программирование -- это около 30% трудозатрат; остальное -- управление требованиями, проектирование, тестирование и т. п.
Что же касается "блок-схем", то существует довольно много графических нотаций, позволяющих отразить тот или иной аспект структуры или функционирования программного обеспечения. В частности,
UML включает более десятка видов таких диаграмм. Какие-то из них более полезны в конкретном проекте, какие-то менее, и выделить один в качестве универсального невозможно. (К Ханойской башни все они вообще малоприменимы :))