この残酷な世界でプログラマになる方法

こんにちは、親愛なるhabro-usersとhabro-visitorsです。 今日のプログラミングの分野における現状についての私の意見を共有したいと思います。

みんなのお気に入りのプログラミングの分野での彼の貴重な個性のコーシャ開発に関する9000以上の投稿が見られました。 インターネットは、誰もが完全にランダムに情報を抽出する(彼らは少しずつ情報を収集する)大きな山であり、彼の脳は以前に研究されたすべてのものを編集します。したがって、私は意見に同意するか同意しないかを尋ねますが、議論はしません。 次に、プログラミングの世界とその分類に関するあなたのビジョンと、成功するためのいくつかの提案を提供します。 行こう:



1)

IT分野に興味を持ち、その分野にとどまっている人のためのIT部門の人の割合。 プログラマは、他の種類の人々と同様に、研究者と定住者に分かれています。



前者は何を成し遂げるべきかの写真を頭の中に保持し、外部の写真が内部と一致すると、彼らは頭の中で新しいものを作ります。 つまり、これは目標設定です。 このカテゴリには、Bill Gates、Larry Page、Steve Jobsなど、すべてのITの達人が含まれます。 ジョブを例として使用します(Wikipediaから引用してエンジニアにプロジェクトをデモンストレーションしたとき、彼らはすぐに実装できない理由を38の理由で説明しました。そして、「いいえ、実装する必要があります。」私は会社の最高経営責任者であるため、私は答えました、そして、これはできると思います。「そして彼らは従わなければなりませんでした。) 知っているし、しません。 あなたがそのような人なら、あなたはひどく幸運です-あなたの人生は意味に満ち、幸せに満ちています。



2番目(座りがちな人)は、「数学のないプログラマになる方法」、「人文科学のプログラマになる方法」などの記事が好きで、Googleで「モスクワのプログラマの給料」を検索して、両親は裕福でした。大学で友人として勉強していた場合、この先生は何も教えませんでした。



まあ、もちろん、人々が技術を取り上げてそれを時間をかけて捨てたり、見通しがぼやけたりする中間レベルがあります。 長い間このギャップに自分自身を見つけた人は、そのギャップにとどまることはありません-彼らは2mまで滑り落ちるか、最初に上がります。 さらに、このルールはあらゆる職業のあらゆるギャップに適用され、私はこのクラスに自分を帰属させ、私の星は地平線上にのみ上昇します。 この投稿を読んでいるほとんどの人がここにいると思います。



2)

あなたと私が中間レベルにいると考えて、抽象度を1レベル下に下げます。そうでなければ、あなたはすでに内なる光に満ちているか、逆に絶望しているので、これ以上読む必要はありません。 私のような真実を積極的に探している人のために、私は2レベルを書いています。



MMORPGの場合と同様に、成長のためのスキル(+攻撃、+器用さなど)を収集し、それらをヒーローのスキルの骨格に入れます。したがって、プログラミングでは、他のプログラマーよりも高いスキルを収集します。 プログラマが空気として必要とする基本的なスキルがあり、他のすべてはこのスケルトンに吹きかけるだけだと思います。



スキル1-数学的思考。

画像

数学は簡単です。 これは、あらゆる分野のモデルを考案する方法の科学です。 はい、「5つのリンゴとMasha-4つのリンゴを一緒に持っている」から、販売員のNPタスクで終わる「NステーションとKトラックがこれらのステーションにある場合に最適な配送ルート」で終わるものは絶対にあります。 数学なしで。 絶対に。



スキル2-アルゴリズムとデータ構造。

画像

前の段落に同意しないと仮定しますが、これに同意することはできません。 Wirthの本の1つは「アルゴリズム+データ構造=プログラム」と呼ばれます。 いわゆる聖書のアルゴリズム(Kormen、Aho、Knut)のいずれかを十分に研究して理解している場合、あなたはすでに80%のクールなプログラマーであると確信していますが、残念ながらこれを行うにはアイテム番号1が必要です。



スキル3-情報を即座に見つけて吸収する能力。

画像

現代のITは、世界で最も急速に成長している分野です。 したがって、すべてを迅速に行う時間がない場合は、熱心に教えた技術はすでに主張されていません。



スキル4-英語の知識

画像

これは、ほとんどすべての最も価値のある新しい情報が英語で表示されるという事実のため、これは以前のスキルのサブセットであると言ってみましょう。



以上です。 とても簡単です。 結局のところ、独創的なものはすべて単純であり、他のすべては技術です。

したがって、特殊な言語を選択しても意味がありません。 C ++、Java、C、Python、ADA、Fortran-これらのすべての言語は、プリミティブデータ構造+操作+ループ+反復+ブロックで構成されています。 汗をかく必要があるのは、第一言語をマスターすることだけです。

