今春“プロ”グラマーになる人が、あと1週間ですべき7のこと

プログラミング
photo by andercismo
4月から就職してプログラマーになる人たちは、もう1週間を切った頃ではないでしょうか。新しい生活や覚えるべきことがたくさん待ち構えていると思います。そんな新生活にスタートダッシュをするためにも準備は大切。プログラマーがプロの階段を上り始めるために必要な7つのことを書き出してみます。
本当は新卒準備カレンダー 2011春に参加が乗り遅れてしまったので、勝手に同じようなテーマで書かせて頂きます。

スポンサーリンク

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

エレガントなコードを書くためには、エレガントなコードを知らなければならい。その土台を築いているコーディング規約について、オープンソースではどのようなものが使われているのか理解しておこう。入社する予定の会社が採用している言語については必ず目を通しておこう。

PHP

Perl

Ruby

Python

そして、あなたの身近にあるオープンソースのコードを実際に読んでみよう。この時点でコードの仕組みや設計が理解できなくても良い。コードがエレガントかどうか?を感じ取って欲しい。こう書いた方が、良いのではないか?など、考えてみよう。



デザインパターンに関する知識もあると尚良いが、知識だけならず実際にいくつかコードが書けることが重要である。

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

“プロフェッショナル”や日本古来から存在する“職人”や“匠”と呼ばれる人たちは、自分たちの道具にこだわりを持っている。あなたがプログラマーになるのであれば、道具はきっと、PCやエディタだろう。
達人プログラマー曰く、道具には、学習段階と適応段階というものがあり、手に入れたばかりの道具は、あなたの手には馴染まないだろう。道具の個性を理解して、独自の方法で磨き上げて維持していくことにより、あなたの手に馴染みはじめる。そうすれば、その道具はあなたの能力を増幅させるだろう。多くの新人プログラマーは、特定の統合開発環境(IDE)にしがみついてしまい、IDEの制約を超えた地点に到達することができていない。

道具(エディタ)の条件

エディタは以下の条件をすべて満たしていることが望ましい。これを機により良いエディタ(道具)に乗り換えてみてはどうだろうか?個人的には emacs をおすすめする。優れたプログラマーとそうでないプログラマーの生産性が50倍以上違う秘密はこういった道具にも隠れている。

設定可能であること

フォント、カラー、キーバインド、ショートカット、ありとあらゆることが設定可能であること。

拡張性があること

ありとあらゆるプログラミング言語に対応して、ユーザー自身が拡張可能であること。

プログラム可能であること

マクロや組み込みの言語を用いて、エディタ自身がプログラム可能であること。





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

ソースコード管理は、もはや常識である。複数人で開発をする場合、ソースコード管理されているからこそ、大胆な変更や管理、統合などができるのである。近年では git に代表される分散リポジトリ型が主流だ。オープンソースに携わるプログラマーであれば、github が使えるのは最低要件だろう。転職の際に書類選考と同時にgithubのソースコードを見られるなんて話もあるぐらいだ。
github_logo_social_coding_outlined

身につけておきたいこと

  • リポジトリの作成
  • ブランチの作成
  • マージ
  • コミットログの書き方
  • コミット方法
  • ソースコードの差分の見方
  • GitHub Flow/Git Flowの理解


git のメンテナーである濱野さん自身が書いている書籍である。プロでもそばに置いておきたい1冊である。無料で読める資料としてはPro Gitが特におすすめ。

この書籍はGitの簡単な操作法からGit Flow/GitHub Flowを実際に試しながら学ぶことができる。GitHubを現場で使えるための実践的なガイドとして執筆された内容になっている。

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

自動テストが書かれていないコードをレガシー(遺産)コードと呼ぶ。自動テストを書いていないことによって、管理工数を増大させ、メンテナンスを難しくしている、現代にとっての遺産である。このような遺産を生産するプログラマーを“レガシープログラマー”と呼ばせて頂こう。

