綺麗に死ぬITエンジニア

言葉を正しく使えないITエンジニアは三流エンジニア

2015-10-28

今回の標的は、生産性の低いクソITエンジニアです。

これから述べることは、あくまで私の考える一説なので、エンジニアの皆さんは気を悪くしないようにお願いします。気を悪くしちゃった場合は、Twitterでボコボコに叩いてください。タイトルが若干誇大表現なのは、認めます。

優秀なエンジニアとそうでないエンジニアの違い

一言に「有能」「無能」といっても、様々な要因がありますし、人それぞれの価値観によっても変わってくるかと思います。

ただ、一般的に共通して言えることとして、「有能」でいえば、以下のような要因があるかと思います。

  • コードを書くのが早い(頭の回転が早い)
  • 設計が綺麗(拡張性/将来を見通せる)
  • バグが少ない(ミスが少ない/リスク回避が的確)
  • 技術の知識が広い/深い(視野が広い)
  • 的確にチーム内の情報共有ができる(コミュニケーション能力が高い)

など。「無能」は、この逆ですね。

今回は、上記の5つを「有能の条件」と定義し、それにフォーカスして、話を進めていくことにします。

有能な条件に共通する能力

私は、上記で挙げた5つの条件を満たしていない、無能なエンジニアの共通点として、タイトルにもあるとおり「言葉を正しく使えない」というのがあると確信しています。したがって、「言葉を的確に正しく使える」というのが、有能な人に共通する能力となります。

経験上これが結構、エンジニアの能力を計るのに的確なんです。

一見、「エンジニアはそもそも理系だし、技術を探求し深めていけばいいのだから、言葉を正しく使えないといけないなんて文系の要素は不要なのでは?」と思われる方が多いかもしれません。しかし、よくよく理由を考えてみれば、これは当然のことなのです。

これから各要素について、その理由を考えてみます。

コードを書くのが早い(頭の回転が早い)

プログラミングのスピードが速い人は、そのプログラムの道筋やストーリーを考えるのが早いということです。例えば「ビジネスロジック用クラスからデータベース接続用クラスを呼び出し、画面描画クラスにパラメータを送信する」といった流れを素早く頭の中で具現化できるということです。

これは、自分の考えを文字に起こす行為に似ています。

まとまっていないバラバラの考えや理論を頭の中で整理し、それを読みやすい文章にストーリー仕立てで書き上げる行為と、あまり違いがありません。

「言葉を正しく使える」というのとは少し離れるかもしれませんが、「言葉で分かりやすく伝える」ことのできる人は、形のない理論を素早く言葉やプログラムという成果物に具現化できる人であるということです。

設計が綺麗(拡張性/将来を見通せる)

綺麗な設計は拡張性に優れるものです。つまり、将来を見通し、今後の運用や保守や機能拡張といったことを常に頭の中に入れておき、後々無理の出ないように組み上げていく必要があります。

こういう考えを持つ人は、自分の言葉が後々の流れによって嘘になったり、悪影響を与えるようになったりすることを避け、一つ一つの言葉に誤解が出ないように注意を払います。

そのための前提として「言葉を正しく使える」というのは必要であり、「言葉で正しく伝える」ことの重要性を知っています。ただ、このタイプの人間は、言葉に保険をかけたり、難しい言葉を使って具体的に説明しようとする人が多いので、エンジニア以外の人にはあまりウケが良くないかもしれません。なにせそれだけ知識が必要なので。

バグが少ない(ミスが少ない/リスク回避が的確)

これが最も大きいです。他の要素にも影響を大いに与える部分ですね。

まず、「言葉が正しく使える」人は、細かいミスに気がつきやすいです。なぜなら、自分の文章にも必ず一通り目を通し、言葉にミスがないかの確認をします。その結果、「言葉が正しく使える」のです。

つまり、ミスがあってはそもそもその言葉は正しくないものになります。

