ジュニア開発者からシニアまで

こんにちは、Habr。 システム管理者に関する記事に触発されて、開発者向けに似たようなものを書くことにしました。



しかし、上級開発者を育てる道に着手する前に、「プログラミングが好きですか?」という簡単な質問を自問する必要があります。



画像

シニア開発者 ここから撮影。







孔子は「自分の好みに合ったレッスンを選択すれば、1日働く必要はありません!」というdictに属します。 開発者にとって、これは100パーセント真実です。 コードを書くのが楽しい場合、機能が動作するのが喜びで圧倒される場合、プログラムが「計画どおり」になり、感情的な盛り上がりが生じる場合-はい、プログラミングは喜びとお金をもたらし、最も重要なことは、開発者のキャリアを築くことは本当の喜びに変わります



それでは、何をする必要がありますか?




1.早めに開始する




アルゴリズムの基本は私の小学校で始まりました。 7mから10m-CでPascalを教え始めました。当然、5年生はほとんどいませんが、メッセージは次のとおりです。 さらに、学校はまだ十分な理解を与えていません。プログラミングのレッスンがあっても、本のような完全な知識を提供しません。 ですから、高校生のために、そしてこのトピックに精通するために、古典的な「Kernigan、Richie:Cプログラミング言語」を提案します。 率直に言って、私はこの本を同じ名前の本に変えましたが、それはポドベルスキーとフォーミンの著者です。



2.自分で学ぶ




真剣に。 あなたはプログラミングによってのみプログラミングを学ぶことができます。 本やマニュアルを読む。 例を分解してください。 独自のプログラムを作成します。 むかしむかし、アニメを見たかったのですが、ロシア語の吹き替えはなく、strに字幕がありました(右?)。 問題は、インターネットが遅くて高価だったこと(こんにちは、ダイヤルアップ!)、そして見つかった字幕が5秒遅れていたことです。 手でファイルを編集するのは非常に長い時間であったことは明らかです。そのため、C + WinApiは、オフセットファイルのサイズ、サイズ、符号を受け入れるダイアログアプリケーションを作成し、修正されたサブファイルを作成しました。 それは自然に曲がりくねって痛く書かれていましたが、



a)問題を解決しました

b)WinApiの基本を理解した

c)学習したデバッグとデバッグ出力



3.職業別に大学に行く




プログラミング自体があまり与えられなくても、学習にはいくつかの利点があります。



1.数学的根拠。 とにかく数学が重宝します。 Android用の最も単純なグラフィカルエディターまたはLinux用のゲームを作成しますか。暗号化アルゴリズムを実装しますか。それでも数学が必要です。



2.将来の同僚。 これらの人はあなたのクラスメートと仲間の学生です-彼らは将来プログラマでもあります! あなたは彼らと経験を交換することができ、5年後に推奨事項について良い会社を得る機会を得ます。 そして、専門的な問題について話し合うことは常に素晴らしいことです。



3.大学のコミュニケーション。 まともな大学は常にIT企業と協力しています。 ハードウェア、ソフトウェア、またはその両方の開発者でもかまいません。 これらの企業からスペシャリストが来て、講義を行います-はい、午前中の土曜日に。 しかし、これは業界の波に乗っている人々から学ぶ機会です。



4.早めに始めましょう




インターンシップを取得してみてください。 多くの開発会社は、特に現在、2〜3年生の学生を対象に人材検索を行っています。 これは主に有能な人材が不足しているためであり、したがって、企業はそのような人材を自分で成長させることを決定します。 インターンシップが成功した後、彼らは通常、最悪のお金ではなく、週20〜30時間の職場を約束します。



4.基本を理解する




コンピューターの仕組みを理解します。 プロセッサ、メモリ、クロック、レジスタ、ポインタ、メモリモデルとは何か。 プロセッサアーキテクチャの完全な知識は不要であることは明らかです。 しかし、プログラムがどのように実行されるか、スタックとヒープは何かを理解するには、最初の年にすでに知っている必要があります。



データ構造とアルゴリズムを学びます。 それらはすべての基盤です。 あらゆるアプリケーションを解決するために、彼らは最初にそれらを記述するデータ構造とオブジェクトを選択してから、それらを使用します。 データ構造はすべての中核です。



5.一番下まで行って理解する




画像



