В какой момент написания программы делать initial commit?
Git хранит историю изменений. Закоммитили вы в него тот код, который у вас есть сейчас, или нет - совершенно неважно. Главное - закоммитить в него тот код, который вы собрались изменять. Чтобы иметь его копию до изменений. 
Пока вы пишете новый код - контроль версий не нужен. Как только понадобилось что-то в коде исправить - нужно сначала сделать коммит, чтобы, если исправление неудачно, не вспоминать, что именно и как именно было исправлено, а вернуться к предыдущей версии кода или наглядно сравнить ее с текущей.
К тому времени, когда код будет хоть что-то делать - у вас, скорее всего, уже не один десяток коммитов будет. Не бойтесь создать ненужный коммит - важны только те, которые понядобятся, а сколько будет прочих - совершенно некритично.
Обычная практика - сделал фичу, закоммитил код с комментарием "сделал эту фичу". Исправил баг - аналогично. Заодно еще и историю работы потом можно будет увидеть ;)
Делайте так, как вам удобно и целесообразно. Я бы делал коммиты с самого начала проекта.