tagomorisのメモ置き場 RSSフィード

2011-06-08

いっしょに仕事をしたいプログラマ 5つの特徴

ちょっとこんなことを考えるきっかけがあったので、ざっと書き出してみた。Webに公開されている情報からあるプログラマについて見てみたとき、どういう人ならいっしょに働いてもいいかについて。

ここに書く内容はソースコードの品質以前の問題についてのみにしてある。だからこの特徴を満たしていればどうということに直接なるわけではない。ただ、欠けているところがあれば、少なくとも自分はその人といっしょに仕事をしたいとは思わないだろう。

なお自分は現勤務先の採用活動にはかかわっておらず、このエントリの内容は勤務先の採用基準とは全く無関係です。

学生さんなどの場合にはまた話が違うと思います。

あと割と自分のことは棚に上げてます。「お前これできてねえじゃん」という部分については都度ご指摘をいただけますと大変ありがたく思います……。

1. その人が書いたソースコードが公開されている

日本語で何を言われてもぶっちゃけよくわかんない。口だけが異様にうまいんだけどコード見てみたらうへえ、どころか本当に全く書けなかったりする人もいるし…… 。

もちろん公開できないような場所で公開できないようなコードをずっと書いてきてすごい技術の持ち主というのも世の中にはいっぱいいるに決まっていて、そういう人をうまく見付けてこられればいいんだろうけど、自分には無理です。だから見えるところにその人の書いたソースコードが何かしらある、というのが最低条件。

ぶっちゃけ、blogエントリのコード片でもいいと思うんだよね。ただ、いつも読んでるblogならともかく、ある人について調べるときにblogを全部読み返すのはちょっときついから、判断のしやすさで言えば、適当なサイズのライブラリ/プロジェクトがどこかのサイトで公開されているというのが簡単かな。

2. バージョン管理システムを適切に使っている

ソースコードzipで固めてどこかに置かれているだけ、というのは判断が難しい。バージョン管理システムを使えない人とはいっしょに仕事はできない。

github(git)/bitbucket(Mercurial)/Google Code(Subversion/Mercurial) などに置いてあってほしい。どういうcommitが行われているかの履歴がちゃんと見えると嬉しいな。

ちなみに最悪なのはzipだけで置かれてるコードを見てみたら中身にコメントで「ここは〜(その人の名前)が修正 何月何日」みたいに書いてあるとか、そういう感じのやつ。業界によってはかなりの割合でいるのがおそろしい。

3. 複数の言語のコードが公開されている

公開されているコードがすべてひとつの言語で書かれていると、見てみてもいまいち判断がつきかねる。個人的にいちばん判断がつきかねるのはすべてJavaのコードの場合、およびすべてPHPの場合。

2つ以上の言語のコードがあればそれぞれについてどう考えているのかを想像することもできなくないし、少なくとも「言語について何らかの価値観、選択肢と判断基準をもっている」ことはわかる。これがないとちょっといっしょに仕事するのはきついよね。

ちなみにPerlばっかり書く人が本当にPerlだけしか書けないというのはほとんど見たことがない。*1

4. その言語のコーディング規約や慣習に従う

言語によって、クラス/関数/変数/定数名をどういう命名にするかなどはもちろん異なっている。文法で縛られている場合もあるが全てではなく、自由なんだけどコーディング規約的にはこうしてね、とか、決まりではないんだけどいろいろな人のコードを見ると普通こうしてるよね、とかいう割合は多い。

で、それに反したコードを平気で書いてしまう人というのはちょっとアレな感じだ。他の人のコードを読まないのかなーとか、自分のコードのメンテするのがきつくないのかなーやらないのかなーとか思う。具体的に言うと、そんなコードを自分はメンテナンスしたくない。

またコードの字面だけじゃなくて、ソースコードツリーにおけるファイル配置がどんな感じなの、とか、ドキュメントファイルの書き方とか、そういうあたりもこの項目に近いものがあるかな。

使用する環境やライブラリの特殊事情が絡む場合もあるし、そもそも自分がよく知らない言語の場合にはよく分かんない場合も多そうだけどね。

5. 人のコードにパッチを送る

