プログラマとってコミュニケーション力は重要
via dankogai:我々全員の知的生産性を10桁上げる方法
こういうのを見てると、やっぱりプログラマにとってコミュニケーション力は重要な能力はなんだなあ、と思った。
俺はハッキリ言って人間が大嫌いで、勉強会なんていかない。ブログもそんなに書かないし、はてな(ダイアリーやブックマーク)にはかかわっていない。
mixiなんてなにが面白いのかさっぱりだし、twitterなんて、意味がわかんない。なにがしたいの?という感じな人間。
もっと言えば、学生時代、体育祭や文化祭にすらほぼ出たことがない。飲み会にもほとんどいかない。そんな感じの人間。
こういう人間はプログラマに向いてないのかな。つーか人間的にダメですかそうですか。
やっぱり、人間社会で生きている以上評価は他人がしてナンボだと思うし、そうあるべきだと思う。
id:amachangやid:higeponは人当たりもいいし、謙虚で、勉強家で、前向きでということが一度も話したことのない俺でもわかっちゃう。それくらい人とコミュニケーションをとる能力が(現実、ネット問わず)優れているんだなあ、と思った。そして、どんどん上にあがっていく。
でも俺はそうはなれない。人当たりは最悪だし、俺程度の能力じゃ大したプログラマにはなれないな、とプログラマにすらなっていない後ろ向き男である。頑張って勉強会には行きたいなあ、とは思っているけど人が怖くていけない。コミュニケーション能力がある人からすれば、怖くないよ><という感じなんだろうけど、そっちがわの人間にはこっちがわの人間の事はわからないんだろうなあ。
俺はもしプログラマになるなら、ゴタクなしにプログラムのみを晒して、ネットの片隅で誰かが「これヤベーよ!」といってくれるような、それを見て「ニヤリ」とするだけのような、そんなプログラマになりたいな。ブログすらもたず、匿名でどっかのアップローダにポンッとプログラムだけ置いてるような感じだと最高にカッコいい。
皆に認められなくてもいい、誰か一人でも「ニヤリ」とさせられるプログラマでいたいなあ。・・・なんて。そんな無理なことは実践せず、ちゃんと人とコミュニケーションできるように頑張っていきたいと改めて思ったのでした。
2007年振り返りと2008年
遅ればせながら、あけましておめでとうございます。
一応、定番の2007年の振り返りと2008年の抱負といいますか、方針でもつらつらと。たぶん駄文なので、ここでsボタンを押して次の未読フィードにいくことをお勧めします。(何
2007年
生活的に
まずは就職しましたね。割と大企業でして、仕事もそれほど忙しくなく、いい感じです。福利厚生は分厚いです。プログラマのバイトを始めてから、学生ながらほんとにそればかりをやるような、そんな生き方しかしてこなかったので今はすごく新鮮です。
いわゆるアフター5というやつですか。仕事は仕事で趣味は趣味、という。割と興味が発散するタイプなので、このほうが自分のやりたいことをできていいかもしれません。バイトしてるときはWEB系の知識ばっかり、って感じだったんですけど自由な時間ができたので全般的な知識がついてきたのではないかな、と思っています。
もっと技術的にチャレンジングなところに戻っていくのかもしれません。ただ、やはりそれだけチャレンジングな場所にいくと技術的に見るとやはり若干偏ってしまうんじゃないか、っていうのもあってもう少し独学で全般的に知識をつけたいな、と思っています。
技術的に
アウトプットとか
そんなにアウトプットしてないですが
- お手軽Python Pluggableモジュール
- javascriptのパーサコンビネータ
- Python版Yahooテキスト解析APIライブラリ
- Python版Lingr APIライブラリ
- PythonによるNESエミュレータ
あたりですかね。NESエミュレータというとタイムリーにnaoyaさんがPerlで8ビットCPUを書かれていましたね。よければPython版もよろしくおねがいします(さりげに宣伝)。
ちゅーわけでですね、やっぱりPythonが多いですね。最近Railsはゲットーだなんちゃらと盛り上がってますけど、なぜかRails、Ruby界隈からはほぼ手を引いてしまいました。
最近自分の趣向というか、そういうのに気づき始めまして。Rubyよろしく、Railsよろしく急激に広まるモノって決してスーツ達の思惑だけじゃないんです。そういう「キャッチーさ」をもってるんです。なにか。でもですね、どうやら俺はそういうのが苦手らしいんです。どこかとっつきにくい、そういうものに惹かれるというか。Schemeとか、Perlってそういうタイプだと思うんですよ。そしてそういうモノのユーザーの底力って、やっぱりすごいなあ、と。
というわけでRubyから離れ日本では若干マイナーなPythonのほうにうつちゃったのかな、と(まぁ前にも書いているようにRubyのProcあたりがどうしてもキライってのもありますけどね)。
そしてPython以外ではScalaですよ。どう書くorgにチビチビ投稿しちゃってます。しかし、これだけ投稿してるのに、Scalaに関してほとんど書かない、という(笑 いい機会だから書いちゃおうかな。
なぜScalaか?
はじめはですね、そこまで深い意味はなくって。とりあえず今年はどの言語やろう、ってなったときにチョードErlangのおかげでActorを持つScalaが注目されまして。個人的に、単なる計算にしか使えない言語はキライで実用性(ネットからなんかとってきたりとか、ファイルいじったりとか)もないとあんまやる気にならないんです。
Erlangは・・・ねえ。もちろんやりましたよ。でも軽量プロセス以上のものを見出せなかった。一方ScalaはJAVAベースなので極端に言えばJAVAでやれることはほぼやれる。っちゅーかいっぱいいろんなものが詰まってるので色々おもしろそう、それだけ。
やってみた結果・・・いや、Scala面白いですよ。特に型に関して。今まで型推論ってOcamlかHaskellくらいしか触ったことが無かった。ジェネリックも正直そこまで深追いしてなかった。Scalaをやると型の奥深さに気づかされます。Scalaはアカデミックなベースをもっているってのもあって、文献も多くて学べることは非常に多かった(よくあるような紹介記事じゃなくてScalaのちょっと深い記事が読んでみたいよ、というかたは俺のブクマでもどうぞ。あんまりないですが・・・)。
Scalaの型について概観的にまとまっているのはコレかな。とっても面白いのでゼヒ。
あ、あとScalaのMLは絶対入ったほうがいい。関数型のバックグラウンドを持つ人が多く、関数型言語チックな議論、そして当然型について、結構良質な議論が多いですよ。
なんでもアリ
っという感じで型が一番なんですけどね、ほんと、なんでもありなんですよ。
JAVAのようなクラスもある、Haskellのような遅延評価も、関数合成も、パターンマッチも、モナドもある、モナドのための構文もある、型推論もある、でもダックタイピングもある、Ocamlのようなバリアントもある、Erlangの軽量プロセスのようなActorがある、Rubyのようなブロックも、ミックスインも、既存クラスの拡張もある、Pythonの__call__のようにクラスを関数として扱えたりもする。そしてJAVAのライブラリが使用できて、JAVAのクラスファイルを吐いて、チューニングしだいではJAVAと大差ないパフォーマンスをたたき出す。(ここであげた機能はあくまで「ような」もので元言語使いに言わせると色々文句おおいんですけど(笑))
ちょっとワクワクしませんか。
その他は・・・
結構言語よりの年だった気もしますが、若干低レイヤよりもあったかなあ、と。NESエミュレータなんかは割りとレイヤ低めですし、あとはですね微妙にFPGAに手を出してみたり(いやー秋葉が近いっていいですね)。他は・・・そうですね、一応ネットワークエンジニアの資格をとったりもしましたねえ。一応、一発合格でした。最近、ネットワーク周りでも技術的な記事を公開してくださる企業さんとかも多くてですね(書いちゃっていいのかな、Klabさんとか)、そういう記事をきちんと理解していく上でいい知識の整理になったと思います。WEBプログラマだとまぁ、keepalivedとかLVSの話とかですね。でも実は結構VRRPってなんじゃらほい、見たいな人も多いんじゃないかと。意外とネットワークって知らなくてもなんとなーく動いちゃったりするんであいまいになってたりすることも多い気がするんですよね。
2008年
そして2008年ですよ。とりあえず
- なにか1言語勉強する(基本)
- FPGAとかもっとやりたい
- アルゴリズムにもっと強くなろう
- Functional、手続き的、両方常に書けるように頭をキープしたい
- 流行に流されない知識をつけよう
- 音楽的なアウトプットも出していきたい
といったところですかね。俺、大学は文学部ですしずっと文系できたので計算機関連の知識ってここ3年くらいなんです。それまでPCは音楽を聞いたり、作ったりする道具だったんです。自分でいうのもなんですが、ここ3年、デキない文系アタマを酷使してそこそこのペースで勉強してきたな、と思っていたりします。もちろん、それでも全然、ほんとに全然ダメダメなんですけど。でもプログラミングのセンスもない、理系のアタマも持ってない、そんな奴が一応プログラムかいたりできるようになってるってことは結構がんばったのかもね、と。というわけで、今年は若干ペースを落として「充電」したいと思います。音楽はその充電に役立つと思います。
というわけで、今年もこのブログにはちょくちょく技術系の駄文だったり、Scalaあたりの記事、WEBプログラミング関連の記事でも書いていくと思いますのでよろしくお願いします。
どう書く?orgは多言語クックブックになれるか
最近は手が空いたときにまとめてお題をとくようになってきました。どう書く?orgです。あいかわらず、Scalaです。はい。
そのどう書く?orgですが、今のままだとちょっと「多言語クックブック」にはならない気がしてます。クックブックってのが曖昧ですが、あくまで俺の中のイメージのクックブックです。
一般投稿が可になった時に、ちょっと感じてたんですがやっぱり最近ある傾向が顕著で。というのは数学パズル系とか、(数学的な、事務処理などではない)アルゴリズム勝負!なお題ばっかりなんですよね。プログラミング自体が好きな人ってやっぱり関数型言語界隈の方々だったり、数学的なバックグラウンド持っている人が多いですから。一般投稿が可になればまぁそういう方々がお題を投稿してくださることが多いのかな、と思ってます。
もちろん、頭使ってそういうアルゴリズム考えたりするのは楽しいんですけどね、そればっかりだとちょっと・・・。ならお前がお題考えろ、ですよね、ほんとすみません。
- JPEGをGETして色反転して保存
- アクセスログのIPアドレスを逆引き
- ローカル変数の一覧を取得
こういうお題、結構好きだったんですよね。この言語ってどんなことできるんだろ、ライブラリとかそろってるのかな、っていういろんな側面を見せてくれるじゃないですか。
一方、数学パズル系とかだとほとんどがリスト処理とか、コレクションの処理になっちゃう。ぶっちゃけていえば、「その言語だから」っていうのが少なくなるって言うか・・・。大抵そのままほかの言語に移植可能だったり・・・。もちろん、Haskellだから、遅延評価だから、Lispだから、マクロだから、Cだからビット演算だから、とかはあると思うんですがね。
実用系のお題とパズル系のお題が3:7くらいだと一番個人的にはうれしいかなあ。
そんな私は、最近、ボーナスがでた勢いで(音楽用)キーボード、エレキギターを相次いで購入。あれほど音楽はもうやめよっかな、と思っていたのに。機材を実家においてきたのに。ほんとに好きなものって、やっぱやめられないんですね。願わくば、俺にとってプログラミングもそうであらんことを。