Программист для меня - человек, самостоятельно пишущий код, составляющий для него требования, тесты, архитектуру, и прочее (получилось описание сениор программиста)
Ваше описание больше компост всех направлений по чуть чуть.
В целом программист должен выполнять определенную, поставленную задачу, а именно, он имплементирует задачи данные им сверху архитектором. А уже ранги типа сеньора, мидла и джуна нужны уже просто для разделения уже текущей данной задачи в зависимости от опыта. Но в наших реалиях, очевидно, почему у вас такое представление о программистах, потому что в наших компаниях не выгодно держать всех сразу и до сих пор у нас, пишут чтоб работало сейчас, а не чтобы работало всегда.