これは実際やっててもぱっとは見えない場合が多そうだけど、いちおう。

誰かが公開しているライブラリ/ミドルウェアに自分には都合が悪い部分を見付けた場合、それにどう対処するかはいっしょに仕事をする上で大事な点だと思う。バグは直せば(そしてパッチを送れば)いいけど、機能的な違い/要望の場合はなかなか難しい。そこに対処して元のコード/動作/APIと折り合いをつけつつ問題を解決するようなパッチを書ければ、それはすばらしいことだ。ぜひいっしょに仕事したい。

アレなパターンは「まるっとコピーした上で元の動作やAPIを破壊しまくった変更を加えて、元のプロジェクトとは完全に別個に置く」ようなやつ。なんというか、つらい。元のプロジェクトが進化したらマージはどうすんのとか、API変えられたら相互に差し替えもできないじゃんとか、本当に変更後の方がいいと思うなら元プロジェクトにフィードバックした方がいいに決まってるのになんでしないのとか、いろいろと考えさせられる。仕事で書くコードにそんなことされたらたまらん。

結論

結論なんてもちろん無い。ここに書いた内容は人によっては「こんなの守ってる、少なくともできるだけ守ろうとする、のは当然だろ」とそれこそ当たり前のように思う人もいるだろう。そういう人は履歴書職務経歴書今後もいっしょにやっていこうぜ。

でも現実問題として特定の会社に閉じて生きてきた人とかだと、どれひとつとして満たしていない人もいる。いっぱいいる。そういう人たちにこのエントリが届くことは残念ながらほとんど無い気はするけど、でもまあ、もしかして届くことがあるといいな、それで少しでも意識が変わることがあるといいな、と思ってる。

*1:掲示板作ってみましたレベルの人の話はいまはしていない。

nknk 2011/06/08 17:11 5. 人のコードにパッチを送る の項が気になったのでひとこと
貴君の職環境では真理だと思われますが、ミッションクリティカルなシステムでは自分が再利用しようとする既存コードにバグがあった場合は、まるっとコピーしたうえで修正したものを使うことが多いです。
既存部に手を入れたときに、既存の機能に影響がまったく出ないことを証明することが難しいからです。

tagomoristagomoris 2011/06/08 18:00 > nkさん
パッチではなく丸ごとコピー&上書き修正だとソースコードのどこに修正が入ったのかが明確にならず、むしろ既存の機能に悪影響を与える可能性が高くなるように思われますが。
世の中にはいろいろな状況のプロジェクトがあるものですね。

YaSuYuKiYaSuYuKi 2011/06/08 18:14 単に、どこに修正が入ったかを明確化するだけなら、コピーした、修正前のコードをバージョン管理システムにコミットし、その上で、修正をコミットすればよいだけではないでしょうか。
もちろん、こんなことを行えば、DRYさが急激に損なわれるので、メンテナンスは困難になるのは眼に見えていますが、「その処理を呼び出している箇所が256箇所あり、そのすべてに対して影響がないことを保証しないといけない。バグの影響があるのは、そのうちの1箇所だけ」という状況に、現実的な時間内で対応する必要がある場合には、選択肢としては、ありえないとは言えないでしょう。

私は、あまり関わりたいとは思えませんけどね。

マジレスマジレス 2011/06/08 19:34 > nkさん
言っている事はわかりますがいっしょに仕事はしたくないです

とくめいとくめい 2011/06/08 21:20 > nkさん
>既存部に手を入れたときに、既存の機能に影響がまったく出ないことを証明することが難しい

プロダクトコードをテストケースで保護すればいいだけの話ですよね?
「レガシーコード改善ガイド」を読むのをおすすめします

hide5stmhide5stm 2011/06/08 22:51 >プロダクトコードをテストケースで保護すればいいだけの話ですよね?
テストをやりなおすのが大変なのですよ。
そもそもxUnitによるテストケースを作成できない要因があり、
xUnitに成功したら品質保証できるというものではないです。
本番環境に近いテスト環境を用意し、機器の設定を変更しながら、
手動でテストしていくと数ヶ月かかるとかザラです。

