2013年04月01日

コミュニティに参加する上で最低限持っておくと良いもの

DSP 147: Thank You! 2007-10-11
taken by Bern Hart under CC BY-NC-SA

だいぶ前に「たのしい開発 スタートアップRuby」と「Pythonプロフェッショナルプログラミング」の献本をいただいておりました。ブログとか色々書くのが遅くなってすみません。4/1で、ちょうどスタートアップには良い時期だと思いますので、ブログエントリーを書きます。とは言え、細かい言語のことは書きません。あと、コミュニティ運営についても書きません。

これら本の良いところ

プログラムを書くということにはとても多くの活動が関わっています。具体的なモノの方が考えやすいと思うので、家を建てることに例えて考えてみると、どこに立てるか?家族構成は変化しそうか?どんな間取りにすればいいのか?予算はどうか?どこの会社に頼もうか?とかを考える必要があります。業務用の建造物なら、ビジネスとして成り立つか?採算は合いそうか?が大事です。

ソフトウェア開発も同じです。プログラムのソースコードを書くだけがソフトウェア開発ではありません。プログラミング言語を何にするか、データベースを何にするかなど、どれが最適かを選ぶ必要があります。より良い(性能とか修正のしやすさとかバグの少なさ)コードを書くのが大切ですし、そのためには勉強も必要です。仕事であれば、作る手間ができあがった成果よりも大きいとビジネスになりませんし、さまざまな人が関わってきてプロジェクトになっていくでしょう。趣味でも、時間が潤沢に使えるわけではないので、ある程度目標を定めて、フォーカスを集中する必要があるでしょう。

この2冊は双子のような本で「コードを書く」だけの部分だけではなく、貪欲にソフトウェアに関わる多くの項目を取り込んでいます。テストの仕方や継続的インテグレーションツールの導入などは共通しています。また、スタートアップRubyでは最後の章で、Pythonプロフェッショナルプログラミングでは最初のまえがきの企業の行動規範(著者はみな同じ会社なので)で「たのしさ」について語っています。

とは言え、一方は「スタートアップ」でもう一方は「プロフェッショナル」なので扱っている対象は微妙に違っていたりします。スタートアップRubyの方は、Rubyの基本文法から始まって、Railsを通じてコードの書き方を紹介しつつ、会社にどうやって働きかけて採用させていこうか?とか、勉強会を通じた勉強方法などを紹介しています。またRubyの文化やアジャイル開発についてもページをさいて説明しています。ゆるふわな雰囲気です。個人的にはRubyでは昔から咳プロダクツのファンなのでそっちの紹介もあればうれしかったですが、Rubyとは何かを学ぶ人には刺激が強すぎるかもしれませんね。

プロフェッショナルプログラミングの方は、.vimrcと.emacsの設定の仕方から始まり、Flask/Django/Google App Engineなどの開発を紹介しつつ、ドキュメンテーションや、分散バージョン管理、課題管理などを紹介しつつ、デプロイの自動化、パッケージ管理サーバを独自に立ててパッケージ管理みたいな、他の本で紹介されたのを見たことがないようなネタまで満載です。Python業界の専門用語ではこういうのを「毛深い」と言います。褒め言葉です。

もちろん、ページ数が無限につかえて、著者の時間が無限で、読者数と読者の財布と時間も無限であれば、全世界のソフトウェアのすべてのネタを100%網羅することはできるでしょうが、そういうわけにはいきません。どちらも、読者のステージにあったベストなものをピックアップして選んでくれています。どちらも学習していく上では良いマイルストーンとなってくれると思います。

このような本の著者になるために必要なこと

本を読んで勉強して、最終的にはどうなりたいでしょうか?もちろん、自由自在のプログラミング言語やツールを駆使できる、「すごいエンジニア」になる、というのもあるでしょう。すごい人とたくさん知り合いになりたいとか、これらの本に書かれているように日々を「楽しく」したいというのもあるかもしれません。中には、誰よりも詳しくなって、こういう本をいつか書いてみたい、と思う人もいるかもしれません。

すごいエンジニアになったり、楽しくなったり、本を書く上で一番ショートカットなのがコミュニティに参加することだと思います。すごいエンジニアというのを実感できるのは、他の人に頼りにされて、他の人に知識を伝えられるような人だと思うので、「他者」の存在なしには存在できないものです(圧倒的に他よりもすごい性能のライブラリを自作するとかでなければ)。同じような好奇心を持った人たちと交流するのは楽しいものです。