レガシープログラマーにならないためにも、テスト駆動開発(TDD)は身につけておこう。
新人プログラマーが「できました!」と言って、早速動かしてみると、上司の目の前でアプリケーションが落ちるなんて経験は誰もが心当たりのあることではないだろうか。
お金をもらってコードを書くということは、それが、上司の前だけではなく、顧客の前、ユーザーの前で同様のことが起きてもあなたは、じゃあ、すぐに直してください。で済まされるだろうか?
新人同士が集まって、新人研修時にそのバグは僕が書いたコードが原因ではないよ。と証明して、「じゃ、お先に!」って言って先に帰宅するためにも、テストコードは有用です。
そして、勇気を持って、コードの大規模な改修(リファクタリングを含む)や機能追加を実施するためにもテストコードがあることによって、エンバグすることなく、実施するためにもテストコードは必要です。
TDDはもやはスキルであり、身につけられるものです。身につけたプログラマーは、何倍も信頼できるコードを生産することができるし、デバッグやバグ修正に多くの時間を費やされることなく、生産に集中することができます。
TDDを身につけるためには、とにかく手を動かすことが重要です。特に写経することをおすすめします。

ケント ベック¥ 3,150

写経方法

  • ブックスタンドに書籍を固定する
  • git などのリポジトリーをつくり、すべてその配下で作業をする
  • ひたすら書籍に書かれているコードを書いて学んでいく
  • 章ごとにコミットやタグをうつ
エジソンの読書用品¥ 2,190
エレコム¥ 1,167 (38% OFF)

テストを書かない人とは一緒に仕事をしたくない。という巨匠も多い、今日この頃ですよ。

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

ここまでプログラミングにまつわることを書き連ねてきましたが、職業プログラマーにとって開発手法をおろそかにしてはいけません。組織がより生産的になるためにおこなえることはたくさんあります。あなたが入社予定の会社が採用している開発手法を知識として学ぶとこから始めてみましょう。専門用語など、知識でとらえているだけで飲み込みがずいぶん違うはずです。

Jonathan Rasmusson¥ 2,730
Scott Berkun¥ 3,360
James Shore¥ 3,780
Mike Cohn¥ 3,360

特に会社が開発手法を採用していないのであれば、アジャイル開発手法を学ぶことをおすすめします。生産性を上げるためにどういったコミュニケーションを行うべきなのかを学ぶことができれば、あなたを人としての学習効率を飛躍的に向上させるでしょう。

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

大抵のプログラミング言語は年に1回以上、祭典のようなイベントを実施するはずです。
RubyだったらRubyKaigi、PHPだったらPHPカンファレンス、PerlだったらYAPC::Asiaなどなど。
こういったイベントには必ず参加しましょう。費用はとてもかかるでしょうが、その費用とは代え難いエネルギーをもらえるはずです。より一層その言語が好きになり、来年までにはこう言ったことができるようになろう。という目標も芽生えるでしょう。
そして、何より仲間が増えるでしょう。積極的に仲間を増やしましょう。いつも読んでいるブログの著者がいるでしょう。ぜひ、声をかけましょう。いつも記事を読んでますとか、あの記事はよかったです。とか。何でもいい。名刺交換だけでもいい。リアルに技術者達と交わりましょう。きっといつかはあなたは逆の立場になれるでしょう。
それが費用を惜しんだばかりに、意欲やモチベーションが持たずに、いまいちいけてないプログラマーになるか、最先端を走り抜け、情報を発信する側の魅力あふれるプログラマーになるかの違いです。
といっても、遠征して参加するほど費用がかかる人もいるはず。ぜひ、遠征して欲しいのですが、地方で開催されるイベントに積極的に参加しましょう。参加だけでなく、LTで発表したり、運営のお手伝いを積極的にしましょう。

7.ブログを書け!!

イベントの終わりは、家に帰ってブログを書くところまでです。情報を発信できるプログラマーになりましょう。最初はあなたが学んだことの忘却録でもいい。それは、他の人には役に立つし、数日後に自分にも役に立つ。
同じ会社にいなくても、技術者通しでの情報交換や交流ができるはずです。ブログだけではなく、コミュニティやメーリングリストへの参加もすると、より望ましいでしょう。

まとめ

尊敬するようなスーパープログラマーは、才能やセンスだけで、尊敬されるような存在になったのでしょうか?僕は違うと考えています。並ならぬ努力があったからこそ、センスや才能も発揮されると考えています。人は学ぶ力を持っています。学ぶ力は鍛えることができるはずです。どんどん鍛えて、眠っている才能やセンスを開花させましょう。
そして、書籍を読んだりすることも重要ですが、実際に他のプログラマーとあって、話をきいたり、ペアプログラミングをしたり、ソフトウェアのパッチを作成したりする方が、より多くのことを感じることができ、喜びを分かち合うことができます。
意欲あふれるプログラマー達が喜びに満たされる日本であることを願って、この記事が参考になれば幸いです。

和田 卓人¥ 1,995
タイトルとURLをコピーしました