目的のプログラムを書き始める前に、まずテストを書く、というスタイルもある(これを、「テストファースト」という。詳しくは、テスト駆動開発を参照)。あるいは対象が有限オートマトンやプロセス計算など、形式手法的な方法でモデル化できるのであれば、まずはそのようにすべきである(本来はモデル主導というのはそのような意味のはずである)。一旦の完成の後も、ある程度の期間使われるプログラムでは、使用しているうちに、プログラムの性能や機能に新しい要求が発生したり、プログラムの設定を変更する必要がでてきたり、テストにより発見できなかったバグが見つかることがある。このような事態に対応するため、プログラムを保守していく作業が必要になる。プログラマ.プログラミングをする人をプログラマという。プログラミングを行うには一般に、コンピュータ科学を中心としたプログラミングそれ自体についての能力や知識と、書こうとするプログラムが対象とする問題領域などについての能力や知識の両方が必要である。職業としてのプログラマ.プログラマの仕事.この他、プログラムが、作者以外の人によって利用される場合には、プログラムの利用方法や機能について質問を受けることがある。プログラムを、意図したとおり稼働させてゆくためには、これらの問い合わせに対応する必要もある。一般に、職業としてプログラミングを行う場合、これらの作業が工程として含まれる。大規模なプログラミングでは、これらの作業を分業することも多い。このような業務は、ソフトウェア工学という学問のソフトウェア開発工程の分野として扱われる。プログラミングコードがある程度自動生成できるようになった今、専門家の予測通りプログラミングエンジニアの役割は変わりつつあるが、現時点ではコード自動生成の商用・学術利用には著作権上の課題がある。プログラミング言語.