ダメな奴は何をやってもダメ

この記事は雑談で特に別段の主張はありません。

ダメエンジニアの使い道」という記事があり、短いのですが読んでみたら面白かったです。

以下、記事中で引用しているまつもとゆきひろ氏のお言葉です。

「うちのエンジニアはダメダメだ」と「こいつらを矯正してなんとかまともな仕事をさせてやる」ってのは、一番ダメな組み合わせじゃないか。ダメなのはエンジニアじゃなさそう。

まず自分のところのエンジニアを「ダメ」としている時点でまずいでしょう。ダメエンジニアはダメソフトしか開発できません。「良いエンジニアを採用する」か「良いエンジニアに育てる」か、いずれかを目指さないと。

次に「ダメエンジニアでも使いようで良いソフトが作れる」と素朴に信じているところがまずいでしょう。数で勝負できるのは単純作業だけです。ソフトウェア開発はそんなに単純じゃないでしょう。

同意します。その通りだと思います。数で勝負できるのは単純作業だけで、ソフト開発はそんなに単純じゃない。その通りです。

これをうけて、記事の著者の方は下記のように述べています。

また、解の一つとして「良いエンジニアに育てる」という考えを挙げておられます。確かに、「ダメだったら良くなるように育てる」という考えもよく分かります。ただ、「どうやったら育つのか?」という問題が次に持ち上がってきますよね。

おいらの経験上、外野から「勉強せい!」と無理強いしても、きっとそれほど育たないと思います。一番望ましいのは「自発的に勉強する姿勢を身につけてもらう」ことだと思います。

じゃあ、今度は「どうやったら自発的に勉強するのか?」という話になってきます。これまた難しい問題ですが、自分に当てはめてみると「良いエンジニアと一緒に仕事をして、技術力の重要性と面白さを体感すること」なんじゃないかな〜?と思います。

これも全くおっしゃる通りだと思います。優秀なエンジニアと一緒の環境で一緒のことをやって刺激を受けるというのは学習のモチベーションを向上させる大変よい機会です。だからみんな勉強会に行ったり、なんとかキャンプに参加したり、優秀な技術者があつまるベンチャー企業に転職したいと思っているのでしょう。大変ごもっともでございます。

人間にやれない事なんてない

「社会に出た私が学んだ11のこと」という記事で私は下記のように述べた。

人間の何かを成し遂げたいという願いは、非道徳的だったり、物理法則や法律に反したり、自由が制限された国に居住していない限り、それは必ず実現できる。人生は思い通りになる。「自分はこうありたいのでこうする」という明確な目的意識を持っていれば、理想像に近づいてゆく。

どんな人であれ、向上心を持って物事に臨めば、学習速度に差はあるかもしれないが必ず目標を達成することが出来ると思う。人間にはその可能性が秘められていると私は信じている。私がそう信じているからこそ、私自身も成長できると信じて学習することへのモチベーションを保って居られる。

ここまでの考えに嘘偽りはない。綺麗ごとではなくて私は本心からそう思っている。ではなぜ、「ダメな奴は何をやってもダメ」などというタイトルで記事を書こうと思ったのか。

上記の私の発言には続きがあって、

人生は思い通りになる。「自分はこうありたいのでこうする」という明確な目的意識を持っていれば、理想像に近づいてゆく。

逆に、「こうなりたいと思っているけど自分には無理かな」と思ったらもう無理である。

という言葉で締めてある。ここに込められた思いを今回は書きたかった。

わが社に見る絶望

結論から書くと、「ダメな奴は何をやってもダメ」という言葉はつまり、「興味や向上心が無かったり自虐的だったり自信が持てない奴は何をやってもうまく行かないことが多い」という意味として記した。

たとえそれがスポーツでも、芸術でも、ソフトウェア開発であっても、その道で優れた業績を残した人々の中で、「自分はあんまり好きじゃないんだけど、適当にやったらずば抜けた業績を残すことが出来ました」なんてふざけたことをぬかす人間を見たことがあるだろうか。初期の藤原とうふ店の息子を除きそういう例を私は知らない。

普通、ある分野で成長できる人というのは、その分野において人一倍興味や楽しいという気持ちを持つことができ、それから派生する大きな向上心があり、それをベースに日ごろから努力や学習ができる人ではないだろうか。反例はあるかもしれないが、それは稀なケースで大体そうであることには多くの同意が得られると思っている。

