IT時代の終わり

画像 現在、プログラマーは、1つのプラットフォーム向けの開発であれ、同種のアプリケーション向けの開発であれ、狭いプロファイルのタスクに対して高い報酬を支払っています。 しかし、最も有望と呼ばれる業界では、関連分野のより詳細な研究、自然科学と人文科学の両方の理解が必要です。 狭い専門分野よりも知識の幅が再び重要になりつつあり、プログラミング全般ではすぐにすべてが異なると思います。



「プログラマー」はエンジニアと呼ばれる方が良い



私は仕事で「プログラマー」という言葉を決して使いません。 私の職業の人々に目を向けるとき、私は常に彼らをエンジニアと呼ぼうとします。 純粋に狭い言葉遣いの「プログラマー」-たとえば「テスター」のような-は、私たちの職業の詳細をほとんど反映していません。 そして、遠くに行くほど、この定式化はうまくいきません。



例を挙げましょう。 古典的な意味では、「プログラマー」、「テスター」、「プロジェクトマネージャー」およびその他の専門分野があります。 役割の観点からは、この区分は理にかなっています。これは、労働の手段に特別な知識が必要だったために歴史的にあらゆる分業が生じたためです。 大まかに言えば、テスターに​​なるには、特定のプラットフォーム用に開発するエンジニアだけでなく、特定のツールを学ぶ必要があります。



時間が経過すると、エントリのしきい値が低くなります。 たとえば、Microsoftには現在「テスター」のような役割はありません。テスト中の開発者がいます。 同時に、開発に携わるすべての人々はソフトウェアエンジニアと呼ばれ、彼らは単にわずかに異なる分野に関与しています。 ツールをマスターするのが非常に簡単になったため、特定の専門分野間の境界が消去されました。 将来的には、たとえばJavaScriptプログラマー、Pythonプログラマー、または.NETプログラマーへの分離、およびフロントエンドとバックエンドの分離が行われることはまずありません。



確かに、表現の手段にはまだ問題があります。 フロントエンドにはJavaScriptがあり、バックエンドでは別の言語を選択する方が便利です。 この考えから、Node.jsの全体的な傾向が生まれました。 これにより、標準化とチームビルディングが簡素化され、その知識と専門知識はほぼ同等になります。 はい、Node.jsには問題がありますが、さらに重要なことは、フロントエンドとバックエンドで同じツールセットを使用できることです。



プログラミング言語を知るだけでは十分ではありません



テクノロジースタック-人々が使用するものの根底にあるテクノロジーを理解することがますます重要になっています。 JavaScriptでプログラミングする人がいますが、TCPプロトコルがどのように機能するかを尋ねられたとき、彼らはそれが低レベルであり、これに対処したくないと答えます。 これは恐ろしいことです。私の経験からすると、使用するものの下にある基本原則を理解することは非常に重要です。 当分の間、これは影響しないかもしれませんが、原則として、1つの技術の遅れにより、技術スタック全体で通常の決定を行うことはできません。



ブラウザの場合のテクノロジースタックの意味の例を次に示します。 JavaScriptがあり、HTMLとは何か、つまりHTTPプロトコルのアイデアがあります。 JavaScriptプログラマーはこれから逃れることはできず、それを理解する必要があります-分離とクロスドメインセキュリティのルールの由来、SSLプロトコルの仕組み、証明書ベースのセキュリティの仕組みのように。 さらに、バックエンドに移動する場合、人はデータ構造の構成を理解する必要があります。 多かれ少なかれ複雑なアプリケーションでは、複雑なデータ構造の視覚化、テーブルの結合、サンプルの編成に関しては、インターフェースとバックエンドが直接接続されます。 インターフェイスを作成する人々が少なくともバックエンドで考える必要がある基本的な問題、シャーディング、データ編成、クエリ構造を理解していない場合、効果的なアプリケーションを作成することは非常に困難です。 逆もまた同様です。バックエンドを作成する人がフロントエンドの問題を理解していない場合、シャーディングと水平スケーリングの可能性を正しく想定するために、バックエンドで正しいAPIを作成することは非常に困難です。



下に移動して、オペレーティングシステムのプロセスとスレッドがどのように機能するかについて長い間考えたくないと言うことができます。 しかし、たとえば、Web上でアプリケーションを実行する方法を選択すると、スレッドに対するプロセスの問題がすぐに発生します。プロセスの違い、長所と短所、動作方法を理解する必要があります。 これを理解していない人々は、ある時点で専門職としての成長の天井に背を向けています。 これは頻繁に起こります。広く、体系的に考え、新しい分野を学ぶ人は常に少数です。 複雑なことを考えることなく、常に同じレベルのサイトを作成できますが、多数のクライアントと動的コンテンツを含むサイトを作成することはまったく異なります。 多くの場合、このステップは、頭の中で基本的な知識の基礎を構築せずに実行することはできません。



デザイナーとエンジニアの間の境界線は残ります



将来、デザイナーによって作成されたブランクは、より速くプログラムに変わり始めます。 これは、視覚的な編集を備えた既製の要素のセットがあるデスクトッププラットフォームのプログラミングで、すでにさまざまな方法で発生しています。 プログラミングの部分に関しては、確かに残りますが、使用頻度は低くなり、おそらくより高いレベルになります-しかし、人々だけでなく、ツールも同じタイプの単純な作業に従事します。



