2011年3月28日月曜日

職業プログラマになる人が、あと1週間でしなくてもいい7つのこと

このエントリーをはてなブックマークに追加
Clip to Evernote
Pocket

今春“プロ”グラマーになる人が、あと1週間ですべき7のこと」というエントリが人気だったのだが、どれも入社1週間前にするべき事、開始すべき事に思えなかった。

あげられている項目は、Hiroki Ohtsuka氏の在籍するジンガジャパン社で求められている技術なのは分かるが、普遍的なものに思えない。それらの理由を示した上で、本当に入社一週間後にプログラマになる人に必要だと思うことを一つだけ述べたい。

1.一般的なコーディング規約に目を通し、エレガントなコードを知る

元エントリに ─ スクリプト言語しか知らないのか ─ PHP、Perl、Ruby、Pythonで推奨オープンソースのコーディング規約があげられていて、コーディング規約を読んで勉強しろとある。これは、初学者向けではないので推奨しない

この手の学習は、文法などの言語仕様を把握した上で、基本的なアルゴリズムを理解し、さらにデザイン・パターンなどのコーディング方針を知った上で初めて役立つものだ。また、オープンソースのコーディング規約でも、良いお手本にならないケースも多々ある事は忘れてはならない。

2. 道具(PC,エディタ)を洗練させる

Ohtsuka氏は統合開発環境が嫌いなのだろう。しかし、Ohtsuka氏が好きな道具(vi? emacs?)で仕事ができるわけではない。統合開発環境を強制されるケースもあるし、低機能エディタしか使えないケースもある。色々なコマンドやエディタに慣れ親しんでおくのは悪いことではないが、職場で有効に使えるとは限らない。職場で使っているミドルウェアや開発ツールが分かれば試しておくのは良い事だが、入社1週間前に必要な事だとは思えない。

3. git と github を使いこなせるようになっておく

二つ問題がある。一つは、業務でGithubを使っている所は多くは無い。社外、しかも国外でソースコードを保持することになるからだ。次に、バージョン管理システムは、依然としてSVNが人気だ。Mercurialや、異機種混在環境で日本語ファイル名を扱えるBazaarも人気が出てきているし、必ずしもGitとGithubを選択しなければいけないわけではない。入社前に、会社で使っているバージョン管理システムが何かを聞いてから、それを試す方が良い。プロプライエタリなAlienbrainかも知れない。

4. 自動テストが書けないプログラマーはレガシープログラマー

テスト・コードを書けるようになれ、と言いたいらしい。なるほど、テスト・コードは書けたほうが良い。しかし単純な単体テストならともかく、ソフトウェアのテストは自動で収まるわけではない。ウェブやGUIアプリケーションのテスト自動化は難易度は低くは無い。

テスト・コードの作成方法は業務で覚えていくだろうから、最初はソフトウェアのテストがどういうものか理解する方が大事だ。「はじめて学ぶソフトウェアのテスト技法」を一読する方をおすすめする。

5.開発手法は学び続けろ!!

入社1週間前から、開発手法に関心を持ち、入社後も関心を持ち続けろと言いたいのであろう。これは会社ごとに開発体制があるので、3年目ぐらいから関心を持つ事をおすすめする。その会社の開発体制に嫌気が差しても、3年目ぐらいまでは転職に不利だからだ。そして、管理職が関心を持つべきことを、新入社員が関心を持っていてもはじまらない

6.祭典やイベントには顔を出して、積極的に交わる

入社1週間前から、祭典やイベントに関心を持ち、入社後も関心を持ち続けろと言いたいのであろう。これは、技術力向上目的では役立たないので、オススメしない。実際、何年間もPHP関連のイベントに参加しているが、開発能力が全く向上していない人は少なからずいる。コードを書いたり本を読んで覚える事は、イベント参加では得られない

7. ブログを書け!!

(6)に関連してブログを書けと言う事らしいが、自習のまとめとしても使えるであろう。ただし、これも余裕が出るまで推奨しない。最初のうちは、どんどんと色々なものに触れる方が良いからだ。ブログに時間を配分する価値は多くはない。

職業プログラマになる人が、入社前にするべきこと

もっと簡単で大切なことがある。色々なアプリケーションやサービスを試してみることだ。それもチュートリアルなどがあれば、正しく使いこなせるように、手順を追ってやって見る事をお勧めする。良いプログラマになるには、アプリケーションの良し悪しを知っておく必要がある。我流で書いていると、どうしても井の中の蛙で終わるものだ。。

もちろん、職業プログラマに必要な知識は幅広い。色々なアプリケーションやサービスを知っていても、それを実現する方法を覚えなければ、良い成果物を出す事はできない。しかし、学習には具体的な目標が必要だ。だから、利便性の高いソフトウェアを書けるようになるには、利便性の高いソフトウェアを知っておくべきだと思う。

0 コメント:

コメントを投稿