過去の自分へのアドバイス

私はほとんど経験がありません(私はプログラマとして合計16か月働いた)が、過去に自分自身に、つまり言い換えれば、現在大学で勉強していてソフトウェア開発者になることを計画しているすべての人に、いくつかのアドバイスをしたいと思います。 決して知恵や経験のふりをしません。 少し考えた後、これらのすべてのヒントが今日の私にとってこれまで以上に関連していることに気付きました。 私は昨年私のブログに最初のメモを公開しましたが、現在はブログの読者のアドバイスによって拡張されたリストをここに公開しています。



すべてのヒントは自律的であり、その順序は重要ではありません。





開発者はどの言語を知っている必要がありますか? いいえ、SiでもJavaでもありません。 英語 英語を学び、技術だけでなく会話も学んでください。



プログラム。 プログラム。 プログラム。 私が働いている会社のマネージャーは、プログラマーの履歴書はgithubであると考えています。 もちろん、これは単なる表現であり、ポイントは、プログラマーが最初にコードを受け取り、次に評価、推奨事項、および証明書を受け取ることです。 プログラム。 成績は学年よりも重要です。 雇用主がそうでないと主張する場合、彼と仕事を得る前によく考えてください。



UNIXについて知る。 Ubuntuをインストールしてカーネルをコンパイルすることは、UNIXに慣れていません。 UNIXの哲学を支える工学および科学の基礎について読んでください。 必ずしもクールなシステム管理者になり、数十台のサーバーを調達するわけではありません。作業の原則とUNIXの方法に慣れるだけでよいのです。



数学が主なものです。 多くのソフトウェア企業の純粋な消費者志向にもかかわらず、基礎科学はすべての基盤のままです。



質問してください。 当然、Googleで答えが見つからなかった場合。 したがって、Googleが回答できる質問をしないでください。 StackOverflowはあなたの親友です。 友人、教師、同僚の間でオンラインで質問します。 愚かな質問は無知よりも優れています。



バージョン管理システムについて知る。 少なくとも主なもの-SVN、Git、Mercurial。 マシンでリポジトリを開き、宿題や独自のプロジェクトに使用します。



最新の開発ツールについて知る。 多くの場合、大学は本格的な作業に必要な開発環境やその他のプログラムやユーティリティに注意を払っていません。 多くのIDEは無料です。Eclipse、NetBeans、Emacs、Xcodeを試して、作業の原則に慣れ、便利なツールを見つけてください。



デバッガーの使用方法を学びます。 大学がこれにほとんど注意を払っていない理由が完全に理解できないほど重大です。



開発方法に精通します。 彼らが大学生活でアプリケーションを思い付くのは難しいですが、それはまだ可能です。 少なくとも、別のプロジェクトで独自の方法論を使用してみてください。



デザインパターンに精通します。 彼らはすでにこれについて100回話しましたが、私はそれを繰り返します。 ここでは、逃げることはなく、少なくともいくつかの基本的なパターンをどこかに適用する必要があります。 携帯電話を取り出して、出会った最初のプログラムを見てください。その開発にどのようなパターンを適用できるか想像してみてください。



チームとしてプログラムします。 2人でも、特に上記のヒントを適用する場合、良い経験を得ることができます。バージョン管理システムを使用し、方法論を適用し、何らかのパターンを使用します。 おそらくこの時点では、これはあまり意味がなく、混乱することなくコードを書く方がはるかに簡単で高速であると思われます。おそらくあなたは正しいでしょうが、忘れないでください-すべての研究は仕事よりも運動です。 ペアプログラミングを練習します。



独自のプロジェクトに取り組みます。 最初のポイントに戻ります-プログラム。ただし、宿題や本の練習に限定されません。 プロジェクトを開始します。



新しいプログラミング言語を学んでください。 時々「私たちは何かを教えられますが、それが人生のどこに適用されるのかわかりません」というようなことを聞​​きます。 このような人々はしばしばこの知識の無益さを非常に確信しているため、卒業後は現在人気のあるプログラミング言語でプログラムするように教えられなかったため、他の専門分野で働いています。 「今後必要ない」というフレーズは忘れてください。 幼稚園が読むように教えられるとき、誰もプロの読者を準備しません。 子どもたちは、ツールを使用して情報を取得するように教えられています。



コーディングがあなたがしなければならない唯一のこととは程遠いという考えに慣れてください 。 ほとんどの場合、開発者はクライアントと協力し、問題の解決策を探し、ツールとテクノロジーと戦う必要があります。



決定を下し、人々を説得します。 プロジェクトマネージャーまたはクライアントに同意しない場合は、息をのむような静かなマットで嫌いなタスクを実行するのではなく、それらを説得するようにしてください。



快適な環境を主張します。 優れた雇用主にとって、主なことは開発者の生産性であり、職場が気に入らない場合、生産性を高めることは困難です。 この概念には、テーブルと椅子だけでなく、作業スケジュール、建物、オフィス、雰囲気、開発ツールなども含まれます。



パレートの原則を忘れないでください。 作業の20%が結果の80%をもたらします。 もちろん、これはルールではなく、非常に明白な傾向です。



古典を読む: Code CompleteThe Pragmatic ProgrammerThe Practice of ProgrammingDesign Patterns



計画することを学ぶ。 同じ大学の課題-どのくらい時間がかかるかを評価し、最後に作業を分析します。 これを絶えず、さまざまな種類の作業のために行います。 時間通りに作業を行う開発者は、他の作業よりも作業を迅速に行う開発者よりもはるかに価値があります。 心配しないでください。将来の仕事の量を明確に評価することを学ばなければ、誰もそれを行う方法を知りません:-)



優先順位を設定します。 キャプテンエビデンスからの別のヒント。 以前のアドバイスと合わせて、効率を大幅に向上させることができます。



ジョブのセキュリティにこだわらないでください。 お金が今ここで支払われているという理由だけで、あなたの意志に反して作業しないでください。 あなたのキャリアを確保するための最良の方法は、常に喜びを持って開発し、働くことです。



そして最も重要なことは、プログラミングが気に入らない場合、プログラマーにならないことです。 非常に簡単です:-)良いことは、喜びなくして終わることはできません。



今後5年以内にこのリストに新しいヒントを追加することを望んでいますが、今のところは自分で何かアドバイスすることができます。



All Articles