この記事は、プログラマー、開発者という職業による自己教育のプロセスにおける私の結論の結果です。 2つの概念の意味は似ていますが、それにもかかわらず、開発者はより高いレベルであり、これは通常ソフトウェア製品を作成する初期段階で戦略的な決定を下せる人です。 プログラマーはパフォーマーとして機能し、割り当てられたタスクを解決する戦術的なレベルで働きます。 最も低いレベルはエンコーダーであり、その人はソースを書いているだけです。ソフトウェア製品を作成する特定の「抽象的な」開発者/プログラマーを想像してください。 私たちは彼を生きている人としてではなく、長年の仕事を通じて彼の頭の中に蓄積された特定の知識の雲として考えます。 私たちの抽象的なプログラマーは、ほぼすべての分野の専門家であり、これが私たちの理想です。 達成不可能な理想! しかし、頭の中で知識の雲を形成する方法は? この知識はどの順序で流れますか? この知識を分類するには?
まず、情報と知識の全体を分類することは一般的に困難です。 それは人間の臓器のようなものです-それぞれが必要なもののためのものであり、それぞれが車の部品のように独自の方法でユニークです-重要なノードがないため、システム全体を操作することは不可能です 「プログラマができることは何ですか?」または「開発者は何を知る必要がありますか?」
今後のトレーニングを計画する際に、適切な場所にあるディスク上に特定の名前でいくつかのフォルダーを直接作成しました。 これらのフォルダに、分類に従って、書籍の電子版を読んで購入しました。 これまでのところ、フォルダーの多くは空になっていますが、業界全体をよりよく理解し、パズルの組み立てを見るために必要です。 カタログ全体を簡潔にするために、フォルダー名は英語の1つの単語で構成されています。 以下のテキストには、すべてのカテゴリとそれぞれの説明がリストされています。
- アルゴリズム-アルゴリズムとデータ構造。 一般的な情報を扱う数学的な方法、データを検索および処理する方法。
- Bugtrack-エラー制御および追跡システム。 はい、プログラムの準備ができて、突然バグが表示されたら、それを修正し、問題を解決するタスクを作成できる必要があります。 使用する必要がある理論的な方法と特定のソフトウェア製品の両方があります。
- データベース -データベース。 データベースの理論的基礎と、データベースを操作するための特定のソフトウェア製品とクエリ言語の両方について説明しています。
- 暗号化 -コンピューターのセキュリティ、暗号化。 ソフトウェア保護方法、重要なデータの暗号化に関するかなり幅広いセクション。 実際、情報セキュリティは信頼できるプログラムを書くことから始まります。
- 環境 -統合開発環境(IDE)。 ここでは、プログラムコードが実際に作成されるさまざまな開発環境を検討します。 それらのいくつかの機会の富は非常に広いので、本全体が彼らと働くことについて書かれています。
- 形式 -ファイル形式。 多くの場合、プログラムはコンピューター上のファイルで機能することを理解する必要があります。 さまざまなファイルがさまざまな方法でディスクに保存され、多くの場合、特定のファイル形式の構造を知って、プログラムを操作するための指示を与える必要があります。 このカテゴリは、本の著者によってほとんど共有されていません。
- グラフィック -グラフィック。 この概念を別のカテゴリーに入れるべきかどうか疑問に思いました。 視覚は他の感覚よりも優先されるため、この質問は非常に重要です。 これには、モニター画面に画像をレンダリングするためのテクニックが含まれます。
- 言語 -プログラミング言語。 プログラミングパラダイムに関係なく、さまざまな既存の言語。 多くの人にとって、プログラミング言語は専門分野を選択する出発点です。
- ライブラリ -ライブラリとフレームワーク。 これには、プログラマーが料理を準備するのに使用するすべての「半製品」が含まれます。 それらの使用の有用性は明らかであり、複雑さと多様性は年々増加しています。
- パターン -デザインパターン。 プログラム作成におけるさまざまなアプローチと実践の説明。 さまざまなプログラミングパラダイムを検討します。多くの場合、特定の何かに結び付けられるのではなく、プログラミング言語のファミリに基づいています。
- プラットフォームはハードウェアプラットフォームです。 一部の開発者は、このような「低」レベルに沈む必要はありません。 他の場合、例えば、マイクロコントローラ用に開発する場合、鉄の知識がなくてもどこにもありません。 システムプログラミングでは、ハードウェアがソフトウェアとどのように相互作用するかを理解する必要もあります。
- プロトコル -データ転送プロトコル。 ネットワークとインターネットは私たちの生活にしっかりと入っています。 多くのプログラムは、コンピューター間でデータを転送するためにさまざまなメカニズムを使用します。 リモートインタラクションに既存のメカニズムを適切に使用することを学ぶプログラマーもいれば、独自のデータ転送プロトコルを開発するプログラマーもいます。
- 正規 -正規表現。 データ処理におけるさまざまな「トリック」とトリック。 特定の問題を解決する独自の方法。
- システム -オペレーティングシステム。 特定のOS用のプログラムを作成するときに知っておく必要があるすべて。 APIに目を向けると、プログラムは何らかの形で実行環境と対話する必要があります。
- テスト -テスト。 ソフトウェア開発サイクルの最終ステップ。 ソフトウェア製品の公式リリースの前にテスト方法を作成し、許容できないバグを特定することで、将来の問題を回避できます。
- バージョン -バージョン管理システム。 多くのプログラミングにとって、これは最終的な結果ではなく、プロセス、永遠のプロセスです。 プログラマーは、単独でまたはグループで、ソフトウェア製品を開発し、さまざまな機能を試し、実験します。これはすべて比較的安全です。その場合、バージョン管理システムにより、すべてをそのまま返すことができます。
ご覧のとおり、それは自分自身が多くても少しでも、16ポイントでした。 コメントは、この分類に関する議論と健全な批判を歓迎します。
更新プログラマーの知識の分類にさらに2つのカテゴリーを追加することにしました。 だから:
- サーバー -サーバーおよびクラウドテクノロジー。 これには、プログラム計画のサーバーに関する知識の全領域と、作業で「クラウド」を使用するスキルが含まれます。これは、新しいトレンドであるSaaSも意味します。
- 仮想 -仮想化テクノロジー。 仮想マシンを作成するためのツールはそれほど多くありませんが、場合によっては、たとえば、異なるオペレーティングシステムの仮想マシンでプログラムをテストするために使用できると便利です。