geta1972TweetPocketCheck今現在のWEBエンジニアでプログラマーと呼ばれている連中の多くは、「どのプログラム言語を使うのがより効率的か」とぴう議論をするのが好きな人が多いようです。自分が何の言語を使っているかを前提に話すために、多言語同士のこうした議論は全く論点がズレた内容になる事は用意に想像できます。多くのプログラマーは言語が好きになるかどうかがプログラムのポイントと考える事が多いという事も事実のようにも感じます。実際に卓越したプログラマーと話をすると、アルゴリズムが好きであることが分かります。上っ面の表面だけのプログラム言語しか見ていない人と、そのプログラムの処理クオリティであるアルゴリズムを楽しんでいる人との差は、極めて大きく、その成果も計り知れません。そんなよく陥りがちなプログラマーの思考を少し深掘って考えてみたいと思います。言語に執着するのか?プログラマーは何故、言語に執着するのかというと、日本人が英語が話せないという文化と非常に似ていると考えられます。日本人は当たり前ですが、日本語でコミュニケーションを取るのが楽だし自然だし、言いたいことを一番素直に表現できる方法として日本語を使います。英語が苦手な人が多い日本人は、英語で自分の考えをプレゼンテーションするという行為がとにかく苦手です。これが、プログラム言語でも全く同じことが言えて、普段使い慣れているプログラム言語で仕事をする事が一番効率的だと誰もが考えてしまいます。これ自体は何も悪いことではないのですが、間違いが起きやすいのは、その言語しか知らないがために、多言語の良さが見えていない場合に、技術進歩の妨げに成りえてしまうということです。この言語では、独自関数を書いて対応しないといけないが、他の言語では、標準関数で5秒程度で構築ができてしまうというケースは少なくありません。後発のプログラム言語は、先発のモノの使いづらさを解消するために生まれてきたものなので、当たり前ですが、先発モノは効率が悪く、後発モノは、効率よく作業することが可能です。ライブラリや、プラグインなどにも同じことが言えます。同じものを作ったとしても、そのモノのクオリティが高いか低いかは効率性とは比例しません。後発モノで作ったものには、見えていない不具合や想定しない事態が発生する可能性もある反面、先発者は内部を全て把握できているので、運用が楽になる可能性もあります。効率性を取るか、その後の運用性を取るかで、根本の思想も変わってくることが分かります。プログラマーはクオリティの高いものを作ろうとしますが、効率だけを追求するエンジニアの場合や、単一の言語や環境に執着するエンジニアは、周囲が見えていないケースが多いのですが、その環境を深掘りしてとんでもない裏技を身に着けているケースもあります。何が良くて何が悪いかを言い切るつもりはありませんが、日本人が今後は英語も話せたほうが良いことを考えると、単一言語しか知らないエンジニアは、今後肩身の狭い思いをすることは間違いないかもしれませんね。思考をプログラム出来る人と出来ない人ITが苦手という人は、パソコンが得意ない人を見て、魔法を使っているように感じるそうです。自分ではできないパソコンキーボードを早くタイピングする様や、壊れてどうしようもない状態をいとも簡単に直してしまうのを目の前で見ると、まるで、魔法を見ているように感じる事も分からなくもありません。これは単純にITの仕組みを知っているかどうかの差で生まれるスキルの格差なのですが、この世の中は、何においても、知らないよりも知っておいたほうが確実に得をする世の中です。「情報社会」という言葉が当てはまるかどうかわかりませんが、物事を知らない事は、弱者に成りえてしまう状況でもあるという事ですね。そんな魔法に見られるプログラマーにも、コンピュータのプログラミングはできるが、自ら何かを考えるという思考プログラミングが苦手なエンジニアも多数います。通常のプログラマーはこのタイプが多いのも事実です。思考プログラミングとはどういうものかと言うと、世の中的に言われているのは「アイデアの発想」であったり、「作業工程のフローチャート化」など、結構当たり前の事がそれにあたります。人から言われたプログラムは上手に作業できますが、自分で良いと思ったサービスを作るように命じてみると、途端に手が動かなくなるエンジニアがなんと多いか、企業に勤めるとよく分かります。オレ流プログラミングのススメ柔道や剣道などのように、先生に教わる伝統文化に関するものには「流派」というのが存在します。運用系だけでなく、書道や華道などの文化系の事に関しても、流派は非常に重要な存在です。そのうちにプログラムにも流派が出てくるかもしれないことを考えると、僕も自分の流派というのを確立しておこうと考えるようになりました。どのような思考でアルゴリズムを形成するのか、その場合にどういう環境でどのようなプログラミングをするのかをちゃんと思考しておくだけで、オレオレ流はにおける効率的な開発から、運用効率化までが行えるでしょう。細かなコーディングルールから、デバッグ・テスト方法などの作業面までも、思考しておくことで一通りの業務でも使えるし、新規案件などへの対応も可能です。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。