さて、良いサイトを作りたいなら、JavaScriptプログラマーを雇うのが理にかなっているでしょう。 一方、Wixまたは別のビルダーにアクセスして、必要なサイトに近いサイトを作成できます。 この傾向は今後も続くようです。 スライダーを動かしてボタンを残すだけで、誰でもサイトを動的なコンテンツで作成することができます。 そのようなサイトを書く人々の必要性は自然に消滅します。 JavaScriptプログラマーが消えることはほとんどありません。結局、誰かが高レベルの視覚モデリングツールを作成する必要があります。 しかし、専門家にはより深い知識が必要です。



あなたは無限に次のレベルに行くことができます。 以前は低レベルのプログラミングツールがありました。人々はバイトコードで書いたので、あまり心配していませんでした。 次に、同じアセンブラのツールが登場し、その後に上位レベルのツールが続きました。 あなたが空想するなら、50-100年ですべてが半人工知能を自動化して到達することが可能になります-問題は次の技術革命の時間と複​​雑さです。 開発の歴史を見ると、新しい技術が変わるたびに、覚えておかなければならない知識の量と幅が増えますが、それらへのアクセスは簡略化されます。 JavaScriptを習得するだけでは幻想です。 JavaScriptとその下のすべてを本当に知る必要があります。 次のラウンドに移るには、前に何が起こったのかについて少なくとも基本的なアイデアが必要です。



エンジニアには自然科学と人文科学の両方が必要です



遠いほど、影響を受ける領域はより外側になります。 たとえば、Appleの開発について考えてみましょう。これは、主にSteve Jobsと彼を取り巻く人々、人文科学の情熱、特に美しいフォントと象形文字に対するman病な愛によって決定づけられました。 情報技術のキャッチーな変化はすべて、科学の交差点で非常に頻繁に発生します。 これはほとんどの場合合成です。なぜなら、ITは単なる情報の提示と処理の方法であり、真空では意味をなさないからです。 したがって、グラフィカルユーザーインターフェースを思いついた人々の「プログラマー」と呼ぶことは困難です-これは、iPhoneがハードウェアのみまたはソフトウェアのみのおかげで成功したと言う方法です。



10年前であっても、フロントエンドの開発者にとって、人々の知覚と心理学に関する本を読むことは、当たり前のことでした。 これは当たり前のことと考えられています。サイトを開発する人は、UX、UI、考えられる情報の量、投稿方法のベストブックをすべて読んでいます。 そして、これは結局のところ、ほぼ医学から私たちにやってきた隣接技術であり、同じことが物理学、化学、生物学にも当てはまります。



今日、彼らは量子コンピューターについて多くを語っていますが、それが何であるかを理解している人はほとんどいません。 大衆に投入する準備ができた最初の操作可能な量子コンピューターを作成することができるとき、これは技術スタック全体を根本的に変えるでしょう。 同時に、すべてを捨てる必要はありません。 条件に応じて、Parallels DesktopがWindowsとMacの間の互換性の問題をどのように解決するかという、はるかに大容量の互換性ツールを探します。



彼らはまた、生物学的コンピューターを構築する可能性を検討しています。 これが起こると、コンピューティングテクノロジーだけでなく、医学や社会全体の構造も根本的に変化します。 現在、大衆薬はほんの数個の指標で人々の健康を監視しています。大まかに言えば、これは脈拍、圧力、および生化学的血液検査です。 しかし、人間の体内で「生きる」デバイスを作成し、このデータをすべて地球上の各人に対してリアルタイムで生成するとしたらどうでしょうか。 これに伴う結果を想像してください。平均寿命は悲惨な関心ではなく、非常に顕著な数によって増加します。



段階的な成長は幅広になると思います。 新しい開発ツールと新しいプラットフォームを作成するには、ITだけでなく知識も必要です。 同じElon Muskは、エネルギーを輸送して節約する効果的な方法を作成します。 これにはすべて、非常に幅広い技術と知識が含まれます。 小型デバイスに収まるバッテリーをどうにかして作成し、少なくとも1年間充電する必要がない場合、これは次の技術波の原因となる異常な成長ポイントになります。 各領域には、そのような成長ポイントが必然的に現れる境界領域があります-唯一の問題はいつ、誰が成功するかです。 次の移行中に過去に残っている人々がいます。彼らは絶えませんが、そのような成長、お金、そして何か面白いものはもはやありません。



期限切れにならない基本的な知識を得る



今すぐ学習を始めても、5〜10年後には時代遅れになります。 したがって、どんなに愚かに聞こえても、学ぶことを学ぶ必要があります。 時間に余裕がある場合は、物理学と数学のコースから始めて、使用するものがどのように機能するかに専念することをお勧めします。 基本的な知識がなければ、悪名高い学習能力は使いにくいです。 物理レベルでコンピューターがどのように機能するかを理解している人にとっては、たとえそれを使用せず、はるかに高いレベルの言語で作業していても、次のレベルに移動することは常にずっと簡単です。 彼らは車を使用してギアをオンにするだけでなく、車の仕組みを理解しています。 このことが電気自動車のようなものになると、彼らはこの移行を行うのがはるかに簡単になります。



長期的な開発と成長の戦略を立てる場合、それは応用よりも重要ですが、基本的な知識です。 GETリクエストを送信する方法の些細なアイデアではなく、HTTPプロトコルの理解:なぜそれが行われたのか、どのようなアイデアがそこに入れられたのか。 条件付きSPDY(Googleが開発したプロトコル。HTTPの一部に代わるものとして提供されています。-Ed。Ed。)に進むと、この変更がどのように発生したかを理解できます。 これらの要求がサーバーに送信されるタイミング、サーバー上でこれらの計算を行うプロセッサーの動作方法についての一般的な理解が必要です。 すべてを深く掘り下げる必要はありませんが、幅広い知識を得るには、すべての仕組みを理解する必要があります。



ソース: LookAtMe列



All Articles