【ポエム】好きなプログラミング言語やライブラリ・フレームワークを聞かれると答えに困る話
はじめに
対象
- 好きな言語やフレームワークの話題に戸惑う方向け。
動機
カジュアル面談や雑談で聞かれると返答に窮する質問No.1です。上手く言語化できていないかもしれませんが、思うところをつらつらと書いてみました。
行きずりの道具に何を思うか
我々は道具ではなく、道具を取り扱う技術を売っている。
道具を選り好みする余地がない
ITエンジニアにとってプログラミング言語・ライブラリ・フレームワークとは、材料でもあり道具でもあると思います。テキストエディタやIDE、もっと広げればOSやパソコン本体もでしょうか。
そもそも選ぶ余地がないですし、選べるような立場でもないと思うんです。声優や歌手がマイクを持ち歩くことはなく、スタジオやステージに設置してあるものを使うでしょう。それは専門知識を有した技術者やスタッフの手によるものです。
開発環境のセットアップは様々なツールやパッケージをインストールするだけで完了します。それは多くの優秀で勤勉な開発者達に支えられている技術インフラです。用意していただいたものを有り難く使わせていただいている訳です。
目的が果たせればそれで良い
例えば人様の家に遊びに行って、お菓子の袋を開けるためにハサミを借りるとする。お菓子が取り出せればいいのであって、やれハサミの造形だの使い勝手だのに意識がいくか。これが文房具メーカーの開発部門で働いている人なら分かりますよ? 私はそうではない。
もちろんそのハサミが切れないハサミで、お菓子の袋すら切れないナマクラでは文句の一つもいいたくなります。鶏肉を切った後洗ってない包丁やまな板がそのままとか。道具に最初から欠陥があるのは問題ですし、手入れを怠った結果使えない状態というのもいただけません。
ただ最低限の品質を担保している前提であれば、ハサミは目的のものが切れれば良い訳です。そこにいちいち好き嫌いという感情は生まれません。
道具の本質は変わらない
Webアプリなんて所詮、決められたプロトコルに則って通信して、仕様通りのデータを返してるだけなんですよ。プログラミング言語やフレームワークが変わろうと、根本的な仕様は変わらない。
RFCとは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
なので、最終的に出来上がるデータに大差ない訳です。途中の流れも似てきます。
感情論と論理的思考は両立し得るか
好き嫌いには理由がない
よく「好きに理由はない」といいます。後からあれこれ理由を付けることはできますが、突き詰めて考えていくと、好き嫌いは自分がどう思うかだけだとか。仮に人柄が好きだとして、心境に変化があって変わってしまったら、好きでなくなるかというと違うようです。
それはもはや直感とか感情論とかいう曖昧なもので、商売道具やビジネスにおける合理的な判断とは、軸が違うと感じてしまっています。
勘は勘でも長年の経験に基づくものなら、無意識的に適切な選択をしている可能性がありますが。たとえ直感が正しいとしても、言語化して関係者に説明できなければ仕事には使えません。
いずれにせよ仕事として取り扱う以上、そういった非合理的な要素は排除するようにしています。
嫌いと苦手は学習阻害フィルターになり得る
特に新人エンジニアに向けて伝えていることですが、早いうちから好き嫌いを作らない方がいいと思います。好きを作るということは、選ばれなかった他の技術は好きではないということです。自然と勉強時間や姿勢に影響が出るのでおすすめしていません。
先入観や偏った嗜好は、将来的に新しい技術の習得を阻害するフィルターになる可能性があります。とりわけ嫌いや苦手は勉強を避ける原因です。特定のプログラミング言語やパッケージに固執せず、柔軟に技術を受け入れられる頭と心の柔らかさが大事だと思います。
仕事での技術選定はドライに
業務で技術選定を行う場合、完全に自由に選べることはまずありません。企業であれば歴史的経緯や採用方針上、得意言語はある程度決まっています。新しい言語に挑戦するなら段階を踏む必要がありますし、経営層が教育・学習コストを投資する覚悟が求められます。
プロダクトの性質によっては、機械学習でPythonを使っているから同じ言語に揃えた方が良いだとか、帳票ソフトがJavaにしか対応していないだとか、制約が付きます。ライセンスの問題で商用利用NGあるいはライセンス料が予算を超えれば、そもそも利用できません。
更に使えるライブラリがあったとして、コミュニティの活発さやメンテナンスの頻度など、将来的な動向も含めてふるいにかけることになります。これらの情報をかき集めた上で、客観的かつ合理的な評価による判断が必要です。
やはり好き嫌いが入る余地はないのではないでしょうか。
おわりに
面談や面接でなぜ好きな言語を聞くのか。
実は「今日は良い天気ですね」くらいのジャブのつもりなんでしょうか。それとも「Rubyでないと嫌だ。他の言語なら転職する!」ような地雷を避けるための質問なんでしょうか。
もしご存知の方がいらっしゃいましたら教えていただけるとありがたいです。
Discussion