ローファイ日記

出てくるコード片、ぼくが書いたものは断りがない場合 MIT License としています http://udzura.mit-license.org/

もしぼくが採用するなら

今後役立つ日も来るかもしれないのでメモしておく。Rubyist寄り。

CSに全く興味がない人はきつい

計算機に関する学科を出ていなければ門戸を開かないと言うのは、人不足の現実から言っても厳しいだろうが、我々の用いる道具に関する最低限の足腰は欲しい。

  • エラストテネスの篩を説明できるとか
  • クイックソートの計算量のオーダは何で、それはなぜか説明できるとか
  • サブネットマスクとは何かを説明できるとか
  • 簡単な帳票を見せて、それをすらすら正規化できるとか

別に「たまたま知らない」とかはあり得るんだが、ポロポロ欠けていると、それまでの勉強の仕方を疑わざるを得ない感じがする。

とはいえ、Rubyistならウェッブ系と言うかサーバ寄りだろうからRDBやネットワークの知識はある場合が多い気もする(経験上身に付きやすいですよね)。でも、ぼくも割とアルゴリズムを勉強してるとかは大事だと思う。単純にいろいろな技術的ドキュメントの理解度が変わってくると思うし。あと、「必要にならないと勉強しない」か「投資的に勉強ができる」かも見られる。

コードを読む習慣があるかどうか

正直に言って(ことオープンな場所で)書く方は性格があると言うか、何を書いたものか思いつくと言うのはまた特殊な才能なのでぼくは意外と重視していない。仕事で何が必要か思いついて書ける人も多いと思う。

ただ、読む力が無いとか、読む習慣が無いとちょっと経験上きつい気がしている。

読む習慣が無いと:

  • 既存コードの理解が遅い
  • 既存コードの流れ・規約を損なわない改修ができない
  • そもそも、コードの読みやすさ、統一性、規約、プラクティスに関心が無い場合が多い。多くのOSSであったり、その他クローズドでも他のプロジェクトを読んでいれば、その言語に関する良い習慣が身に付きやすい。
  • コードレビューも読みが浅い、本質的なところを突けない

なんだかんだプログラマはコードを土台に議論するのが一番速い。

自分のツール=Rubyを客観視できているか

具体的には「どうしてRubyをやっているか」とか「どうしてRubyを選ぶか」が答えられる人がいい。結果、その答えが個人的にあまり納得感が無くても、シンプルすぎてもそれはそれでかまわないと思う(程度によるかな)。そういうメタな発想にそもそも至ることができるのが大事。

ぼくは、お仕事と言うものは基本的に現状に批判的な視線を投げ掛けて、どこか良くできないかを見つけて片付けていくものだと思っているので、まあ皮肉屋になれとまでは言わないけれど、「もっと良くできないか?本当にベストなのか?」みたいな批判精神を持ち続けられる人はとても高く評価したい。経験では、皮肉屋な人ほどチームの改善に意欲的であった。

少なくとも一番身近なツールであるRuby(or Rails)についてそういう考えを持てる人は、その他の身の上に降り掛かることについても科学的な態度を取れる可能性が高いのでは。

WebアプリよりGemがいい理由

と言ったが、正直なところ、Webアプリをちゃんと完成に導いている人はすごく評価できるが、とは言えそのコードの中身とかも評価しないとまずい場合もある。

で、Webアプリケーションつくった人ととRubyのGemプロジェクトをつくった人あれば後者を評価する理由は、後者のほうが

  1. 問題を発見して
  2. 抽象化して
  3. 解決の手段を提供して
  4. その手段を再利用可能にパッケージする

と言うフローを経ている可能性が高いから。というより、まともなGemは(すなわち、ライブラリは)そういうフローを経ていないとつくれない。

もう一点は、これはまるっきり個人の相性の問題なのだけれど、ぼくはプロダクトをとにかくつくりたい、なりふり構わないタイプの開発者より、自分の足下を撃つことができる開発者の方が仕事がしやすいので、Gemをつくっているのであれば足下を撃つ発想はまあできるだろう、ということもある。

むろん、すばらしく問題を解決しているWebアプリケーションは、良いGem同様評価が高い。ただ、たんにToDoアプリです、RSSパースしてみました、はちょっと違うんじゃないかなあと。あと、ダメなGemと言う可能性もある。結局コードが大事。

ここまで書いて思ったことは、読む方が大事と言った、とは言えコードを書いていないとこの段落で議論している評価軸の土台に乗れないなあ、とか思った。

Rubyistである前にプログラマプログラマである前にビジネスパーソン

大事なので最後に書いておくが、あまりに和を乱すとか、異常行動や反社会行動をとるとかは論外っぽい。

すごく能力がある人は、一定の枠から外れた行動を制御できるので、それはそれでいい。でも能力以上に行動の異常が目立つ人もいる訳で、それは結局すぐ会社を辞めていただかざるを得ないとかになってあまり実が無いのではないだろうか。

あと、まあ、組織なので基本はチーム開発、チームのモノ作りである。組織の空気にとけ込めるかな?とか組織をもっと良くするようなポジティブな行動はとれそうかな?とか、技術じゃない軸で人を見るのも大事なのかなあ〜などと。

あとなんだろ、必要とあれば政治とか根回しとかもできるプログラマの方が一緒に働きやすいです。

エクスキューズ

もちろん自分のことは棚に上げているが(採用は自分だけの問題ではない、組織の重要な意思決定である。可能な限り棚に上げて理想を追求すべき)、とは言え常々気を付けているぼくの価値観にドライブされたものではある。

あとまあ経験ベースな思いつきなので、根拠が薄いところもある(というか、多いね)。

それから言うまでもないことですが、ぼくの所属する組織がここに書いてある通りの基準を採用しているとは限りませんのでご留意を。これは、思考実験的な感じです。

追記

何となく燃えそうなので本を沢山紹介している記事への導線を付けちゃうぞ!!!!!!