みる米すごいプログラマーって何がすごいの?スレッドを見て感じた違和感みる米アメリカの人気動画を超速紹介。2014ある日のGunosyに届いた記事。「凄いプログラマー」って何が凄いの?みなさんいろんな意見を言っていて、思わずプッとなるものまで非常に楽しませてもらいました。タイトルにも書いたのですが、投稿内容にちょっと違和感を感じたので少し書かせていただきます。初めに僕の意見を言ってしまうと、凄いプログラマーって、技術がうんちゃらよりも、もっと人間的なもの、平たく言うと発注者が本当に欲しいものを見抜いて、ちょっとだけ期待値を超えたものを提供できる人じゃないかと思います。「いやいや要件定義や仕様決定はプログラマーの領域ではないよ、上流システムエンジニアや企画の仕事だろう。いう意見もあると思います。いった業務の切り分けは意思決定を遅らせるし、発注者との認識違いも起きやすい。マイナスはあってもプラスはない。彼らがそれを実現することは難しい。大切な納品ができないから。鮮やかなプレゼン資料だけじゃプログラムは動きません。非の打ち所がない仕様書だけじゃかっこいいページを表示することはできません。プログラマができるようになればもっとよくないですか?ノンプログラマがプログラムをいちから勉強するより、プログラマが客前にでて話を出来るようになるほうが遥かに簡単です。それが出来るといわゆる凄いプログラマになれます。スゴイか流通業で中間業者がいなくなるとエンドユーザーに安くプロダクトやサービスを提供することができます。請負者は中間業者に払うべき利益を自分の懐にいれることができるので、利益率が上がります。100万円の案件を上流エンジニアとプログラマで対応したら、乱暴に言えば一人あたり50万の売り上げ。客怒るこれって誰得でしょうか?プログラマが客先に出て話せば半分の労力で同等の売り上げを上げることができます。客先にでて話すのなんて慣れの問題です。4,5回やればコツがつかめます。発注者はめちゃ営業がうまい人を求めてはいません。自分たちが欲しいものをつくってくれる人と話したいのです。作品に近ければ近い人のほうがいい。伝言ゲームと同じで、仲介する人が増えれば増えるほど要望は曖昧になり、自分たちに都合がいいように置換されていきます。いつしかオリジナルの要望からかけ離れた”何か”が出来上がります。お客様先に行き、「私はエンジニアで、私が作ります(もしくはがチームリーダーとなってつくります)」というと100%喜ばれます。打ち合わせでは「あれはできる?これはできる?どのくらい時間かかる?」っていう質問がたっっくさん飛んできます。これはプログラムを書く人か、書いていた人でなければ答えられません。いちいち「社に持ち帰ってエンジニアに相談します」なんてやってたら、要件定義で確保した貴重な予算を浪費してしまいます。お客様先に出向いて話すことに慣れてきたら、プログラマだからこそできる、さらなる付加価値があります。ここが大切なのですが、お客様が求めているのはYESマンではなくて、ソリューションを提供してくれる人です。ここをはき違えると、完成したものが満足度60%だったときに「だってそう作れっていったじゃないですか」っていう小学生みたいな言い訳が飛び出してきます。いう仕事のやり方だとぜーーーんぶ賃金が安い海外にオフショアされてしまいます。付加価値ないですもん。E-commerceサイトを作りたいというお客様がいたとします。高度なフィルタ機能をつけて、探している商品がズバッッ!っと表示されるようにしたいという要望もあるとします。そのフィルタを実装すると+100万円のカスタマイズ費用がかかりそうだ。E-commerce本体の開発で200万。お客様の予算は250万円。「予算オーバーですね。うちでは請け負えないかもしれません。」端的にそう結論づける人は損します。なんてことを言うわけではありません。瞬時にこの一言を言えるか言えないか。ここが凄いプログラマの分かれ道です。ミーティングの流れや人の気持ちって水物です。然るべきときに然るべき言葉を言わないと大きく方向が変わってしまいます。作るのが自分なら言葉ひとつひとつに責任感が生まれるでしょうし、問題になりそうなところはこの時点で排除していくことも出来ます。これができるのがプログラマです。作業見積もりにおいて、プログラマの口からでてくる数値以上に信頼できるものはあるでしょうか?それでは上のE-commerceの例ではなんと言うべきでしょうか?僕なら「月々のサービス費用はかかりますが、初期費用の少ないオンラインサービスのショッピングカートを利用してみては?」と提案します。「それで売り上げをあげて、そのお金でプロモーションをしたり、必要ならE-commerceをグレードアップしましょう!」って言います。損どころか僕は今後のプロモーションを請け負えるチャンスを得ることができ、お客様も大金をはたいて売り上げが上がらなかったときのリスクを回避することができます。お客様が求めているのは高度なフィルタをつけることではなくて、売り上げを上げることです。それを実現する方法を探しています。僕らは損をせずに確実に利益を上げる方法を探しています。プログラマはもともと技術の人です。「回り道なんてせずに、要求された仕様を1ヶ月間泊り込みでこなしてこそエンジニアだ!」という人も多いと思います。それじゃ体がもたない。仕事は来月も再来月もあるのです。顔を上げて別の道がないか探してみる。プログラマはネットにも精通している人が多いでしょうから、ソリューションは結構簡単に見つかるかもしれません。まとめえらそうなことを書きましたが、5年前ならば僕も、「そーだよなー、無駄のないコード書ける人とか、ちゃんとオブジェクト指向に則って書いてる人とか凄腕プログラマーっていう印象があるなー」なんて考えていたと思います。僕は新卒で就職して以来、ずっっっと開発と運用をしていました。仕様書や企画はマネージャや企画部から上がってきて、必要なら詳細設計書をつくって開発。バグが出たら夜中に出勤してセブンのおにぎりをかじりながらあーでもない、こーでもないとやっていました。いった仕事の中で技術レベルをあげて、いつか「あいつに任せたらバグなしのエクセレントなコードがあがってくるよ」って言われるように、ある種、盲目的にそして淡々と毎日の業務をこなしていました。どこの職場でもスーパーなエンジニアというのはいるもんで、みんなに一目おかれているわけです。僕もああいう風になりたいなぁと考えていました。営業をしてみたのです。