スタートアップRuby本にも会社内での自分のブランディングについて触れられていますが、勉強会などで「すごい人」と認識してもらうにも、何かしらの特化した分野を作る必要があるでしょう。もちろん、Rubyのまつもとさんや、PythonのGuido以上のパフォーマンスを発揮できる自信なら、特化させる必要はないと思いますが、たいていのケースではすごい人がまわりにいっぱいいるので目立てません。狭く深くを狙うのであれば特定のライブラリやツールの使い方に詳しくなり、海外由来のものであればドキュメントの翻訳をして公開したり、勉強会で発表したりします。幅広く、となると業務で取り扱ったりしないと経験値の増加量で他の人に負けてしまいがちなので厳しいかもしれませんが、幅広い分野で知名度があると強いです。それ以外にも、コミュニティ運営に参加するといった方法もあります。分野を決めたら、とにかく集中と継続が大事です。

もちろん、ニッチすぎてその分野自体が広がらないとダメですが、そこはある程度賭けですね。ただ、賭けに負けたとしても、そこで得た知識は容易に他の物に移転できるので、くよくよ考える必要はありません。「強くてニューゲーム」です。また、いろいろ勉強していれば「これは多くの人が喜びそうな技術だから将来はやりそうだな」とか、「これは興味を持つ人は多そうだけど、情報がまとまってないからまとめると喜ぶ人が多そう」とか、鼻が利くようになってくるはずです。実際には、勉強会などで同じジャンルに興味を持つ人から「こんなのが出たらしいよ」「誰か翻訳しないかな」「誰か情報まとめてくれないかな」的な情報が得られることが多いため、そこまで賭けっぽくはないです。ドキュメントの整備など、基本的にコミュニティは人で不足です。自分が頑張れると思ったものを見つけてアクセルを踏めば大丈夫です。

特化した分野で自分のプレゼンスが上がってくると、勉強会などに参加しても一目置かれるようになります。Ruby用語(咳用語)では信用貯金が溜まった状態といいます。本を読んで「俺知ってる」だけでは信用貯金は増えません。何らかのアウトプットを出して他の人を幸せにした分だけ貯金が増えます。信用貯金が増えると、自分は相手の名前を知らないのに、相手は自分を知っているというケースが増えてきます。IT系の勉強会の場合、出版社の編集さんと知り合いになれるケースもそこそこ多いですし(ビジネス書だとまず期待できないので、企画書を送りまくるとかする必要があるらしい)、本を書いたことがある人ともすぐに知り合いになれるでしょう。信用貯金が高ければ「こういう企画があるんですが、一緒にやりませんか?」と声がかかるようになります。

継続が大事

個人的にはITの世界で知名度を上げるのって、そんなに難しくないと思います。スタートアップRubyも、Pythonプロフェッショナルプログラミングも、2012年の時点でのベストなものを紹介してくれていますが、Rubyは2.0が、Pythonは3.3がリリースされました。状況はどんどん変わっています。本に書かれた内容の中には古くなってきてしまうものもいくつかあります。新しいものがどんどん出てくる状況は、誰にとっても信用貯金を貯めるチャンスです。その中でも、継続してコミットメントし続ける方が有利ですし、蓄積があるほどキャッチアップがラクになっていきます。

多くのものが次々に生み出されています。学ぶことをやめれば持っている情報は古くなります。つまり、歩き続けるだけでもそれが差別化になります。もちろん、動きを止めたとしても、その中で得た流行によらない知識は次のステップを踏み出すエネルギーになりますので無駄なことではありませんが。

補足しておくと、ちょっとぐらいバージョンが古くなってもいきなり価値がなくなることはありません。さすがに5年とか10年とか古くなると、いろいろなものが大幅に変わってしまいますが、ちょっとした差分なら容易にキャッチアップ可能です。新しいものを中途半端に学ぶよりも、じっくり腰を据えて一度しっかり学ぶ方が価値が高いと思います。僕がC++/アセンブラを学んだのはC++98で16ビットCPUでi386という環境でしたが、今でも十分に通用する知識は得られました。また、これらの本で扱われているRubyとPythonのバージョンも、すぐに使われなくなることはなくて、今後もしばらくは利用され続けると思います。

