TIM Labs

楽することを夢見るプログラマになろう

| コメント(0) | トラックバック(0)
これは新卒準備カレンダー 2011春の一記事です。
これから IT 業界に入ってくる人たちに向けて。


お前誰よ
==========

このタイムインターメディアという会社に入って(確か) 6年目で、
マネージャ兼プログラマの仕事をしています。
あるときはお客様と話をしてプロジェクトの進行や仕様詰めなどを行う一方、
あるときはガリガリとプログラムを書いています。(最近はちょっとマネージャ寄りの仕事が多いですね)

開発するときの言語は PHP がメインですが、趣味では Perl や Ruby、Python も使っています。
最近はドキュメンテーションツールにハマっていて
blockdiagseqdiag などのツールを開発しています。


楽することを夢見るプログラマになろう
====================================

この業界で昔から言われている言葉に「プログラマは楽するために努力する」というものがあります。
自分がやっている仕事を自動化する/楽にするプログラムを全力で作るという意味です。

実際には楽するためのプログラムに苦労することになって、
結果的には全然楽にならなかったということも多いのですが、
プログラマの本質はここにあるんだと僕は思っています。

僕が作っている blockdiag や seqdiag もこの楽をするためのツールの一つです。
残念ながら blockdiag を作るための苦労と比べると僕が得た「楽さ」はあまり大きいものではないですが、
意外にも多くの人がこのツールを使って楽できそうという話です。


ちなみに、この「プログラマは楽するために努力する」という言葉は
僕が最初に聞いたころは「プログラムを書くこと」ばかりを指していたように思いますが、
今は「良いツールを選ぶ」ことや「やり方を見直す」ことも含んでいるでしょう。。
テストを自動化したり、開発サイクルを変えたりするのもしっかり「楽」ができますからね。

プログラマは頭脳労働者にあたるので、誰かに言われたことを愚直に進めていくのではなく、
自分なりに楽する方法を織り込んだ上で作業を進めていくと
きっと開発がもっと楽しく楽してできるはずです。


習うより慣れろ
==============

IT の世界では日々新しいツールやフレームワークが生まれ、新しくなっています。
そのため、技術者はそれぞれ本を読んだり勉強会に行ったりして常に新しいものを学び続けています。
でも、これを「勉強」という位置づけにしてしまうと辛く大変なものになります。

だから、僕は「勉強」はしないことにしています。
代わりに、自分に必要そうであれば調べたり使ったりすることにしています。
もちろん前述の通り「楽するため」であれば全力で調べ、使い倒します。

今までそうやっていろんなものを取り込んできたのですが、
振り返ってみるとこのやり方は二ついいことがあるんじゃないかと思います。
・自分に必要である、というモチベーション
・知識として、ではなく実践的に学ぶことができる


なお、僕が開発している blockdiag を例に挙げると、このツールを作るに当たってこんなことを覚えることになりました。

  • 環境系
    • Google AppEngine、パッケージング、buildout、Sphinx、分散バージョン管理(hg)、自動テスト
  • プログラミング
    • Python、SVG/PDF 出力、プラグイン構造、画像処理、数学的な知識
  • その他
    • 英語でのドキュメンテーション、勉強会での発表、依存ライブラリへのパッチ作成と取り込み交渉(英語)

こうして改めて挙げてみると、ツール一つ作るのにかなり新しいことに手がけています。
今振り返るといろいろ苦労をしていましたが、「楽をする」という強力なモチベーションがあったので
楽しんで開発することができました。


皆さんも勉強としてではなく、「自分のために」新しいものにチャレンジして欲しいと思います。
もちろん一人でやる必要はないので、周囲の仲間やコミュニティで助けてもらって進めていくのがいいと思います。
最終的に楽ができればうれしいし、そうでなくともなにか得るものがあるはずです。

ちなみに、自分には関係ないと思ってる人は、当たりを見渡すと実はいろんなことを見落としているかもしれません。


アウトプットせよ
================

これは他の人も書いていますが、何かにトライしたらアウトプットをするようにして下さい。
みんなが思ってるよりハードルは低いはずです。

以下、FAQ です。

  • こんなのまとめたって誰も読まないよ
    •    あとで自分が忘れたときのために書けばいいよ
    •    少なくとも昨日の自分は知らなかったわけだよね?
    •    実はみんな同じようなところでハマったりするんだよね。

  • 他にもっといいもの/いい記事があるよ
    •  別にいいじゃない。同じものが二つあっても困りはしないよ。

  • まだ中途半端な状態だから...
    •  とりあえず今の状態で見せちゃおう。あとで更新すればいい。
    •  他の人に見せると、なにかおもしろいことが起きるかも!


まとめ
======

大事なことなのでもう一度書きます。今北産業で。
  • 楽するために努力しよう
  • 習うより慣れろ
  • アウトプットせよ


最後にお薦めの本です。
僕は必要になってから読んだり調べたりするので、
普段ほとんど本を読まないのですが「ライト、ついてますか―問題発見の人間学」という本はおすすめです。


さて、次は @kwappa さんの番です。wktk して待ちましょう:-)

トラックバック(0)

トラックバックURL: http://labs.timedia.co.jp/mt/mt-tb.cgi/220

コメントする

このブログ記事について

このページは、tk0miyaが2011年3月23日 23:47に書いたブログ記事です。

ひとつ前のブログ記事は「ローカルマシン以外で動いているjvmをEclipseでデバッグする」です。

次のブログ記事は「mercurialでpush済みの名前付きブランチをリネームする三つの方法」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。