新人プログラマが知っておくべき3つのこと
こんにちわ。草食系妙齢プログラマ 野口おおすけです。わたしの住んでいる関東ではさまざまなところで節電対策ということで空調が止まっていたり、設定温度が高めになっています。基本的にスーツを着て出社するためこれからの時期が大変になりそうなので、スーパークールビズの流行に乗ってポロシャツとか軽装で出社したいものです。
さて、6月に入って、4月入社の新入社員が現場にやってくる時期になりました。研修で習ったことと現場との違いに戸惑うことも多いかと思います。今回は、現場に配属された新人が、プログラマとして仕事を始めるにあたって知っておきたい3つのことをご紹介したいと思います。わたしがJavaプログラマなのでJavaのことがメインになりますが、他の言語でも同じようなものです。
■IDEもエディタもあるんだよ
JavaでIDEといえばEclipseやNetBeansなどが代表的なものとしてあげられます。これらのツールは、ダウンロードしてインストールするだけでは、十分使いこなしているとはいえません。時には必要なプラグインを入れて機能を拡張したり、自分の手になじむキーバインドやテンプレートを設定したりと、ツールに自分を合わせる以上にツールを自分に使いやすいようにあわせることができます。LLであればvimやemacsを使うことが多いので、こちらも同様にプラグインで機能拡張したり、設定ファイルを自分好みに編集します。
自分の中で、「このツールはしっかり使える」というものを持っていると役に立ちます。とくにIDEで1つ、スクリーンエディタで1つ、合計2つ持っていれば、どのような環境でも作業に支障となることはないでしょう。
■最後に残った道しるべ(メッセージ)
過去にこんなやり取りをしたことがあります。
先輩「サーバとまってるみたいなんだけど!」
わたし「ログになんて出てます?」
先輩「みてない!」
わたし「え?」
新人じゃないエンジニアでもログやメッセージを確認しない人がいます。エンジニアの基本として、出力されているメッセージは見逃さないようにしましょう。さすがに異常終了したというだけでは、原因の特定なんてできません。もしかしたら、ここが原因かもという程度の推測は可能ですが特定にはいたらないでしょう。例外(Exception)が発生するには原因が絶対あります。スタックトレースであったり、HTTPのステータスコードであったり、任意で出力しているログであったりと問題の原因はかならずどこかに出力されているものなのです。
他の人にサポートしてもらうにも、これらの現象を正しく伝えることができるかどうかで対応するのにかかる時間が変わります。もし、メッセージの読み方がわからないのであればどういう経緯で問題が発生したかを伝えるようにしましょう。そうすれば、問題解決の糸口を見つけることができるかもしれません。
得にデータベース関係であれば、エラーコードが定義してあるのでそのコードでドキュメントを調べたり、インターネット検索して問題解決をすることがあります。(たまにさっぱり訳の分からないエラーを吐くミドルウェアもありますが……)
■「車輪の再発明」なんてないんだよ
世の中には優れたライブラリが数多くあります。それらを使わずに同じ実装をすることを、車輪のように当たり前にあるものを再び作ることに例えて「車輪の再発明」と呼びます。開発におけるバッドプラクティスの1つです。
いきなりさまざまなライブラリの内容を全て理解して自由自在に使いこなせというわけではありません。こういうものがあるんだなぁ程度でよいかと思います。存在を知っていれば、同じものを実装しなくても、そのライブラリを使えばよいわけです。Google先生に聞けばサンプルソースの1つや2つくらいはヒットするので、それを足がかりにすれば使い方も分かります。
JavaならばApache commonsやApache poiあたりを知っておくと、テスト時などにつかうような使い捨てツールには大変役に立ちます。たとえばExcelファイルにあるデータをDBに取り込みたいときなど、この2つの組み合わせで簡単に作ることができます。
そこからさらに一歩進めるには、そのライブラリがどのようにできているかを知るためにソースコードリーディングに挑戦するのもよいでしょう。オープンソースでなくても使う言語のAPIのコードを読んでみるのも勉強になります。さまざまな設計思想に触れるよい機会となります。
新人じゃない方はソースコードを読みましょう。OSSのソースコードを読んで、自分のソースコードに絶望することがあるかもしれません。でも、それは決して悪いことではありません。次に書くソースコードがよくなればいいのです。
これ以外に知っておきたいことはいろいろあります。
たとえば……
- バージョン管理ツールの使い方
- TDD(テスト駆動開発)やBDD(振る舞い駆動開発)
- CI(Continuous Integration)の役割
などなど。
これらは会社やプロジェクトによってさまざまなので、諸先輩方に習うのが一番でしょう。先輩方におかれましてはしっかり教えてあげてください。新入社員の方は教わったことで気に入らないことがあれば、ガンガン先輩方に突っ込むのを恐れてはいけません。楽しく宗教戦争しましょう。そうすることで、少しでも良い方向にプロジェクトが進めばと思います。
今回は、新人プログラマの方に知っておいてほしいことをお送りしました。入ってすぐはいろいろうまくいかないことばかりかと思いますが、1日も早くプログラマとして仕事ができるようお祈りしております。それでは、また次回。
■お知らせ
少し先ですがオープンソースカンファレンス2011 Kansai@Kyoto(7/15(金)と16(土))に参加します。
金曜日にエンジニアライフのブースに、土曜日はエンジニアライフのブースとセッション(LT)にそれぞれ参加予定です。わたし以外にもエンジニアライフのコラムニストの方が参加されますのでぜひお越しください。詳細はこちら