Как научиться писать эффективно и без ошибок работающие программы?
Первое что пришло в голову это С. Макконнелл «Совершенный код».
Но мне кажется что «чтобы программа сразу работала, как надо» — утопия.
согласен с вышенаписавшими. Чтобы минимизировать количество ошибок (до 0 вы всё равно никогда не доведёте) нужно больше практиковаться — и всё.