これが開発の基本原則です。 基盤がどのように機能するかを知らないと、多かれ少なかれ複雑なシステムの動作を理解することは不可能です。 そして、誰もが抽象化について話していますが、あなたと私は抽象化が流れることを知っています 。 したがって、各問題で、原因を見つける必要があります。 それ以外の場合は、 貨物カルトを取得します。 どのくらいの人がこれを実現しているのかはわかりませんが、システムの原理を理解するだけで、予測可能な時間枠で何かを行うことができます。 ちなみに、これはプログラミングだけでなく、一般的な作業にも当てはまります。



作業対象のソースを学習します。 もちろん、常に利用できるとは限りません。 ただし、ソースを入手できた場合は、連絡してください。 Javaを使用している場合は、ライブラリクラスの記述方法を参照してください。 他の人のコードを読むことは簡単に役立ちます。なぜなら、読むとき、学ぶと同時に、この関数またはその関数が呼び出されたときに何が起こるかを理解するからです。



6.止まらない




TreeSetの原理など、知識を得るたびに、「私はクールだ!」という瞬間を感じる必要があります。 私はそれがどのように機能するか知っています!」 そして次の瞬間に、プライドを和らげて先へ進みましょう。 学習は、さらなる学習のインスピレーションとなります。



画像



7.最高のツールを使用する




構文を強調表示するツールに出会うまで、ノートブックに書くのは良いことです。 このようなツールは、オートコンプリートが何であるかを理解するまで有効です。 アイデアは明確です。



8.長老とチャット




彼らはあなたよりも経験豊富で、彼らの経験を共有します。 常に最高の方法を尋ねてください。 2つの疑わしい選択肢の間で苦しめられているとき、単に良いものを見ない可能性があります。 テクニカルマネージャーに連絡してください。



9.他の人を助ける




前の原則が良いという事実にもかかわらず、さらに良いことがあります。他の人を助けること、あなたは自分自身を学びます。 stackoverflow.comに登録して応答します。 これは開発の良い方法であるだけでなく、SOのプロファイルは履歴書の行であり、carriers.stackexchange.comへのパスです。



10.インタビューに行く




突然、転職しないように。 技術専門家が何を求めているかを知ることで、どの分野の知識にギャップがあるかを理解できます。 帰宅してこのギャップを埋め始めることができたら。



プログラマになる方法は明らかです。 シニアになるには?




私の理解では、上級プログラマーは少なくともプロジェクト全体を自分でできる人です。 これは、彼がプラットフォームの原則を理解していることを意味します。 彼は、アプリケーションのライフサイクルを知っています(起動、動作、オフになっただけでなく、作成、テスト、リリース、更新、削除されました)。 彼は建築を通して考えることができます。 彼は開発のエコシステムを構築できます。 上級プログラマーは単なる開発者ではありません。 彼の責任には、開発だけでなく、この開発プロセスの維持も含まれます。 これは、彼が自分のツールをよく知っていることを意味します。 彼は製品の品​​質(テスト、検査)を確保する方法を知っており、 ワンクリックでバイナリを収集することが重要であることを知っています

彼は同僚や部下のタスクを設定できます。



これをすべて達成する方法は?




私にとっては、たった一つの答えがあります-自分のプロジェクトです。 オープンであろうとなかろうと、カスタムであろうと熱狂的であろうと、それは問題ではありません。 プログラマーとしての仕事を得た場合、プロジェクトのセットアップに参加することはできません。 そして、年長者は忙しい人々であり、何千もの小さなものがなぜ作られたのかを何らかの形で伝えることは必ずしも便利ではありません。 プロジェクトを自分で上げるためのゼロからの試みがあると、ささいなことを理解できます:ソースコードでリポジトリを構成し、プロジェクト構造を作成し、テストインフラストラクチャを確立し、継続的な統合を上げ、プロジェクトのバグトラッカーを構成します。



何を読む?




私自身は主にJavaプログラマーです。 したがって、c ++やpythonに関する本はお勧めしません。 ここに私が読んだもののリストがあります:



0. Cプログラミング言語(Podbelsky、Fomin)。

1. Java 6 2ndエディションのJava認定

2.効果的なJava(ジョシュアブロッホ)

3.コードの完了(Steve Macconnell)。

4.実務における並行性(Dug Leaおよびその他)。



オリジナルのベストをすべてお読みください。 これには英語が必要であることは明らかですが、最高のプログラミング資料はすべて英語のままです。



そして、どのような品質のコードを入手できますか?




コードの唯一の重要な基準は、その作業の正確さに加えて、読みやすさです。 ほとんどの場合(パフォーマンスについては静かにしてください)、明確なコードは良いコードです。 コードをサポートする精神病医のことは思い出しませんが、読みやすいコードへの欲求は、あなたを高みに引き上げます。



All Articles