初心者として、私はそこにある情報の量と、プログラマーとして開発する必要がある自己指示の量に圧倒されています。プログラミングの世界でどのように志向しましたか?教科書は本当に行くべき道ですか?または、メンターを見つけるのが最善ですか?ある種のガイドはありましたか、それともプログラミングのスキルを向上させるために従うべきであるある種の普遍的なガイドがあるべきですか?
それは愛の労働である必要があります。なぜプログラマーになりたいのですか?あなたはクールなビデオゲームを作りたいですか?あなたはモバイルアプリについて素晴らしいアイデアを持っていますか?素晴らしいWebアプリケーションを構築したいですか?数学について詳しく知りたいですか?
答えがわからない場合は、考えてから、それを実現する方法を検討してください。本やブログなどは素晴らしいですが、コードの読み書きに代わるものはありません。 GitHubアカウントを作成し、興味のあるドメインでプロジェクトを探します。そのコードから学習してみてください。次に、自分でコードを記述してみます。
あなたがプログラムしたい理由が良い仕事を得たりお金を稼ぐことであるなら、今はやめて、再評価してください。なぜなら、それに対する愛情がなければ、おそらくどちらも得られないからです。それは堅実なキャリアパスでしたが、一般にソフトウェアへの愛情がなかったためにそれに参加した専門家の大多数は、仕事に特に満足していないか、仕事に特に優れているわけではありません。優れたプログラマになるには、仕事と余暇に努力が必要です。報酬を得ているかどうかにかかわらず、それはあなたがしたいことでなければなりません。それがあなたにとってそれではないなら、他のことをすることを考えてください。
コンピュータサイエンスでは解決すべき問題が非常に多いため、すべてのドメインにまたがる優れた一般的なプログラマなど、実際には存在しません。私は最先端のグラフィックソフトウェアを書いているが、Webアプリケーションの書き方を知らない人を知っています。
そもそもなぜ最初に興味を持ったのですか?それに焦点を当て、どんなに些細なことでも、できるだけ早くいくつかのソフトウェアの作成を始めれば、あなたは正しい軌道に乗ることができます。
独学のプログラマーとして、私は同じような時期を経験しました。すべてをマスターするには、あまりにも多くの方法があります。好きなエリアを見つけて、最初から始めましょう。最終的に、やる気があり、それに固執すれば、必要以上に純粋に学ぶことになるでしょう。
やりがいのあることは簡単ではありません。有能になるにはanythingには多くの時間と練習が必要です。ゆっくりと時間をかけて、次に進む前に深いレベルで出くわす各概念を学ぶのに費やしてください。そうすれば、すぐに実際にかなりの知識があることがわかります。
私はあなたのために感じます:-)私たちの古いオナラはずっと楽だった
私が専門的にプログラミングを始めたとき、それは(QBasicではなく)Microsoft Quick Basicでした。 24x80文字の画面ではそれほど問題になることはありません。データベースはなく、フラットファイルのみです。 DOS APIは100ページ未満で文書化されていました(ページごとに1コールで)私はグラフィックプログラミングを行うためにMicrosoft Quick Cに移動しました。途中でDBaseを追加しました。 Windows 3.1が登場して複雑さが加わりましたが、段階的で扱いやすかったです。その後すぐに、クライアント/サーバーデータベースが登場しました。かなり数年後、Webが登場し、IEおよびNetscapeの新しいリリースごとに、学習する新機能(JavaScript、CSS、DHTML)が登場しました。)テクノロジーは次第に進化しました。もし私たちが十分に早く始めたなら、年に1つの新しいことを学ぶことができます。
私が現在取り組んでいるかなり控えめなプロジェクトを見て、このプロジェクトで作業するには、Java、Oracle PL/SQL、JavaScript、JSP /サーブレット、CSSおよびHTML(および適切なアーキテクチャとデザインパターンの使用)を知っている必要があります。 。特に学校はあなたにこれのための特別な準備をしていないので、それは一度に吸収するのがたくさんです。
ただし、AmazonやWWWにはない大きなメリットがあります。昔は情報を入手するのが大変でした。それは本になっていて、あなたは彼らのために一生懸命見なければなりませんでした。 Compuserveは少し後で助けました。これで、Amazonの書店にある本はすべて、翌日すぐに出かけることができます。
ソフトウェアは当時無料ではありませんでした。これで、任意の数の開発IDEとコンパイラーを無料でダウンロードできます(Visual Studio、Eclipse、NetBeansなど)。数十のデータベースサーバー(Oracle、MySQl、SqlServer、Postgresなど...)をダウンロードしてインストールできます。
そして、WWWには(おそらく多すぎる)情報やリソース(stackoverflowなど)があり、世界中の誰かから質問の回答を得ることができます。
この段階で、最終的に知識を収益化したい場合は、専門にする必要があります(幅は後で経験とともに得られます)。
デスクトップクライアントまたはウェブアプリケーション?
C#またはJava?
MS SQLServerまたはOracle?
これらの質問を決定したら(そして後でいつでも変更できます)、「C#とSQLサーバーを使用したWebアプリケーション開発」の開始方法をインテリジェントに尋ねることができますか?
ツールを開く前に初心者が適切な「序文」を持っている場合、彼らは多くの場合、それを芽でつかんで圧倒をなくすことができます。
私はプログラミングを教える会社で初心者を完了するためのインストラクターとして雇われました。 (私は愛情の言葉として「noobs」を使用します、私たち全員がそうではないより多くの領域にいますか?)私が完全なnoobsと言うとき、私は真剣です。私が最初に得た質問の1つは、「右クリックを言うとき、どういう意味ですか?」
私が最初に学んだことの1つは、質問の頻度に関係なく、また質問の程度にかかわらず、自分の声のトーンをまったく同じに保つことでした。私は、各質問に答える方法を学びました。まるで、それが等しく有効で、刺激的で、価値があるのか、そして、その質問がこれまでに行われたのは初めてのようでした。
どんなツールでも、私が使用する圧倒的な序文は次のようになります。開始画面でクリックするアイコンは1つだけです-少なくとも今のところは。あなたが開こうとしているこのツールは、あなたのためだけに作られたのではなく、私たちがこれから達成しようとしているこのタスクのためだけに作られたのではありません。このツールの開発者は、多くのことをしたい多くの人のためにそれを構築する必要があり、使用しない機能を含める必要がありました。それは混乱を招く。そのため、大量のボタンやメニュー項目が表示され、クリックするたびに新しい大量のオプションが表示される場合があります。しかし、このツールを開くたびに、3回のクリックで目的の操作を実行できます。役に立たないオプションのジャングルを通る簡単な秘密の道をお見せします。」
残念ながら、生徒の1人が複雑に見えるものを開く前に、私は常にどんな種類の序文も言うことができませんでした。たとえば、「SQLで切り捨てられなかっただけ」や「Javaになるために必要なものがないだけ」など、文がその生徒の口から出始めるためです。プログラマー」または私の好きな嘘の1つ:「Crystal Reportsは、私が習得するには難しすぎます。」なんてこった!嘘は、欲求不満の瞬間に決心しました(そして信じました)。なぜなら、道具が巨大な森であると思ったからです。
ここに、私が長年にわたって使用してきた私の序文のいくつかを示します。
プログラマーになるために知っておく必要がある基本的な概念は9つだけです。彼らはそれぞれ学ぶのは簡単です。すべてのプログラミング言語では、わずかに異なる構文を使用してこれらの9つの概念を実装できます。これらの概念を学び、いくつかの異なる言語で遊ぶと、C++プログラマーになるだけでなく、C++を含む(これに限定されない)任意の言語でプログラミングできるプログラマーになります。
あなたがしたいすべてのタスクは、単一のステップに分解することができます。長くて複雑なコード行や複雑に見えるコマンド行でさえ、非常に理解しやすい単一のステップで構成されています。複雑なタスクがある場合は、一度に1つのステップを証明し、各結果を検証してから、それらを1つずつ組み合わせて、各組み合わせを検証し、完了するまで開始します。
優秀なプログラマーは本当に優秀なプログラマーではありません。彼らは優れたデバッガです。最初のコンパイル時にエラーが発生しない場合は、心配する必要があります。もしそうなら、あなたは正しい道を進んでいます。好きなことを始められます。
「リソースの階層」を見つけて使用します。鉱山は次のようになります。何かをする必要がある場合は、それを試します。うまくいかない場合は、数分間実験します。それがうまくいかない場合は、ヘルプファイルを使用します。それがうまくいかない場合は、ウェブ検索を使用します。それがうまくいかない場合、私は私の隣にいる最も近いプログラマーに向き直り、彼らから跳ね返ります。それがうまくいかない場合、私は私の友人の1人に電話します。それがうまくいかない場合、私はそれらのフリーランスのサイトの1つで誰かを雇って、それを行う方法を教えてくれます。私は私の人生の最後のステップに2回しか到達していません。 [このスキルを習得したことで、生徒は私をソリューションの主要なソースとして割り当てることができなくなりました。]
学ぶことを学ぶことは、どんな科目を学ぶことよりも重要です。学ぶことを愛することを学ぶことは、どんな科目を学ぶことよりも重要です。 Webで答えを見つけるのに時間がかかる場合は、優れたWeb検索を行う方法を教えているWeb上の優れたチュートリアルを見つけてください。
Visual Studio Expressは無料で、ウィンドウにボタンをドロップして「Hello World」とすぐに表示できるので、多くのWindowsプログラマーがそこから始めます。学習しているときに、VBから始める場合は、少なくとも同じプログラムを同時にC#で作成します。できればJavaといくつかの他の言語も同様です。また、TCC(Tiny C Compiler)のように、コマンドラインベースの少なくとも1つの言語で記述することも賢明です。学習している言語ではないことがわかるまで、学習プロジェクトごとに複数の言語を使用することを強くお勧めします。 、それはプログラミングです。そうしないと、自分を制限して、真実ではない考え方に行き詰まる可能性があります。
何かできるかと聞かれると、答えは「はい」です。 「はい」と言ってそれを意味するのに十分なほど、あなたの学習スキルを信頼することを学んでください-次に、学習を開始します。
間違いをしていなければ、学んでいるわけではありません。それらを祝います。次に修正します。
学習の全プロセスをお楽しみください。バグの解消をお楽しみください。専門家になります。
私にはもっとたくさんありますが、もしあなたが不満を感じているなら、それは問題でもない主題でも概念でもツールでもないことを知っていれば十分かもしれません。そして問題はあなたでもあなたの知性でもあなたの能力でもありません。問題は、単にそれを見る方法です。
正しい見方で、何も圧倒的です。
それを知るためのいくつかのパターンについての私の提案は、あなたを大いに助けるかもしれません:
プログラマーになる方法と、それをうまく機能させる方法のすべての要素を組み合わせる独自の方法があるため、プログラマーになるための普遍的なガイドはありません。 トップダウンのアプローチもあれば、ボトムアップのアプローチもあるかもしれません 。どちらがあなたのためにうまくいくかはあなた自身のために理解しなければならないものです。
教科書やメンターの中で、自分に合ったものを見つけなければなりません。 複数のインテリジェンス 学習方法を理解するのに役立つ場合は、探索する価値があるかもしれません。 Mypersonality.info には、プログラミングの世界で生き残るためのおそらく私の一番のヒントは何かという私の見解から、それが本当に秘訣であることをどのように学ぶかを知るのに役立つテストがあります。
覚えておくべき重要なポイントは、あなたが今何を学ぼうとしているのかということです。あなたはすべてを学ぼうとしていますか?それは私が見る限り実りのない努力ですが、もしあなたがその道を進んで行きたいなら幸運を祈ります。また、あなたが今どこにいるのかという問題もあります。どのようなステップが理にかなっているのかは、どこにいるかによって大きく異なります。たとえば、カナダや米国にいて、高校にさえいない場合、提案はすでに博士号を取得している人とはかなり異なる可能性が高いと私は思います。そして、いくつかの異なる極端をとらえるためだけにフィールドに入りたいと思っています。
それでも問題が解決しない場合は、詳細な情報を入力して、アドバイスを絞り込めるようにする必要があります。質問の答えは、一般的な質問であり、さまざまな回答が考えられます。場合。
あなたが仕事のプログラミングをしているなら、それは上に構築するための最良の基盤かもしれません。コーディングが好きな場合は、どのドメインで作業しているかはほとんど問題ではありません-コーディングできるジョブが必要なだけです。あなたの仕事は必然的にあなたの人生の主な焦点の一つとなり、あなたはあなたの仕事の質に責任を負うことになります。このジョブは、あなたが求めている焦点と規律を提供します。つまり、数え切れないほどの言語、フレームワーク、ライブラリ、およびツールのうち、ジョブでサブセットのみを使用することになります。そのサブセットをマスターします。
仕事で使用する言語とフレームワークのベストプラクティスを学びます。 OSの内部について学びます。ツールを学び、それらをカスタマイズする方法を学びます。キーボードショートカットをご覧ください。少し学び、それを適用し、もう少し学び、それを適用します。この学習と実験の多く(ほとんど?)は自分の時間に行われます。良い!あなたは仕事と生活のバランスを取りたいと思っていますが、あなたが好きな職業を持っているなら、それを学び、上達したいと思うでしょう。そして、自分の時間を学ぶことは自然に見えるでしょう。
また、より経験豊富な開発者に質問してください。最も良い質問は「なぜですか」です。彼らが使用しているツールと、それらをカスタマイズするために彼らがしたことを尋ねます。
時が経つにつれ、あなたは現在の仕事をマスターし、それから新しい挑戦を模索します。あなたの知識の基盤はさらに成長します。などなど。スキルとキャリアを伸ばすことは反復的なプロセスです。
あなたの仕事があなたが書きたい種類のプログラムを書くことを許可しないなら、あなたはおそらくそのような立場を探す必要があります。転職できない場合は、オープンソースプロジェクトに参加するか、独自のレイバーオブラブを作成してください。
本、ブログ、定期刊行物が役立ちます-私はそれらすべての情報源から多くを学びました。しかし、他の誰かが述べたように、より良いコードを書くことを学ぶためにコードを書く必要があります。そして、それが仕事またはあなた自身の「愛の労働」プロジェクトの出番です。言語/フレームワークの表面を引っ掻く「おもちゃ」プログラムは簡単に作成できますが、本当の学習は物事が困難になり、張る。私が責任を負うプロジェクトを持っていると、事態が困難になったときも続ける意欲が生まれます。ただし、誰もが違うので、壁にぶつかったように思われ、Googleが役に立たないときに、キーボードのそばにいるようなものを見つけてください。
幸運を!
私は常に、実装したいいくつかのプロジェクトのリストを用意し、常にそれらの1つに取り組んでいると役立つことに気づきました。一般的に、ある程度複雑なプロジェクトを行うと、新しいことを学び、すでに知っていることを実行し、時には「知っている」ことが間違っていることを教えることになります。
私は正直に言わなければなりません、私はビジネスと言語の学位を大学から離れました、そして今私はプロのWeb開発者です。私が使用したものについての正直な真実は?ええと、私は非常に視覚的で、たくさん読んでいますが、何らかの理由で私は教科書を我慢できません。
今私を誤解しないでください、私は試しました。私は本当に一生懸命頑張りました。しかし、もし教科書が唯一の方法なら、私は今していることをしていません。それ以来私が本を読んでいないと言っているわけではありませんが、それらは一般的に特定の言語についてではなく、プログラミング一般(例:神話の月、SICP)、またはデザイン一般(例えば、スマッシングブック)についての傾向があります。 )、そして最後にプログラミング文化。
言語を学ぶために、私はよく知っているものを使うことにしました。私はMicrosoftのことを知っていて、学位の一部でVBAを使用して高度なマクロを作成することができました。それで私はマイクロソフトのルートを下りました。 asp.netにアクセスすると、必要以上のリソースが見つかり、常に拡大しています。
Channel 9(Google Microsoft Channel 9)に行くと、今日のプログラミング、現在の文化についての深い洞察が得られます。また、MIXビデオを見ると、少し軽量になる傾向があります。あなたが良い考えを持っているとき、それから本を拾います。言語固有の開発図書(24時間以内にXを学習しない)を入手して、見逃したものを確認してください。より詳細な本(例:コードコンプリート)を入手して、実際に読んでください。
しかし、バックエンドのものに専心しないでください。 sitepoint、nettuts +、およびスマッシングマガジンに進んで、フロントエンドで何が行われているのかをよりよく理解してください。 JQuery 4 Designersにアクセスして、フロントエンドを詳細に確認してください。何が起こっているのかをかなりよく理解したら、ビデオとチュートリアルをたどって、自分に合った開発サイクルの各段階を理解し、(まだ理解していない場合は)そこに行きます!
ローカルWeb Devの交流会を探します。私がお勧めできる最大のことの1つは、あなたの周りの中小企業を見ることです。親戚、親しい友人、または頻繁に出会う誰かが、ExcelまたはAccessを使用して仕事をしているが、非効率的で、負荷を軽減するために何かを構築したり、プロセスの1つを自動化したりすることを気にしないまたはWebプレゼンスをセットアップしますか?宗教施設に通っていますか?それらのためにいくつかのWeb開発または設計を行うことを検討してください。
基本的には、プログラムの学習は、外国語を学ぶようなものです。教科書から学ぶことはほとんど基本を教えないでしょう。他の人から学ぶことは、あなたにはるかに大きな理解と理解を与えるでしょう。人々は、メソッドや関数、変数、継承、カプセル化、ジェネリックなどについて話します。それを十分に聞いて理解すれば、あなたもそうするでしょう。ただ学び、それから戻って、後で教科書で見逃したものを見つけてください。
最後に、物事をしっかりと理解したら、標準について学ぶようにしてください。あなた自身の悪い習慣を学ぶのは難しいですが、ほとんどの人にとっては、習慣を通して彼らが学ぶ方法です。悪い習慣を学ぶことはできませんが、標準で理解するのが難しすぎると、それを理解することはできません。
最後に、あきらめないでください。たくさんのブログを読んで、インスピレーションと楽しみを保ってください。 MIX、TED、SXSWでインスピレーションを与える動画をご覧ください。 Coding Horror、Joel on Software、Steve Yegge(これらの3つについては、可能であれば最初から)、およびHacker NewsとDaily WTFを読んでください。ゲームの場合は、Ted Dziubaを追加します。ただし、よくあるアドバイスは、ただ遊んで、すべてを取り入れて、楽しんでください。ずっと大規模な貢献者である必要はありません。子供たちは2年以内にはプロのサッカー選手ではありませんし、あなたもそうではありません。しかし、それは彼らがサッカーをすることを止めません。そこから学んで遊びましょう!それがあなたが良くなる唯一の方法です。
あなたの言う通り、学ぶべきことはたくさんあります。そのため、私が知っている「ガイド」や、そのようなものは実際にはありません。私にとってそれは(そして今でも3年後です):シンクまたはスイムの学習です。学校を出て、私は今、最低限必要なことを考えているよりも少ししか知りませんでした...それで、私が働いていた会社によって設定された目標を完了するために何をしなければならないかを理解し、私はロバを獲得しました私がしなければならなかったすべてと関係するツール/テクノロジーにスピードアップしました。
今でも、私は同じことをしています...私の知識/スキルのベースラインが少し高いので、それは少しだけ簡単です。
新しいことを学ぶときに使用する特定のリソースを尋ねている場合...それは完全には、学習しようとしている内容によって異なります。とはいえ、チームワークとメンタリングは、これまでに毎日受けてきた最高の助けであり、「文書化されていない機能」の種類のものでした。深い知識は本から来て、そして 'gotcha'タイプのものは通常グーグルされます。
1。目標があります。
私たちの頭脳は賢いです。彼らは無意味なことを学ぶエネルギーを無駄にしたくありません。目標がなければ、プログラミングする気はありません。構築する既存のソフトウェアがないようなことをしたい場合。これはあなたに学ぶインセンティブを与えます。目標がなければ、残りは無駄です。
2。開発者が使いやすいオペレーティングシステムに移行します。
IME Windowsは開発者向けではありません。それは、物事がどのように機能するかという根本的なメカニズムを隠すGUIでユーザーを繭にするように設計されています。したがって、Windowsを使用している場合は、Unixベースのオペレーティングシステムを学ぶことをお勧めします。たとえば、Ubuntuまたはその他のLinux、Mac OSX、またはBSD(FreeBSDなど)。
私が大学で知っていたすべてのプログラミングウィザードは、例外なく自宅のPCでLinuxを使用していました。これは1990年代後半に戻ったので、小さな偉業ではありませんでした。私は彼らのようになりたかったのですが、結局、Ubuntuは私がWindowsによって引き起こされた怠惰を克服できるように十分に簡単にしました。だから私はUbuntuに移行して buntuforums に出かけることをお勧めします。おそらく、完全に移行する必要があります。 Windowsを実行する必要がある場合は、Ubuntuボックス(Virtualboxなど)のVM.
Ubuntuボックスを思い通りにセットアップするには、google site:ubuntuforums.orgを友達にしてください。多くの場合、答えはコマンドラインまたはスクリプトを含みます。スクリプトは有効なプログラミング形式であり、多くの場合、システム管理ドメインでは最良の選択です。これにより、手を汚すことに慣れやすくなります。それらのフォーラムに出かけると、特定の問題を解決するためのヒントも読むので、それほど難しくありません。
Ubuntuのようなものが開発者に優しいもう1つの理由は、必要な言語のほとんどすべてのツール(コンパイラ、インタープリタなど)を無料で簡単かつ自動的にダウンロードしてインストールできることです。 Ubuntuミラーをホストします。バン。あなたはプログラミングしています。気に入らない?別の言語を試してください。
すべてのコンピューターでUnixを実行していると、手を汚さざるを得なくなり、より多くのことを試す自信が生まれ、より強力になり、プログラマーとしての能力が大幅に向上しました。
3。ツールを学ぶ
Vimなどのエディターの使用法を学ぶと、Unixのすべてのインストールに存在し、sshを介してviを使用するための知識が得られます。これはそれを学ぶのに十分な理由です。さらに、vimは非常に人気があり、強力なエディターであり、多くの言語向けに組み込みの構文強調表示を備えています。これにより、新しいことに挑戦する際の障壁が下がります。
1)すべてを知ることはできないが、何かを学ぶことができることを認めてください。
2)あなたがコーディングしているものがあなたが学ぶべきことを導くと信じてください。
3)他の人と話しますが、彼らの知識に怯えません。あなたが学ぶ能力に自信を持ってください。
4)常に新しいものがありますが、開発中のほとんどの新しいものは、再考された古いものです。 ASP.NET MVC V3は新しく、MVC自体は70年代に最初に使用されました。あなたは追いつく必要はありません、ちょうど次にそれをキャッチしてください。
メンターはおそらく良いですが、それも私がやり過ぎだと思います。ご存知のように、多くのガイドと開始方法があります。
私は、この本を始めたいが、どこから始めればよいかわからない人に勧めています。
http://pragprog.com/titles/ltp2/learn-to-program
うまくいけば、それもあなたを助けるでしょう。