プログラミングは私にとってエイリアンではありません。 12歳のときに最初にマークアップ(HTML、今は笑わないでください)を始め、13歳のときは少しBASICになりました(この時点で、フローチャート、疑似コードについてはよく知っていました)。高校の生物学、したがってC、Javaなどの言語の「実際の」プログラミング知識を逃した。私はUG B.E.のCSを担当しました。 (BSに似ていますが、より理論的です)。私は自分でCとC++を学びましたが(私の程度は少なかったのですが)、クラスはコードジョークでいっぱいでした(彼らはすでに学校で学んでいたため、クラスに注意を払いませんでした。私のようなより少ない死すべき者にクラスに注意を払わせてください))と素晴らしい加算または乗算プログラム(今ではもっと親切な庭師のほうがはるかに巧妙になっています)とJava(最近は錆びてしまった)。
私の主な問題は、自分の限られたプログラミングスキルに常に不満と首を絞められており、コードジョークに甘やかされてきたことです(私を信じて、私は何年も前にこのサイトに出くわしましたが、実際に投稿する勇気を築くことができただけです)質問)そして時々その無力さでさえ落ち込んでいる。ほとんどの人は、プログラミングは必ずしも言語についてではなく、その人が持っている心の状態と、問題や問題を解決するために彼らが採用する技術について語っています。私はそのような感情に同意しますが、そのような「心の状態」を取得できますか。そのような場合、「プログラミング/コーディング」にどのように取り組むべきか、そして「禅」を達成するための最も進んだ決まった方法とステップがあるかどうかコーディングの」。どうすればよいですか?また、何人かの聖者がこの破壊された$#!^のメンターをメンターしたいと思っても害にはなりません。
追伸私は自分の時間に見合う価値があると考える人にはいつまでも感謝します。ボーナスとして、私の後に出荷する最初のソフトウェアを挙げます。 (私がこれまでに発送した場合、つまり)
TL; DR:「プログラミング/コーディング」を実際に学んだことがないので、試しても問題を解決できません。助けて!
私は最良の方法は単にそれにもっと時間を費やすことだと思います(10000時間ルールを検索してください)。やりたいことを見つけて、それを成し遂げるために着手します。現在の能力を超えているが、妥当な時間内に完了できないほど遠くないものを選択してください。本当に楽しんでいれば、本当に上手になるまでこれを繰り返すでしょう。あなたがそれを楽しんでいないなら、おそらくそれはあなたにとって正しいことではありません。自分自身に挑戦してみてください、おそらくそれを楽しむでしょう。
発送物。それが唯一の方法です。仕事を片付けましょう。仕事、あなた自身のプロジェクト、オープンソースプロジェクト。発送を開始します。それらは、バグ修正や最小限の市場性のある機能など、非常に小さなものにすることができます。ちょうど物事の出荷を開始します。成功ほど満足や自信を高めるものはありません。
編集: Ship It と読みます。それは素晴らしい。
もう一度編集する:配送以外のことをした経験は、失敗した経験です。私は、主な経験が物を出荷しなかった(そしてそれらを出荷しなかったことの言い訳を見つけた)ことのない多くの「上級」開発者を見てきました。 本物のアーティストが出荷 。
「問題」、「不十分」、「絞め殺し」、「限られたXスキル」、「軽視」、「落ち込んで」、「無力」は1文ですべて自分に向けられており、まだ痛い過去の治癒していない傷がある君は。それらを克服する方法を見つけたら、プログラミングやそのようなアート/クラフトは習得が非常に簡単です。おそらく、他の人の回復力について読むことは、ここで役立つでしょう。誰もが自分の人生で傷ついた時期を経験しています。それらの傷/傷が治らなければ、成功は得られなかっただろう。最初に傷を癒してください。プログラミングは後で待つことができます。
プログラミングスキルについては、新しい言語を学び、その言語で既にプログラミングしている他の人と同じように考える方法は、まず、その言語に関連する、手を置くことができるすべてのものを読み上げます。次に、十分に読んだら、小さなプログラムを書き始めます。
実際に使用するために必要ないくつかのこと:
忍耐力:優れたプログラマになるには、練習に時間がかかります。良いコードを書く前に、たくさんの悪いコードを書く必要があります-lotの悪いコード。ありがたいことに、あなたはあなたを助けるためにこのサイトのようなリソースを持っています。プログラミングの学習に専念している限り、簡単なゲームとユーティリティをすぐに組み合わせることができます。
目標:自分の目標を設定します。 2週間でC++でSTLを使用する方法を学びましょう。あなたがどれだけうまくやっているか見てください。時間がかかる場合は、どれだけ長くかかるかを追跡してください。これは、将来の改善に役立ちます。私は同僚からこのトリックを学びました。彼は今日まで、どんな仕事でも彼にかかる時間を見積もることができました。これを行うことは、私が個人的なプロジェクトに費やす時間を把握するのに役立ち、彼らが制御不能にならないようにします(彼らがそれを呼ぶスコープ管理)。
好奇心:あなたは興味を持って従事しなければなりません。あなたが解決策を見つけたいという欲求で問題に近づかないタイプの人でないなら、プログラミングを始めることは最初は難しくなるでしょう、そしてデバッグは悪夢のようになるかもしれません。しかし、そうである必要はありません。問題がある場合は、このようなサイトで質問して、エラーをググってください。何かを実装する方法がわからない場合は、質問してください!いつでも助けてくれる人がいます!
Confidence:やりたいことに自信を持ち、質問をするのに十分な自信を持ちます。誰かが何かをする別の方法をあなたに示した場合、守備的な態度をとらないでください。問題を解決するための別のアプローチを教えられていると考えてください!
何よりも、ポジティブな見通しを保ち、たくさんのチュートリアルを読んで、たくさんの質問をしてください。そうすれば、あなたは幸せなプログラマーになります!私がしなければならないもう1つのアドバイスは、言語を選択することです。自信がつくまで、その言語を使用してください。さまざまな言語を学ぶ時間はたくさんありますが、始めたばかりの場合は、その言語で作業してください。
幸運を!そして、これは楽しいはずです! = D
開発では、「知っているほど、知らないほど知っている」というパラドックスが当てはまるようです。
あなたが思慮深く、正直な人であるならば、あなたはこの事実を受け入れて、それに対処することを学ぶ必要があります。
質問が意味する意味での自信は、特定のスキルセットや方法論とはまったく関係のない非常に個人的なものです。
より浅いメモでは、 http://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-programmer/ で説明されている感情=(セクション:あなたは根本的に過大評価していますあなたがたむろしている群衆のために競争の平均的なスキル)は常に私を助けました。
全体的に自分のスキルに自信をつけるのではなく、自分が行った仕事に自信を持つようになることをお勧めします。これを行う最善の方法は、すべてのコードに対して繰り返し可能なテストを作成することです。それはあなたの精神に不思議に働きます。
WhiteFang34は完全に正しいです。私自身、生物学者として、プログラミングを学ぶ唯一の方法は、プログラミングを始めることだと気づきました。数冊の本を読んで、GoogleとSOを常に手元に置いて、「ただやる」だけです。プログラムは非常に基本的で、コードが不適切で、最初はバグが多く、より良くなり、プログラミングクラスを受講する時間はありませんが、コーディングに多くの時間を費やしています(それをするのは楽しいからです)。
あなたが何をしたいかについてより多くを考えることができ、それを行う方法を少なくすることができる言語を選択してください。 cはその良い例ではありません。 Javaまたはc#などのより高いレベルの言語を試してください。それらはより多くのことを可能にするので、より多くのことを試す勇気を得るでしょう。
(もちろん、あなたがプロのプログラマーとしてのキャリアを追求していないことを前提としています。その場合、私はただ学校に戻ると言います...)
頑張って、幸せなコーディングを
PS:ああ、そしてあなたは多くの怠惰、焦り、そして傲慢さが必要になるでしょう
面白いことは:
プログラマの心は、コンピュータ、プログラミング言語、
設計パターンまたはアルゴリズム
それは、現実世界の微妙さ、物事間の相互作用を理解することです。 要約を考えるの能力。 通知することおよび覚えるそれらの能力。それは必然的に良い問題解決につながります。
実装、コード自体はその後のみ-あなたが成功した後
あなたの心の中で与えられた問題を解決しました。
自信は、スキルについて感じようとするべきものではありません。信頼度と実際のスキルとの相関関係はほとんどありません(負の可能性さえあります)。現在のスキルレベルについてどのように感じていても、プロフェッショナル(または重要な趣味)のスキルセットを向上させるために取り組む必要があります。
自信は、あなたが有能だと思う人が、あなたと一緒に仕事をしたり、仕事を見たりした後にあなたのスキルについて感じるようになるはずです。
それは非常に簡単です:それに興味がある!あなたはすでにそうであるように、実行するのがクールだと思うものを見つけて、それを実行します。できる限りのリソースを使用して、途中で必要な質問をし、プロジェクトを思い通りに組み立てます。欲しい。リンスして繰り返します。途中で面白くて面白かったので、それほど努力しなくても自分は素晴らしいプログラマーであることがわかります。
また、物事を理解することと多くの質問をすることとの間の微妙なバランスをとってください。特に、最初は、学習曲線の最初の部分を上手く押し上げるために、どこが間違っているかを他の人に教えてもらうのは非常に役立ちます。そこから、あなた自身で物事を理解するようにしてください、そしてあなたがしばらくたって行き詰まったら、それについて質問してください。私がよくすることは、SOに質問を投稿し、SOプロセスで時々チェックして、答えを探します。時には、最初に答えを見つけることもあれば、最初に見つけることもあります。
HTML5 + JavaScript + canvasタグを使用してグラフィックを作成するのはとても楽しいかもしれませんが、設定は非常に簡単で、報酬はすぐに得られ、共有することができるため、どのテクノロジーについてそれほど心配する必要はありません。
より積極的な学習者の態度でプログラミングに取り組みます。誰もがすべてを知っているわけではありません。第二に、あなたが楽しんでいるのにプログラミングに興味がある理由を見つけてください:
プログラミングの好きなところがわかったら、その方向に学習に集中できます。私はいじくり回し/問題解決者です。とても実用的です。アルゴリズムとデータ構造、コンピュータサイエンス理論は一般的に私を眠らせました。
私の背景はあなたのものと似ています。 10歳でコンピューターの作成を始めました。10代半ばにHTML/C++を少しやりました...退屈してしまいました...数年間終了しました。コンピューターをいじるのをやめたことはありません。
今、私はプログラミングが大好きです。何が変わったのですか?やる気が出てきました。解決しなければならない問題がたくさんあるところで仕事を始めました。複雑な問題に対する賢明でシンプルな解決策を見つけると、本当に私の心は燃えます。
最後に、他の人がどのようにコード化しているか、その「正しい」かどうかについて心配しないでください。それがあなたがやりたいことをするならそれは正しい。チームで作業を開始すると、標準が重要になります。これは、他の人があなたの仕事を解釈して修正できる必要があるという事実によるものです。設計標準は、新しいプログラマーが気にする必要のあるものではありません。
新しいことを学ぶときは常に克服すべき慣性があります。私が知っている奇妙なプログラマーたちは、新しい言語とパラダイムを学び続ける動機を見つけるのに苦労しています。 「Xを試すにはプロジェクトが必要だ」と彼らは言うでしょう。 Xを学ぶため。実際にそのプロジェクトを見つけたり、発明したりする人もいます。
プログラミングのキャリアは、フラストレーション、研究、実験、風車への傾きの生涯にわたるプロセスになることに注意してください。 AIがすべてを引き継ぐまで。
あなたがまだ本当の科学をしているなら、あなたはある種のプロジェクト/ニーズを想像することができるはずです。たとえば、インターネット上またはインターネット外の複数のソースからのデータを組み合わせる。これは、JavaScriptやR、さらにはExcel/VBAを学んでいることを鼓舞するかもしれません。あなたのフィールドで他のドットを他のドットにつなげることができれば、あなたは認められるでしょう、そうなら、あなたはプログラマーになります。
メンターを使用するが警戒する。質問の権限。
ちなみに、「禅コーディング」は矛盾です。
プログラミングスキルに自信を持つことはありません。
自分のスキルを説明する方法は、自分のスキルに決して満足することのない考え方を示しています。あなたはC++をマスターしましたか? Javaがあるのを待ってください!あなたはJavaをマスターしましたか?並列プログラミングがあります。 C++とJavaで並列プログラミングをマスターしましたか? SOAがあるのを待ってください! OODあります!そしてMVC!固体!関数型プログラミング! Webプログラミング!クラウドプログラミング!モバイルプログラミング!
そのせいで落ち込んでいるのがポイントではない。あなたは頭の中でいくつかのボタンを押す必要があります。あなたのスキルについてのあなたの疑問は純粋な燃料です。満足できるプログラミングスキルに到達することは決してないでしょう。これが事実である限り、あなたは前進します。難しいことは、それを実現し、それに対して何かをすることですが、目標は決してありません。長く耐えられるほど、スキルレベルは高くなります。
以前は同じように感じていましたが、実際にはStack Exchangeサイトが自信を与えてくれました。
StackOverflowを使用して質問の回答を見つけ始めました。ある日、答えを知っているものを見つけました。私は答えを投稿し、いくつかの投票とそれが良い答えだというコメントをもらいました。
それはすぐに中毒になり、解決できる未解決の質問を見つけ、時間が経つにつれて自分の回答に自信がつき始めました。 「これは……だからだと思う」や「これが原因だろう…」と言う必要はなくなりましたが、代わりに「これは・・・だから」「これが原因…」と自信をもって言うことができました。
私はパズルが好きで、私にとってはSO質問はミニプログラミングパズルのようなものでした。正解を正しければ正のフィードバックが得られるという利点があります。正解が間違っていれば、それを削除し、同じ問題に対する他の人々の解決策から学びました。
したがって、私の推奨事項は、SOに進み、興味のあるタグで質問を参照し、回答を見つけることができると思うものを探すことです。人々があなたに言っているようなものは何もありません。あなたのプログラミングの答えはあなたのプログラミング能力に自信を与えるのに役立ちます/良いです:)
あなたの脳は働きすぎを好まない。選択を考えると、それは簡単な方法をとることを好みます。これが、野心的なものに取り組むときに諦めるのが簡単な理由です。習得するには多すぎ、正しく理解するには手間がかかりすぎ、ヤクの剃毛も多すぎます。
これと戦うためにできることはいくつかあります。まず、エネルギーです。十分に休息し、十分に栄養補給されている場合、または脳に文字通り複雑な抽象的な思考のための十分な燃料がない場合に、練習を行うようにしてください。 2番目のトリックは興味や重要性です。 Mavenを知ることがトラを追いかけているトラから逃れるために不可欠であることを脳に納得させることができれば、あなたが本当に望んでいることへの道においてそれが意味のない副次的なタスクであるとあなたの脳が考えるときよりも多くを学び、保持するでしょう。重要な3番目の要素は、無理をせずにストレッチすることです。いくつかの努力は、達成からその話題を与え、達成不能になることなく、新しい精神的な経路を形成するのに役立ちます。
繰り返し練習するために言うべきこともあります。斬新であるほどのバリエーションが必要ですが、同じアクションを実行してそれらを組み込むことができる十分な類似性があります。
もう1つのポイントは、袖をまくり上げて手を汚さないようにすることです。あなたが始めない限り、代替アプローチや理想的なソリューションについて考えるのに多くの時間を費やすのは簡単です。これはあなたの脳がもっと簡単な方法を試そうとしている例です。これがいつあなたに起こっているかを認識し、始めようとすることでそれを避けてください。テストや実験でも良いです。これには、タスクを完了したり、より良い解決策を見つけたりすることを脳に求めさせるという副次的な利点もあります。
ここで練習についての良いコメントがたくさんあります、それは本当にすべての違いを生みます。
「コードジョック」についてはあまり心配する必要がなく、彼らが何であるかについてのアドバイスやコメントをとる必要があります。スレッドで対処するのが難しい場合、実際の生活でも対処するのはおそらく難しいでしょう。そして、本当に、誰が彼らの社会的無関心について心配する時間を持っていますか?
その結果、プログラミングタスクにアプローチする方法は何千通りあります。多くのことは、個人的な好みに要約されます。たとえば、10項演算子でコードを読み取るのは嫌いです。その他、それらを愛する。彼らは正しいか間違っていると思いますか?..実際には、どちらでもありません。このトピックについては多くの白熱した討論が行われますが、それは個人的な好みです。
20行ではなく25行をとったために誰かがあなたのコードを非難した場合、実際のロジックの欠陥を見つけない限り、私は単にそれらを無視する傾向があります。現実の世界では、物事を成し遂げる必要がある場合があります(そして、誰かが胸がどんどん複雑になるのを聞いてみたいと思っています...えっと、エレガントです。 。あなたは物事をどこまで抽象化するかについての無限の哲学的議論から何かを学ぶことができますか?確かに...しかし、常に100%の優雅さに吸い込まれると、ぼんやりとした見返りがあります。私たちがそうであるように見せかけたいほど、それは常に現実的ではありません。私が誰かと共有するのが恥ずかしい私の最もエレガントでないコードのいくつか(私のキャリアの初めに書いたもの)は、何週間にもわたって時間を節約し、10年以上前の創業以来使用されてきました。ユーザーの冷たい死んだ指から奪われます(また、機能し、壊れたことは一度もないため、戻って「クリーンアップ」するための時間も与えられていません)。
Joel SpolskyによるDuct Tape Programmerと呼ばれる素晴らしいブログ投稿があります。それは素晴らしい読み物であり、IMOはあなたの恐れのいくつかを見通しに入れます。
http://www.joelonsoftware.com/items/2009/09/23.html
私はがらくたコードを書いてベストプラクティスを無視すると言っているのではありません。
考慮すべき3つの点:(またはもちろん、そうではありません。)
自信が足りない理由を自問してください。仲間の考えを気にかけるからだと思いますし、それは完全に理解できます。しかし、それについて真に禅となるためには、そのような考えをクリアし、時間をかけて自分と自分自身を比較する必要があります。あなたの興味に導かれ、学び、一生懸命勉強すれば、あなたはすべてのサイコBSなしで良いプログラマーになります。
それはあなたが本当に必要とする自信ではありません、それはあなたの進歩の道のノイズが少ないです。