ものづくりは「こだわる」「抑える」「やっつける」
採用活動についての小俣さんのエントリを読みました。
課題を提示してソースを提出してもらった時の確認ポイントが紹介されています。そのうちのひとつに同じ思いを感じました。それは
「どこまでできて、どこから先はできないと明示されているか」
という点です。私は良いシステムを作るのに不可欠な要素はひとりひとりのこだわりであると思っています。こだわるというのは意外と難しいもので、自分の思いをある1点に集中しこだわるためには他の部分に見切りをつけ抑えておいたり、やっつけたりしなくてはなりません。そのように技術者が互いの弱い部分をフォローし合い、得意分野で力を発揮し合い、ちょうど良い感じに集まって同じ方向を目指して仕事をできたとき、とても良いものができあがります。
私はそのような考えを持っていますので、自分がもし小俣さんのエントリにある「・Amazonのようなネットショップ風のサイトを自作する」の課題を与えられたらこぎれいにまとめたものを作って出そうとは思いません。勇気はいりますが、こんな感じでやると思います。
やっつけるところ
- OS、ミドル、画面デザイン
手堅く抑えるところ
- データベース周り(正規化はする。インデックスとかレコードサイズは勘)
こだわるところ
- 技術で解決すべき課題を自分なりに設定し、対応する機能を実装する。例えばこんな感じでしょうか。
- 在庫データにW*D*Hを持たせ、同梱した状態で最小となるダンボール箱のサイズを自動判別し運営者にお知らせする機能(宅配便の料金体系に沿って外側の箱のW+D+Hと重さを考慮するロジックが見せどころ。重い物を下に入れることも考えたい)
- 詰め方を絵で見せられれば、運営者側には作業指示として使う。それを買う側にも見せて「これくらい空いてますがこの商品ならぴったり収まりますよ」という無理に勧める。
- 商品が売れたら売れ行きを考慮してバックヤードでの在庫の並べ方を運営者にお知らせする機能(入り口からの距離、関連のある商品と商品の近さ、など)
上の機能が使い物になるかどうかは別として、何にこだわろうとしたか(着眼点)、どのようにこだわったのか(コードの表現力)、あたりを見てもらい、それらが自分の思いと一致していれば有意義な課題製作になるでしょう。
と、ここまでは前置きでして私から学生の方向けの意見としてはこういう課題をもらってしまったら「やりたいようにやる」のが一番と思います。
例えばある会社では、何かの方面に秀でたこだわりの技術者を集め、誰かがうまく乗りこなしていくような社風かもしれません。しかし一方で別の会社ではできるだけ均一に技術者を育てて特殊な技術は外注するような社風かもしれません。
もし自分がこだわりタイプの技術者なのに、ついついCSSも見せたい、OS・ミドルに明るいところも見せたい、AP開発スキルも見せたい、プレゼンでしゃべりも見せたい、とやってしまった場合、それが「こだわりの技術者を目指している」と伝わるでしょうか?同じように、マルチに色々とやりたい人が「この会社はネットワークに強いから」と考えて妙にネットワーク周りに力を入れた課題を提出したら、幅広くやりたいという思いは伝わるでしょうか?最終的な合う合わないは会社に入ってしばらく働いてみないとなんとも言えませんが、選考プロセスでは素朴に希望をぶつけあうことが互いのためにもなりますし無駄も少ないのではないかと思います。
この就職難の中では確かに自分を強く見せたい、大きく見せたいいう気持ちが働いてしまうかもしれません。それはわかるのですが、自分がどんな人間で何をやりたいか、それを相手に伝えて「選んでもらう」ことも重要ではないかと思います。上で考えたようなアプローチをすれば、こんなやつは絶対に要らないという会社がたくさんあるでしょうが、中にはおもしろいからおいでよ、という会社が見つかることと思います。そういった会社とは長いお付き合いができることでしょう。