Ответ очень прост - первые программы вообще делались не программистами. Это были инженеры-электронщики, в правильной комбинации подключающие провода и тумблеры. Программисты в том виде, как себе представляете их Вы - появились гораздо позже, как слияние "кодеров" и разработчиков алгоритмов. И когда появились - соответственно, уже была инфраструктура для написания программ.
Re: как программисты делали программы для программистов, если раньше не было программ
Чего там только не было, перфокарты и прочая мудь. Родоначальник программирования в современном смысле этого слова это ассемблер. Кстати говоря до сих пор вполне живой, например для реверс-инженера мастхев.