メールに誤字脱字が多い人はいませんか? それはつまり、「言葉が正しく使えていない」ということです。ここに、うっかりミスか勘違いかなんてことは関係ありません。うっかりミスだろうと、そもそも言葉の漢字を勘違いしていようと、ミスはミスであり、言葉を正しく使えていないことに変わりはないのです。

プログラムにおいては、うっかりだろうが勘違いだろうが、正しくない記述は全てバグになりえます。その辺りの細かい確認を常にできる人というのは、日々のプログラミングにおいてもミスが少なく、信頼できると評価できます。

全角数字を見ると気持ちが悪い。全角英字なんてもってのほか。

これはエンジニアとしては、正しい感性だと思います。プログラミングにおいては、その感性が最も重要なデバッガーとして動作します。最近は誤字くらいならIDEが勝手に検出してくれますが、もう少し規模が大きなミスになると、まだまだそうもいかないものです。

以上を踏まえ、以下のような間違った表記をするようなエンジニアがいたら、それは三流のエンジニアです。注意しましょう。

  • JAVAではなくJava
  • JavascriptやJAVASCRIPTではなくJavaScript
  • Angular.jsではなくAngularJS
  • WordpressではなくWordPress
  • IphoneやIPhoneではなくiPhone

私はそれぞれ、違和感があって見るに堪えません。違和感なく見られる人は、もう少し正しい表記への感性を養いましょう。

私はよくブログを書くときに、言葉が間違っていないか確認する意味で、よく辞書を開きます。これは、プログラムを書くときに、そのプログラミング言語のドキュメントやリファレンスを参照する行為に似ています。そして、その都度その都度、その言葉の意味を正しく理解し学習していくことができる人は、そのクラスやメソッドの意味を正しく理解し学習していく能力を持っていると言って差し支えないと思います。私はあまり正しくは理解できていない気がしますが。

技術の知識が広い/深い(視野が広い)

これはそのまま、語彙力に繋がります。

エンジニアは、様々な技術用語とその意味を正しく知る必要があり、それがそのまま技術の知識の広さ/深さに直結します。

語彙力がある人は、技術の知識を取り入れるキャパシティがあるということです。そしてその語彙力を発揮し言葉を正しく使えるということは、技術を正しく使えるということに直結します。そして、新たな言葉や技術を見たときに、それを自分のものにする力があると言えます。つまり学習能力が高いのです。

最近の流行語をよく使おうとする人は、新しい技術もより早く習得しようとする貪欲さがあるということです。

的確にチーム内の情報共有ができる(コミュニケーション能力が高い)

これはもうそのままですね。的確に正しい言葉を使えずして、きちんとしたコミュニケーションが取れるわけがありません。曖昧に伝えることを許容していたら、いつか重大な認識のズレが生じて、大幅な手戻りが発生する可能性があります。

プログラマーの扱うプログラミング言語は、文字通り「言語」です。それも、実際のコミュニケーションに用いる言語とは違い、曖昧な表現は全くできない言語です。つまり、言葉よりも厳密さが求められるわけですが、その言葉すら曖昧に「こういう意味だろう」と勝手に雰囲気で決めつけて、ましてやオリジナルの言葉を作り上げるような状況では、プログラムの質も底が知れています。

まとめ

技術力が低いエンジニアと話すと、平気で以下のようなことを口走ります。

  • 継承してメソッドをオーバーロードする(継承によって上書くのはオーバーライド。同一クラス内で動作を振り分けるのがオーバーロード。)
  • サーバーを複数台構成にスケールアップする(台数変更による負荷分散はスケールアウト。スケールアップはサーバスペックの変更。)
  • 二段階承認を有効にする(承認ではなく認証)

このように技術用語ですら正しく使えない人は、それ以外の日常会話での言葉も往々にして正しく使えていません。そのエンジニアの技術力は、その言動からある程度推し量れるものなのです。さすがに初対面では無理でしょうけどね。