ここで話を「ダメなエンジニア」に戻す。「良いエンジニアに囲まれて刺激を受けることでエンジニアは成長する」、それは同意するが、これはソフトウェアエンジニアは程度の差こそあれすべからずソフトが好きである、ソフトに興味を持っているという前提が暗黙的に存在していると思う。

数年前の私であれば、こんなもん当然の前提であると思っていた。ソフトウェアエンジニアという職を選ぶ人はソフトウェアに少なからず興味があって当然であろうと思う。その前提を疑うことなど考えもしなかった。

しかし不思議なことに、世の中にはソフトに興味が無いのにソフト開発を生業とする会社に入ろうとする人間が居るということがここ最近分かってきた。そしてそれは比較的若年層に多い。会社の先輩諸氏にも同様の話を振って聞いたことがあるが、やはり私一人が感じている事ではなかった。

この原因については「新人教育の難しさ」という記事でも考察したが、近年の就活生は自分のやりたいことを重視せず、会社の将来性や福利厚生、雰囲気の良さと言ったものを重視している傾向があるというところに原因がありそうだ。その背景にはバブル崩壊後の厳しい社会で育ってきた過去があるのだろう。

事実私もそうだった。中学~高校時代は常々、周りの大人から「安定した職に就いてなるべく長く働くことが幸せ」という価値観を刷り込まれた。そういう人間が会社の将来性や長く働けるための環境を重視して会社を選ぶことは当然である。今考えると、「バブル期に好き勝手やってきたくせに何言ってんだこのポンコツは」とぶん殴りたくなってくるのだが。

そういうわけで、自分のやりたいことよりも会社をにわかファンダメンタル分析した結果を重視するという姿勢もある程度は理解できる。理解できるというか、一つの戦略として大いに結構であるすら思う。しかし、それを過度に優先して自分のやりたかったことを諦めたり、自分のやりたいことについて深く考えなかったりすると、自分の職務内容に興味を持てないエンジニアが生まれる。

そういった人間は成長できるだろうか?私はまず無理だと思う。考えてもみてほしい。ソフトについてまず興味をもってもらうところから始まるのだ。たとえば「オーバーレブ!」という漫画は車に興味が無かった女子高生にトヨタMR2を与えてから最終的に軽トラで公道最速を目指すという全30巻くらいのハートフルストーリーである。つまり、何も興味ありません、なんて人間をその分野で伸ばしていく労力やそれに必要な時間というのは並大抵のものではなくて、それこそ全30巻くらいのお話しを作れちゃうような規模を要するのである。そんなことが教育ではなく営利を目的とする会社で出来るだろうか?

現場から優秀なエンジニアを教官として引き抜き、その穴を埋め、そのエンジニアに教育についての知識とスキルを学習させ、さらに「ソフトに興味が無い」とか言ってる輩を対象として興味を持たせるところから始めて、最終的に独力で学習を継続していけるようなレベルに仕立て上げるまで十分な教育期間を確保できる予算が出るような会社であればそらできるだろう。

少なくとも、いわゆる日本の終身雇用制度が機能していた時代はそれができていたのかもしれない。しかし現代でそういうことできる会社はよほど恵まれている会社だけではないだろう。中には社内教育がうまく機能している例というのもネット上で見かけるのだが、よくよく読み解いていくとモチベーションが既に高いようなエンジニアが集まるイノベーティブな社風の会社での事例がほぼ全てだ。ここで議論しているように「興味が無い輩」を鍛えようとはしていない。おそらくそういう人材は採用しないのだろう。なぜか。教育するにしても効果が薄いことが目に見えているからだ。

しかし、昔ながらの社風の会社はいまだに素質、つまりコミュニケーション能力や人柄などといった定量的評価の難しい基準を採用担当者の主観で評価して採用を決めている。その後の教育計画を考えもせず。はっきりとアホであると思う。

そしてこれは調査する術がないので想像でしかないのだが、同じような境遇にある会社は実は多いのではないかという気がしている。

ダメエンジニアをどう扱うか

では、そのような人材を活用するにはどうすれば良いのか。一つは先に述べられていたような「鎖を繋いで矯正する」方法である。こういう発想は最近流行っているのか、耳にする機会が多い。たとえばMicrosoftのLightSwitchなどがこれにあたる。LightSwitchがフォーカスしているのは

LightSwitch は Visual Studio ファミリの新製品で、開発者のスキルのレベルにかかわらず、デスクトップ、Web、およびクラウドに対応したデータ中心のビジネス アプリケーションを簡単に作成できるようにすること