ネットワーク、分散コンピューティング、エキスパートシステム、データベース、その他すべては、お好みの言語に翻訳された単なる数学です。



3)

以下の抽象化の別のレベルに進みます。 実用的なヒントとコツを次に示します。



何でも成功するには、これを行う必要があります。なぜなら、常に行われていることだけがうまく行われているからです。

何を勉強しても、練習なしではゼロです。 頭の中でビデオコースを見た後、一般的な印象しかないと思うのはなぜですか?



どこから始めればよいかわからない場合は、アルゴリズムから始めます。 これは、すべての病気の万能薬です。 正しい人の間では、トーマス・コーメンの本を研究するのが慣習です-アルゴリズム、構築と分析。 どのような場合でも、誤解された資料をスキップすることはできません-私は何かを理解していませんでした-グーグル、ハブリ、質問、検索、見た目など。 それはすべて誘導によるものです-私は単純なことを理解していませんでした-あなたは理解できません(または正しく理解できません)。

同時に、topcoder.comに登録してください。これは、あらゆる種類のプログラミングで競争するために作成された世界中のプログラマー向けのプラットフォームです。 ただし、サブセクションとしてエアアルゴリズムが必要です。



Tkは最も効果的な学習方法の1つです。特に注意を払います。



-topcoder.comにアクセスします

-私たちは参加しています

-右上隅のコミュニティポータルに移動します

-O(n)セクションの特別なアプリケーション(プラットフォームまたはアリーナと呼ばれる)をダウンロードします-アルゴリズムセクション

-そこに入ってログインします



画像



プラットフォームとは何ですか?

このクライアントサーバーアプリケーションを使用すると、競合する多数のユーザーに接続できます。

私たちが必要とする競争の種類はSRM(シングルラウンドマッチ)です。これはほぼ毎週開催される競争であり、評価を獲得する機会を与えます(適切な評価を行えば、適切な人と一緒に良い会社に入る可能性が非常に高くなります)。



評価はどのように上昇していますか?

それぞれに3つのタスクがあり、2つの部門があります(ハードプログラマが2つ、地獄のプログラマが1つ)。

1-250-350ポイント

2-450-650ポイント

3-約100ポイント

さらに、第2部門の第2および第3タスクも、第1部門の第1および第2タスクと同じであることが非常に多いことに注意してください。



プラットフォームの信じられないほど便利な機能は、もちろん練習室です-それは人生での実用性と適用性で信じられないほどの数のタスクです。 また、他のユーザーによる同じ問題の解決策を見ることができます-世界最高のプログラマー



残念ながら、この奇跡は誰もが利用できるわけではありません。少なくともGoogle翻訳者と、C ++、Java、C#、VBの言語の少なくとも1つで英語を知っている必要があります。



TopcoderGradを呼び出すためにすぐにホワイトホースを使用するには、いくつかの簡単なヒントを示します。



1)プログラマーの有効性の主な指標は、最高レベルの抽象化を使用する能力であるため、STLから可能なすべてのものを接続して処理を開始します。 他の人がすでに書いているのに、なぜ新しいコードを書くのか。 「良いアーティストがコピー、最高-盗む」ピカソ。

#include <iostream> #include <string> #include <cassert> #include <complex> #include <cctype> #include <climits> #include <queue> #include <utility> #include <algorithm> #include <vector> #include <sstream> #include <functional> #include <cmath> #include <cstdio> #include <cstdlib> #include <numeric> #include <map> #include <set> #include <list> #include <time.h>
      
      





2)マクロを記述します(これらは、プリプロセッサによってソースコードに動的に置き換えられるコードです)

 #define ff(i,m) for(int i = 0; i < m; i++) //      #define VI vector<int> //        #define VS vector<string>
      
      





3)便利なIDE(VisualStudio、Xcode、コード::ブロック、JetBrainなどの開発環境)を選択します。

4)練習、練習、練習、練習、そして練習!!!



これは、すべてを一度に取得する最も簡単な方法です。 トップコーダーが終了しました。



抽象化の第3レベルのもう1つの重要な側面は、フィールド全体の研究です。 私はあなたに人々に話します-Habrを読んでください-ここでロシアのITのすべての最も興味深い人々が集まりました。 読んだり読んだり、読書や雑誌と同じように興味のある、タクサビーで面白くない記事をもう一度読んでください。モスクワの給料や言語の選択などの問題が意味を失い始めることがすぐにわかります。



まあ、1日あたりの英語の約30分を忘れないでください。



さて、結論として、あなたと私たち全員があなたの研究に幸運と成功をお祈りします。 あなたが良くなればなるほど、私も良くなります。 私たちはこの国の未来です。一緒に発展し、助け合いましょう。 この投稿が誰かに役立つことを願っています。



All Articles