かきくかきく 2011/06/08 23:17 バージョン管理やらソースコードに拘っていた時期がありました。独立したらわかると思うけど2人以下で作業する場合は、あなたの言う一緒に作業したくない項目でやるのでベストですよ。

かきくかきく 2011/06/08 23:25 ホリエモンも独立当初は、あなたが一緒に仕事をしたくない方法で資金確保して今のライブドアがあると思う。逆に一人で効率よく作業するのはどうしたらいいか?考えるのも視野が広がって刺激になると思うよ。

マジレスマジレス 2011/06/09 00:25 > かきくさん
言っている事もわからないしいっしょに仕事もしたくないし依頼もしたくないし知り合いにもなりたくないです
バージョン管理やテスト、他に例を上げれば自分が知らない新しい技術等手間や勉強が要ることにことごとく難癖をつけては逃げ回った挙句捨て台詞まで吐く様な方とは本当にいっしょに仕事したくないです

パパパパ 2011/06/09 01:18 うちには10歳になる娘がいてもうVCSの虜です、はじめはCVSから・・なんて思っていましたが知らない間にgithubにアカウントを作っていて「パパのさーばーSVNなんだもーん、だっさーーい」なんて言われちゃいました、ほんと子供って残酷ですよね、この前はmake testが通らないもの上げたクラスの同級生を散々罵ってましたし将来結婚の相手に困らないか本当に心配ですがバージョン管理しない人とはいっしよに仕事したくないですね

...... 2011/06/09 02:09 『プログラマ』と『コーダー』を勘違いしてる業界の人がいっぱい沸いてるな。
一緒に働く前に、『プログラマ』かどうか判断する前提としてはだいぶ有効。これが出来ていれば、あとはその公開ソースで力量を見て、問題なければ面接などで人間的な面を見てから採用というのが理想。なかなか居ないんだけど。

『プログラマ』を採用したつもりで居たら『コーダー』だった・・・みたいな地雷は勘弁。

マジレスマジレス 2011/06/09 03:15 > ...さん
どんな苦労があったのか(現在もあるのか)わかるものがあります。
優秀な人材を獲得できるのは優秀な人材から「いっしょに仕事をしたい」と思われる者でもあります、しかし世は不条理で小さな規模の優秀なエンジニアにとっては自身の努力に対してはやってくる求人の質に納得がいかない状況もあると思います。
しかし世の中がどうだろうが何だろうが自分の置かれた状況を好転させるそこそこ効果的な方法は"自分がアクションを起こす事"です。
自分の力に本当に自信があるなら起業でも転職でも社内での企画・提案でも何でもすればいいと思います。
そういう積極的な人とはいっしょに仕事をしたいです

なおなお 2011/06/09 14:07 ふふふ。正解は無いよ。

HH 2011/06/09 15:39 コード公開しているからといって一緒に働きたいとは思わないな。公開してるコードでも致命的なエラー抱えているものにであっているし、検索のトップにもそういったコードが出てくることもある。

otsuneotsune 2011/06/09 19:00 >Hさん
コード公開してるんだから少なくとも書き方のスタイルだとかcommit履歴でダメな人なのか「有能なんだけど、そのソフトの致命的エラーに興味がないだけで放置してる」のかは推測可能だよね。
コード非公開だとそもそもそんな推測すら出来ない。

aa 2011/06/09 22:18 自社サービスを作るPGとかなら、まー間違ってないでしょうねって感想
保守部隊が別にいるとか、派遣的なその場だけ要員のPGを長年やってる人には厳しい条件かも

WEB界隈で働いてるなら5以外は欲しいし、公開までいかないにしろソースを見せられるサービスのひとつでも作ってないとダメでしょう