感謝の気持を大切に

何か一つ選ぶとしたら「感謝」の気持ちです。イベントや勉強会に参加する上で、「運営の人は、自分の時間を削って日本のIT業界のために勉強会を開催してくれている。自分たちが学んだ情報を惜しげもなく提供してくれているんだ」ということを知っておくことが大切です。

ステップアップするためにコミュニティや勉強会に参加しよう!というのは重要な一歩です。もちろん、Pythonプロフェッショナルプログラミングを書いたビープラウドのように、所属している会社内で十分に刺激が得られる場合もありますが、なかなかそういう恵まれた環境に最初から入れることは少ないでしょうし、そういう会社を見つける上でも勉強会やコミュニティは役立ちます。

スタートアップRubyでは、コミュニティの運営委員に参加してみよう、と軽く紹介されていますが、一度やってみるとわかりますが、イベントや勉強会を開催するといろいろ気を使う必要があります。会場の費用がかかる場合とか、 飲み屋で懇親会を開催しよう、合宿をしてみよう、などまとまった金額のコストがかかる場合はなおさらです。最近は事前に集金できるイベント・サービスも出てきたみたいなので負担は減りつつあるかもしれませんが。

勉強会と言うとよく話題になるのが無断キャンセル問題です。僕がコミュニティ運営に関わりはじめた10年ぐらい前にはすでに登録はするけど、勉強会に参加しない人は一定数いました。もちろん、当日急に仕事が忙しくなって、というのはありえますし、犯罪扱いすることはありません。ですが、3〜4年ぐらい前?にATNDなどのイベント運用サイトができて、気軽にイベントに「参加」できるようになって、「申し込んだけどすっかり忘れていた」的なことは増えてきた気がします。特に無料の場合「行けるかどうかわからないけど、すぐに一杯になりそうだしとりあえず参加にしておくか」という気持ちになることもあるでしょう。

無断キャンセルは、他の「参加したい」と思う人の参加を邪魔してしまいますし、思ったよりも参加人数が少ないと、運営の人もがっかりします。少人数の場合には心配させてしまうこともあります。自分の時間を使って活動するからには、なるべく多くの人に参加してもらって、盛り上げたいと思っているはずです。当日に補欠から繰り上がってもなかなか時間が合わせにくいこともあるので、参加できないと分かった時にはなるべく早くキャンセルしましょう。どうしてもギリギリになって参加できなくなってしまったとしても、その旨をきちんと伝えましょう。無断キャンセルをするようでは信用貯金はたまりません。また、申し込みしてないのに「なんとかなるだろう」と考えて凸をする事例を聞いたことがありますが、そういうのも絶対にダメです。運営をわずらわせて困らせることは絶対にダメです。運営のブラックリストに載せられてしまうと挽回は難しいでしょう。

まとめ

新しい年度で何か新しいものを学ぶなら、ぜひ目標を決めて、深く深く勉強しましょう。毎年1つの言語を学ぼうみたいなことを言っている人もいますが、僕はそれにはあまり賛同しません。数を増やすことに意味はありません。自分のブランディングにするぐらいの覚悟で深めることが大事です。自分の軸もないのに風呂敷を広げても意味はないです。軸ができれば、他の物を学ぶことはそれほど苦ではなくなるでしょう。

深めた知識をさらに深くしたり、それを他の人に還元して信用貯金を稼ぐには、コミュニティ活動や勉強会に参加することが役立ちます。参加するからには他の人に迷惑をかけないように、というのが最低限のラインです。何かを生み出すコミュニティの場合には行動規範を明文化されていることもありますが、そのようなものがなくても、中の人の苦労を考えて、その気持に答えるように心がけるだけで、まずは十分かと思います。

補足:すっかり書いてない気分になってましたが、Pythonプロフェッショナルプログラミングのブログエントリーは書いてました。子供が生まれてすっかり生活が変わりすぎて、昔のことは忘れてました。

posted by @shibukawa at 13:45 | TrackBack(0) | 日記 はてなブックマーク - コミュニティに参加する上で最低限持っておくと良いもの
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/64246466
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック
検索ボックス

Twitter

www.flickr.com
This is a Flickr badge showing public photos and videos from shibukawa.yoshiki. Make your own badge here.
<< 2019年02月 >>
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28    
最近の記事
カテゴリ
過去ログ
Powered by さくらのブログ