プログラミングの生産性はプログラマによって大きく異なります。
開発ツールは世の中に五万とあり、様々な用途に合わせて作られています。
それらのツールを習得しているということはプログラマとしての能力そのものと言えるでしょう。
そして、天才的なプログラマでも意外とツールを良く理解していないことがあります。彼らに対してアドバンテージを取れるという意味でも開発ツールを学ぶ価値は非常に大きいです。
ここでは個別のツールに限定するのではなく、広くどのようなツールを、どのように学ぶべきなのかを議論したいと思います。
1. IDE (統合開発環境)
ex. Eclipse, Visual Studio
多くのプロジェクトにおいて、IDEはプログラミングの殆どの時間、開いているものです。
これを良く理解しているということがプログラマにとって重要であることは間違いありません。
しかし、「IDEを習得する」とはどういうことでしょうか。
IDEの利便性を最大限に引き出すためには以下の2点を習得する必要があるでしょう。
1. ショートカットキーを覚える
IDEは思った以上に沢山のショートカットキーが存在します。いちいちGUI上でクリックするのではなくショートカットを利用するだけで作業効率は一段と上がります。
ビルドやデバッグなどの非常に頻繁に使うショートカットはすぐに覚えますが、それほど頻繁ではないショートカットの場合、自分で意識して使うようにしないと覚えられないものです。
2. ビルドプロセスを理解する
IDEを自在に操れる人というのはIDEがその内部で何をやっているのかを理解しているプログラマです。多くのIDEはMakefileに相当するものを自動生成することでプロジェクトのビルドを自動化しています。
この自動生成されるMakefileに凡そどのような内容が書かれているのかを理解すると様々な自動化が可能になります。
例えばIDEが行っているビルドをそのままスクリプトにまとめることでテストビルドを自動化することが出来ます。
2. テキストエディタ
ex. Vi, Vim, Emacs
テキストエディタはあらゆる場面で使う、プログラマ・エンジニアの根幹となる武器です。
プログラマにとって優良なテキストエディタを習得するということは、日本人にとって日本語を習得するということと同義です。
テキストエディタの習得において最も大切なことはショートカットを覚えることです。そもそもテキストエディタを開く目的自体、あるコマンドを実行することである場合もあるでしょう。
ちなみにテキストエディタとしてはViかEmacsをおすすめします。
これらはコマンドライン上で使え、ショートカットが豊富であり、またシェアが大きいからです。
十中八九、一生使えるツールになるでしょう。
3. Git (バージョン管理ツール)
ex. Git, Subversion (ここではバージョン管理ツールとして)
時々Gitは不必要に複雑だ、という方がいます。
複雑かもしれませんが、不必要なものではありません。
そもそも、バージョン管理はいかなる種類のソフトウェアにおいても重要なものです。
個人で開発する場合でも、過去のコードというのは常に取っておくべきものであり、また開発の途中で「やっぱりPlan AじゃなくてPlan Bにしよう」という時にPlan Aに取りかかる前の状態にコードを戻すことが出来ます。
これを手動でやろうとして失敗した方は多いと思います。
バージョン管理を丁寧に行うだけで作業の効率は格段に上がります。
Gitとは全てのプログラマが習得すべきツールです。
また、Gitは絶対にコマンドライン上で扱うべきです。
確かにGUIも有用ですが、GUIはそのままでは自動化出来ないという致命的な欠点を持っています。
Gitのcommitやpushというのはめんどうな作業であるので、だからこそそれらを自動化することでそれらの作業を単純化することが出来るのです。
4. スクリプト言語
ex. Perl, Ruby, Python
これまでのツール紹介でも繰り返し自動化と言ってきました。
自動化というのは開発ツールの本質の一つでしょう。
そして、どれだけ自動化出来るかというのは、プログラマの能力のかなり精確なベンチマークであるでしょう。
それらの自動化を担当するのがスクリプト言語です。
スクリプト言語の代表はPerl, Ruby, Pythonでしょう。
スクリプト言語は本質的に「上から順に実行する」というものなので、自動化というものととても相性がいいのです。また、そもそもスクリプト言語は書くのが簡単であるということもあります。
これらの開発ツールを習得し、高い生産性と知識を得ればいち早く初級者から中級者になれるでしょう。
そもそもプログラミングとは効率向上・自動化の為のものです。
それを、プログラミングという活動自体に適用するということが中級者以上に求められる技能とも言えましょう。
0 件のコメント:
コメントを投稿