balnebalne 2011/06/09 22:45 つうかコレタイトル関係なしに低スキルな奴を貶したいだけじゃんよ…
こんな人が先輩に居るとかマジ凹むわ(´Д`;)

fukkenfukken 2011/06/10 13:14 「低スキルな人間とは仕事をしたくない」というのはごくごく自然な感情に思える。仕事が増えるし、完成度も落ちる。

たとえば「コードにセンスが無い」「手が遅い」などの、努力では達成不可能な項目や主観的な項目があれば話は変わってくるけど、挙げられているのはすべて「○○せよ」であり、つまりやろうと思えば容易に達成できる事。

フリーのエンジニアフリーのエンジニア 2011/06/10 17:47 tagomorisさん経験不足な臭いがぷんぷんしますね。

フリーのエンジニアフリーのエンジニア 2011/06/10 17:47 tagomorisさん経験不足な臭いがぷんぷんしますね。

かきくかきく 2011/06/11 10:34 tagomorisさん、人間には感情があるのですよ。
あんたのような腐った性格の人と誰がいっしょに仕事するんですか?時給5000円くらい出してくれるなら考えますがねw

かきくかきく 2011/06/11 10:48 いっしょに働きたくない人は、いつも理論的に話をしないとコミュニケーションが取れない人。時間ロスが大きい。一を聞いて十を知る人と仕事したいです。tagomorisさんは左脳派の傾向が大きく視野が狭い思考回路

rararara 2011/06/11 10:57 左脳・左脳派(PG)の人間がいくら行動したって業界に変化を起こすなんて無理無理。右脳・左脳派(SE)でないと業界に変化をもたらすことは無理。

かきくかきく 2011/06/11 20:48 優秀な人材を獲得できる方法は、その仕事が面白いかどうかだよ。
面白法人カヤックみたいな会社。tagomorisみたいなのがパートナーだと気が滅入る

かきくかきく 2011/06/11 20:57 堀江のいないライブドアなんて全く魅力を感じねーw
ライブドア社員ならライブドアブログで書けよ。あんたの記事がライブドアの価値下げてるのわかってる?w

かきくかきく 2011/06/11 21:08 面白法人カヤックのサイコロ給とか革命的だよ。スキルの違いなんて。そんなに大差ないってこと。いっしょに仕事したいプログラマて、あんた何様のつもりですか?て思われるよw。変なのがライブドアに入って欲しくないのもわかるけどさ

かきくかきく 2011/06/11 21:15 黙って便利で役に立つコードだけ記事にしてろ。余計なこと書くな、あんたが本当にライブドア社員ならね。

かきくかきく 2011/06/12 01:07 tagomorisさんPGなんて35歳を過ぎた使い捨てですよ(マジレス)。どんだけ頑張っても20代には勝てないって発想力にしてもそう。PGで蓄積したスキルは3年後にはゴミになってる。20代のときはプログラムだけじゃなく色んなことに視野を広げて冒険しなきゃ人生もったいないよ。

norinori 2011/06/13 09:46 自分より低レベルの人と仕事したくないという人とは一緒に仕事したくないなー

あ 2011/06/13 17:42 自分のルール以外のPGとは仕事したくないとかまじわろ。

あ 2011/06/13 17:47 // ←ここにスペース入れないでコメント書くと切れだす人間未完成タイプなスメル。

////// 2011/06/14 00:59 これ「フリーのエンジニア」から↑まで全部同じ人だったりして...

かくきかくき 2011/06/14 03:41 自分より低レベルの人と仕事したくないて、自分がそう思われてたらどう思う?
上には上がいるんだし、なるべく合わせてねっていう思いやりの気持ちがないと
誰もついてこないよ。スキルに差が生じるのは当然。お互いにストレス溜まらないように接することが自分のため。いちいちイライラしてもしょうがないじゃんw

ななしななし 2011/06/14 03:49 「ら抜き言葉を使う奴と会話したくない!」
「話し言葉と書き言葉が区別出来ない奴は死ね!」
などと言って吹け上がっている人とかわりませんなあ。
漫画に出てくるイタリア人に「プログラムの教師かよお前はよおぉぉ」って言われますよ。

うーんうーん 2011/06/14 14:15 コメント欄を読んでいると、よっぽどコンプレックスが強いんだなぁと感じますねー。ずっと固執、粘着していてみじめ。ああなったら、もはや生きている価値がないわ...みなさん反面教師にしましょう。

うわぁ…うわぁ… 2011/06/15 21:24 こんな奴居るんだなー

こうして欲しいって言ってることは分かるけど、こういう口利く奴とは仕事したくないよね
願い下げ

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証