明記されている。他にも各社で独自のソリューションがあったりするし、クラウドサービスを活用したりといったことも考えられるだろう。

しかしながらMatz氏が指摘するように、多くのソフト開発というのはそれほど単純なものではなく、「あらかじめ用意されたUI部品を張り付けたらおしまい」というあたりでカバーする範囲に収まることは殆どないと言ってよい。せいぜい、自社内で運用するツールというレベルがそれらのソフトを用いて構築できるシステムの限界ラインで、間違ってもお客さんから金をもらってやるようなものではない(顧客がそれを望むのでない限り)。なぜならば、「馬鹿でもこのソフトを使えばシステムが構築できる」のならば、そのソフトを買って自社で内製した方が外注するよりもよっぽど安上がりだからである。

従って、私も鎖でつないで矯正、というのは理念的なことというよりもむしろ純粋にその効果の観点から否定的ではある。LightSwitchも優れた製品であると思うが、その目的を達成できるとは思えない。ちょっと複雑なことをしようとするとすぐにJavaScriptやjQueryの知識が必要になってくる。逆に言えば、JSさえ知っていれば面倒なことは抜きにしてちゃちゃっとjQueryライブラリを組み合わせてリッチなUIを実現できてしまうのだけど、そもそもそういうスキルのある人間は鎖につなぐ必要が無いのである。

じゃあどうすりゃいいのか。

どうにもならんのである。

これが現段階での私の結論である。

Matz氏は「私が理解している限り、「良いソフトウェア」を開発するためには「小さいチーム」と「優秀な開発者」が最重要」とも言っている。これも私は同意する。そして、

ダメエンジニアはダメソフトしか開発できません。「良いエンジニアを採用する」か「良いエンジニアに育てる」か、いずれかを目指さないと。

とも発言している。これも同意する。「良いエンジニアを採用する」というのは、専門知識が皆無のスタッフ部門の担当者が就活生をコミュニケーション能力という意味不明で主観的な評価軸でしか判断できない採用方法を取っている限りは難しそうだ。であるならば、「良いエンジニアに育てる」ことが出来るかというと、それは限りなく無理に近いことはすでに述べた。八方ふさがりである。

自分で金かせげばいいじゃん

この問題に私は大きな危機感を持っている。なぜならば将来的に私の部下になるかもしれない年齢層のスキルが低いという事であるからだ。だから長期的な視野を持って気長に教育すべきとは思うが、私はもうすでに数か月で匙を投げようとしている。全然興味が無いやつをその道で優秀とは言わないまでも、少なくとも平均レベルまでに教育する。私はそんな宣教師のようなことをやりたくてこの会社に入ったわけでもない。ソフトが好きじゃないならそれで結構。勝手にしてくれと思う。宣教師をやったところで私に何か利益があるわけでもない。しかしながら私に与えられた社内でのミッションは「ソフトに興味ありません」とかいう、しかも文章もろくに書けない、元気だけが取り柄の中学生野球部がそのまま大人になったようなアッパッパーを鍛え上げるということなのである。

であるから、私は最近どちらかというと起業志向が強まってきた。独立して自分の好きなようにプログラムを組み、それで生計を立てる。それでいいじゃないかと思う。逆に、社内で出世したいとか評価されたいとかいう気持ちも無くなってきた。どうせまじめにやったところで評価されないと思う。こないだ、「健康増進活動で他の部署に敗れたからボーナスが下がる」などという話が出たところであったまきたと同時に、この会社に尽くすという発想をやめた。

「コミュニケーション能力や人柄偏重で新卒学生を採る」そういうことをやっている会社はいずれダメになると思う。

まとめ

以上の話をまとめる。ダメなやつは何をやってもダメ、というのは、好きでもない事を漠然とした義務感や生活のためだけに続けていっても成果は出ないという意味である。それは本人にとってプラスではないし、周りにとっても時として迷惑になる。

40歳も間近になった人間に「人生の方向転換しろ」というのはさすがに酷かもしれないが、まだ若い20代は今の会社が気に入らないならさっさと転職したほうが良い。絶対良い。読売新聞の「人生案内」を読むとたまに「親類や恋人が反対するから好きな職業に就くことができない」等ということを書くひとが見受けられるが、んなもん、自分の人生だから自分の思いのまま生きればいいと思う。そのほうが自分にも職場にも社会にも良い影響を及ぼすと思う。もう一度言う。興味が持てないようなことを仕事にしていても自分含めてだれも幸せにならないからさっさと転職したほうが良い。絶対良い。