web-dev-qa-db-ja.com

コード例を常に探しているのは、開発者が悪い兆候ですか?

私はCとC++で数年の経験を持つCSの学生で、過去数年間はアプリ開発を行うためにJava/Objective Cと常に仕事をしてきましたが、今は主にRuby on Railsと私は(アプリ開発と同様に)他のコードを参照しすぎていることに気付きました。私は、ゼロから実行できるはずだと思っている多くのことについて、常にGoogleの機能を使用しています。

基本的なファンダメンタルズは問題ではないので、例としてこれを使用するのは嫌いですが、スプリントでJava/pythonの両方でjavabatを実行できます-明らかに成果ではありませんが、私が言いたいのは、ファンダメンタルズの強力な基盤があるということですおもう?

通常、何を使用する必要があるかはわかっていますが、構文は常に参照しています。私は学位を取得しているにもかかわらず、この分野での仕事を探すという点でかなり固く私を抑制してきたので、これに関するいくつかのアドバイスとインプットを気に入っていただけませんか。私が尋ねる主な理由は本当に雇用に関するものではありませんが、ノンストップのコードを打ち出して20のGoogle/githubタブを開いてそこに座っていないハッカソンで唯一の人間になりたくないので、私はいずれにも参加しませんでした少し自信がなかったため...

中程度から複雑なタスクのコード例を常に探している人は悪い開発者ですか?

161
Newly Insecure

盲目的にコピーアンドペースト:悪い。

ドキュメントを調べ、コード例を読んで理解を深めます。

私はむしろ、常に物事を調べ、すべてが意図したとおりに機能することを確認する人と協力したいと考えています。しかし、最悪なのは、物事がどのように機能するかを気にせず、Webからコードを無批判にコピーするだけです(そして、バグレポートが雨に降り始めたときに、何も適切に修正できません)。

238
tdammers

ソリューションを保守可能な方法でコーディングし、実際にコピー/貼り付け/変更した内容を理解している場合、問題はありません。

上級開発者になぜ彼が何をしたのかについて質問するたびに、私は死にます。答えは、「わかりません。コードをコピーして貼り付け、その時点で機能しました」です。

110
Dante

スキルと同様に APIドキュメントのある/ないプログラムコード例を探すは悪いプログラマではなく、欠けているプログラマの兆候ですfluency...

...ここでは、流暢さについて話しています。 何かができるだけでなく、流暢であることについて。

あなたはそれが流暢であることを知っていますか?それはあなたを見ている人にとっては、タイプするときにコードを書くように見えるときです...

  • ...あたかも正しいコードが指から画面に流れるかのように。 APIドキュメント、チュートリアル、およびマニュアルをチェックしないかのように。実際、あなたはそれらすべてをチェックしますが、それはすべてあなたの頭の中にあるので目に見えません。あなたはあなたの頭の中で必要なすべての知識を持っています-充電さ​​れ、ロードされ、使用する準備ができています。

...それは流暢な知識です。初心者に1時間かかるようなことをするのに1分かかるときです。本当に努力する価値があります。 それは勝利のようなにおいがします。

...そして慣習は私にとって流暢さを身につける唯一の信頼できる方法です。

72
gnat

コルブサイクル と呼ばれる学習理論があります(説明した人の後に)。このサイクルのエントリは次のとおりです。

Concrete experience -> Reflective observation
    ^                        |
    |                        v
Active experimentation <- Abstract conceptualisation

サイクルの異なる場所から始めることを好む人々はさまざまです。したがって、byでサンプル(反射観測フェーズ)を探して学習し、それらのサンプルから抽象化によって全体像を把握することは完全に可能です。

他の人はさまざまな方法で学習します。一部の人は、試行(つまり、実験)から始めて、何が正しかったか間違っていたかを反省することを好みます。重要なのは、これらは学習の問題を攻撃するための単なる異なる方法であるということです。

54
user4051

完全な開示-私は、就業時代に利用可能な別のインターネット前で訓練を受けた老人です。若い開発者のスキルが着実に低下するのを見てきました。彼らが情報を保持していないか、インターネットから取得したソリューションを理解していないためです。私は、20年前の1〜2年の経験の後の人の能力レベルが、5〜7年の経験の後の人の能力レベルであることを観察しました。 (はい、それは個人的な観察ですが、私はたくさんの雇用をしました、私はその問題についての統計データを持っていません、そしてはい、私は時々年老いて不機嫌です、塩の粒でこの声明をとってください。そして私の庭から離れてください。 )

時間の点ですべてを調べることは非効率的です。また、知識があまりない人の症状でもあります。知識が豊富な人は、物事を調べずに問題を解決する方法を知らない人よりも速くコードを書くことができます。したがって、物事を継続的に調べる必要なく、より多くのものを処理する方法を学ぶことは価値があります。

今、私は決して物事を調べてはいけないと言っているのではなく、知識を保持することを学び、めったに使用しないもの、または本当に新しい問題や言語やパラダイムに遭遇したときに調べる必要があると言っています。そして、新しいソリューションやツール、言語についていくために本を読むべきではないと言っているのではありません。

多くの人(必ずしもあなたではない)が物事を調べる開発者に対する私の真の懸念は、彼らが抱えている問題と必要な解決策を理解するための分析スキルを決して開発しないことです。その人がエラーメッセージのどこに書き込んだか、その人がはっきりと理解していない質問がいくつあるかを読んでください。あるいは、その人が「それがうまくいかない、なぜ?」と言っているもの。エラーメッセージやそれがどのように機能しておらず、コードが構文的に正しいかについては言及していません。または、機能するはずのコードが与えられたものの、最初に答えるのが早かったのに、その人が明白な構文エラーを犯した(たとえば、SQL結合でONキーワードを指定していないため、今日見た例を使用しているなど)。ポスターが戻ってきて、12行目にエラーが表示されます。なぜそうなのか、12行目を見ると、ベースライン能力がある場合、エラーが何であるかは明らかです。

だからあなたが探しているものが言語のコア機能の一部であるものであるなら(ところでデータベースにアクセスしているならこれにはSQLが含まれるべきです)あなたが6か月以上使用しているなら、私もあなたが探していると思うたくさん。検索しているものが高度な機能、特にめったに使用しない機能である場合、問題はありません。

しかし、より多くの情報を保持することをどのように学ぶのですか?まず、コードが壊れた理由を理解してください。誰かがあなたに実用的な解決策を与えたとしても、それがうまくいった理由が分からず、あなたの解決策がうまくいかなかった場合は、尋ねてください。エラーメッセージがわからない場合は、それが何を意味するのか尋ねて、自分で解決してみてください。

また、理解できないソリューションをカットアンドペーストしないでください。実際、カットアンドペーストは一切行わないでください。情報を保持したい場合は、タイピングを行う必要があります。実際に自分でコードを書くことは、それを学ぶのに役立ちます。それはよく知られた学習手法です。

コードの理解を一般化する練習をします。問題ABCに対して1か月前に得た解決策が新しい問題DEFに対する同じ解決策であることを理解していないため、人々が同じような質問を何度も何度も繰り返すのを見てきました。

ですから、何かを調べたら、少し時間を取って、どのような種類の問題が解決に役立つかを考え、それについて自分自身にメモを書いてください。次に、解決する問題がある場合は、まず自分のメモをチェックして、考えられる手法をすでに確認していることを確認します。問題を解決するための複数の方法を評価する場合は、問題のタイプ、検討した可能な解決策、およびそれぞれの長所と短所についてメモを取ってください。再度メモを取ることはあなたの脳の知識を固めるのを助けています、あなたはすでに長所と短所の観点からあなた自身の思考プロセスを持っています、そしてそれを再びする必要はありません(または少なくともそれほど深くはないかもしれませんが、次の同様の問題については、まだ考えられるテクニックを探してください)。

次に何を学ぶかを決めるときは、主要なテクノロジーの1つを少し掘り下げてから、最初の30日間の別のテクノロジーの学習に飛び込みます(これは、必要に応じて、実際に仕事を実行するのに十分な知識があることを前提としています) 6つのテクノロジーを使用する-詳細に進む前に、まず6つすべての基本を習得する)次に、基本的なレベルで新しいものを学び、何かをより深く学び、基本的なレベルでより多くの新しいテクノロジーを学び、行き来します。時間をかけてこれを行うと、それについて尋ねるより高度な質問を理解できるので、新しいテクノロジーに求めるものの基本レベルがはるかに深くなることがわかります。

知識を保持することを学ぶ別の方法は、それを他の誰かに教えることです。このような場所で質問に答えたり、トレーニングトピックをチームに提示したり、ローカルユーザーグループでプレゼンテーションを作成したり、ブログエントリを書いたり、社内の他の開発者を支援する情報のwikiを維持したりできます。

39
HLGEM

コード例を探すことは、開発者が悪い兆候ではありません。必要なすべてのインターフェースを正確に記憶するために必要なものがほとんどないため、調べるのは自然であり、コード例は通常、最も使いやすいリファレンスです。

サンプルはそこで機能するため、コピー&貼り付けの例を実行しないでください。そのため、機能の仕組みを理解せずに、ここでも機能する必要があります。これは通常、多くの無駄なビットが偶発的にコピーされてしまい、結果を維持するのが困難になるため、作成したときにそれがどのように機能するかわからないと、6か月後にもわからず、修理する。

しかし、例からコピーしているコードを理解している限り、それは作業をより速く実行するための有効な方法であり、それは通常良いことです。

24
Jan Hudec

これらの答えはかなり良いです。しかし、コピー/貼り付けや「スキル」の欠如よりもはるかに深い問題に苦しんでいます。

比較は致命的です。自分を他の人と比較し、彼らの才​​能が自分の見方に影響を与えるほど、あなたはもっと身をよじらせて死ぬでしょう。 fearのためにハッカソンに参加することはありません。そして、あなたが才能がないと思う唯一の理由は、自分をより多くのコードを一からより速くより速く実行できるハッカーと比較するためです。

「1分あたりのコード行数」がスキルを測定するための優れたメトリックであったとしても、あなたは常にあなたより優れた開発者がいるという事実を受け入れる必要があります。そして、スキルが不足していることを他の人に示すのはokです。

あなたは他の誰よりも優れている必要はありません。あなたは常に何らかの形で欠けているという事実、そして絶えず学んでいるという事実に満足する必要があります。劣った開発者でいることに満足できなければ、決して満足することはありません。

もう1つ、「優れている」と思われる人からの拒絶に対する恐れは、より優れた開発者と肩をすり合わせたり、彼らから学んだりすることを妨げているものです。だからあなたの恐怖はあなたが成長するのを防ぎ、それがあなたの恐怖を維持します。それはあなたが成長するのを防ぎます。サイクルを見ますか?あなたはどこかでサイクルを壊さなければなりません。

14
Phil

多くのことはあなたの心の働きにかかっていると思います。私の記憶は悪臭を放つので、私はむしろ私ができるだけ欲しいものに近いコードを手に入れて、新しい仕事をするようにそれを作り直したいと思います。それは私がしなければならないすべてのことの例であり、思い出させるものです。たとえば、私は20年間単純なSQLを使用してきましたが、SELECTステートメントまたはUPDATEステートメントのレイアウトを思い出せません。 (かっこが必要だと思いますが、覚えられません。)一方、いくつかの少数覚えることができます。 Javaイテレータ実装を目を閉じて一緒に投げることができます。

私がコピーするコードのほとんどは私自身のものですが、何か新しいことを学んでいるときは確かに他のものをコピーします。

ハッカソンについては知りません。彼らは、写真の記憶を持つプログラマーのサブセットを利用するかもしれません。私はそれを試してみると思います。馬鹿のように見えるのが気になるなら、プログラミングはすべきではありません。

コピーして変更したすべてのコードを完全に理解することをお勧めしますが、他のいくつかの答えを読むまでは、誰かが理解せずにコピーする可能性はありませんでした。 (私はこのサイトでいつも新しい悪徳を学んでいるようです...)

12
RalphChapin

...私は次のことに気づきました...他のコードをあまりにも参照しすぎています。私は、ゼロから実行できるはずだと思っている多くのことについて、常にGoogleの機能をググっていて、本当に自信がなくなってしまいました。

その後、停止します。しばらく他の方向に向かいます。 知っているであっても、すべてを自分で実装します。必要なものをより少ない時間で正確に見つけることができます。

何が起こったのかというと、問題を解決する筋肉(ラテン語の名前gluteus mojo)が使われなくなって萎縮していて、弱さを知っているので、その使用を避けています。ジムで上腕二頭筋に取り組むのと同じように、筋肉の構築と調子を整える必要があります。高い繰り返しと低い抵抗から始めます-多くの簡単な問題。自信をつけたら、長くて難しい問題に進みましょう。

徐々にモジョの復活が感じられ、Googleに依存する必要性は減ります。ただし、その筋肉を鍛え続け、古い方法に陥らないようにしてください。問題を解決するために自分自身に挑戦してください最初だけその後他の解決策を調べてください。他の人が同じことをするためのより良い方法を見つけたと思うこともあれば、自分の解決策がより良いと決めることもあります。

中程度から複雑なタスクのコード例を常に探している人は悪い開発者ですか?

nableで、例を見つけることなく何かを成し遂げる人は悪い開発者です。事はです:あなたがしようとするまで、あなたはあなたができるかどうかわからないでしょう。

8
Caleb

あなたは若く、多くのプログラミング言語で働いてきました。おそらく、古い言語よりも新しい言語を早く習得できると思います。流暢さを伸ばすのに十分な大きさのアプリケーションで、1つの言語に十分な時間をかけていません。

次のような幅広いソリューションを毎回探していますか:Webグリッドをデータベーステーブルに接続するプロセス全体、または接続文字列のフォーマットのような小さな部分(年に4回ほど書くので、毎回ほぼ毎回調べなければなりません)。 )?

コードや関数のさまざまな行の構文への参照を常に探します。プログラミングをすればするほど、より多くの課題や、さまざまな環境や言語の変更に遭遇します。何かをするたびにチュートリアル全体が必要な場合は、問題があります。

7
JeffO

とにかく前の晩に詰め込んだたくさんの情報を保存しようとすることに基づいてテストを行うのが嫌いだと言っていた教授がいました。リソースを理解し、それらを適切に使用して、知らない情報を見つけることができます。私は、仕事も含めて、自分がやるすべてのことに同じような原則を適用したいです。

あなたが持っている最も重要なツールは、それらを適切に使用する限り、あなたのリソースだと思います。コードを書いているときは、適切な解決策をよりよく理解するために、既存の知識を最大限に活用して、他のプログラマーに質問したり、インターネットを検索したりして調査を行います。知識は時間とともに構築され、しばらくすると、スキルを自然に理解し、理解するようになります。私は実際に情報が必要かどうかにかかわらず、常に物事を調べています。正直に言うと、毎日新しいことを学んでいると言えます。

5
jb11

あなたが解決しようとしている問題を理解し、それをどのように解決したいのかを理解している場合、正しい構文を調べることは私の意見では大したことではありません。

約2年前に卒業し、就職するとオオカミに投げられました。以前に触れたことのない言語で書かれた大きなアプリケーションを学び、維持し、アップグレードしなければなりませんでした。バグレポートを受け取り、コードを調べて、どのように修正したいかを調べ、その言語で必要なことを行う方法の例をグーグルで検索する必要があります。

あなたが物事を成し遂げ、そしてそれを不必要なチャーンを生み出さないように十分に理解しているなら、あなたはおそらく大丈夫です。

4
Chris

コード例を読んで、他の人が一般に開発したもののソースコードを読むだけが、スキルを向上させる最良の方法だと思います。それは、そうでなければ開かれなかったであろうあなたの脳の扉を開くと本当に思います。

ソリューションAを考え、他の誰かがソリューションBを考えた場合、それぞれがソリューションを共有すると、AまたはBよりも優れたソリューションCを実現できます。

3
Michael Butler

企業環境でのソフトウェア開発では、かなりの量のコードを再利用する必要があります。 [〜#〜] api [〜#〜] がすでに存在し、広く使用されているのに、なぜ関数/メソッドを書き換えるのですか?それはおそらくあなたが書くものと同じくらい効率的で、より少ない時間を要します。

もちろん、ソフトウェア開発を成功させるには、キーボードからの脱却も必要です。そのため、実際に何が起こっているのかを読んで理解することができます。任意のWebフレームワークを取ります。自分が書いているコードを理解するために、下で何が行われているのかを理解する必要がありますが、Webフレームワークを最初から作成する必要はないでしょう。

フレームワークのタイプを利用するコードを作成する必要があります(たとえば、コンポーネントベースのフレームワークには特定のスタイルが必要です)。これは、全体像を理解することから得られます。大きな画像をご覧ください。元気になります。

3
demongolem

ソフトウェア開発の習熟には多くのレベルがあると思います。ただ、ソフトウェア開発文書化の習熟度には多くのレベルがあるためです。率直に言って、最近のシステムは、1980年代半ばにコンピューターのプログラミングを始めたときよりも桁違いに複雑です。

次に、コンピュータに何をしてほしいのかを知る必要があり、6インチ厚のドキュメントを作成して、コンピュータが特定のより基本的なことをどのように行っているかを説明しました。コンピューターが取ることができる形にしたいものを置くことは、それらの本のインデックスの内容とプログラミング言語(または2つです。実際には、4つまたは5つの言語を学習した後、他は単なる方言です)を知ることでした。

今日、そのタスクには、言語、システム、パラダイム、プログラミングモデル、および少なくとも1つのAPIセットを知ることが必要です。

ですから、ある程度の基本的な知識を持った人が質問するのは、良いプログラマではありません。今日の環境とMicrosoftのような無関心な会社が実際にあらゆる種類の厳密さを独自のファンダメンタルドキュメントに適用していることを考えると、彼は最高のプログラマーです。それらのほとんどは自己参照の参照資料であり、一部はbadサンプルコードです。 (私が遭遇した2つのケースは、「Windowsインストーラー」とWMVムービーファイルを作成するためのAPIです。)

マイクロソフト、グーグル、そしてそれよりは少ないがアップルも、すべて「コミュニティ」に依存してその非常に現実的な欠陥を補っているので、周りに尋ねることは重要ではないだけでなく、不可欠です。そして、今日の環境で、頼りにされ、確かな答えとフィードバックを与えることができる人であることも、同様に重要です。 stackexchange.com サイトなどのサイトが役立つのはそのためです。

したがって、質問して(インテリジェントに質問してください)、サンプルを求め、回答を提供する人々を尊重してください。そうすることで、しないの兆候と見なされます「悪い開発者」。

そしてもう1つ、悪いサンプルを提供することは本当に悪い開発者の兆候です。それは悪い開発者を見つけやすくするだけでなく、グーグル検索を弱体化させます。シンプルで簡単な特定のコードサンプルに自信がない場合は、それらを提供しないでください。

そして、お願いしたい人をからかわないでください。

3
Rob Perkins

あなたにとっての問題は、あなたが何を参照しているのかを理解することよりも、施設と記憶の問題についてより多くあるように思えます。それがあなたの自信を弱めているなら、はいそれは問題です-しかし、それは確かに対処することができます!

私にとって、これらの種類の課題は、私の人生のさまざまな側面で生じます。たとえば、音楽を上手に演奏するには、与えられた楽譜からの独立性を育てる必要があります。小冊子に鼻がまだ埋め込まれている場合、どうやって音楽を実際に感じることができますか?時々、時間があれば、音楽全体を記憶します。たとえそれが私のギグに必要ではない場合でもです。どうして?楽譜がなくなったので、正しく理解するために必要な音楽のより困難で包括的な側面に集中することがはるかに簡単になり、純粋な音楽制作の信じられないほどの領域に入るのがはるかに簡単になりました。だから私はそれがしばしば余分なトラブルの価値があると思います。

私のプログラミングの経験は似ています。キーは次のとおりです。

  1. practice言語–入力、実行、役立つ場合は話します。繰り返します。
  2. build施設–異なる状況で同じ機能またはパターンを使用します。機能をまとめます。プログラムを作る。
  3. 繰り返しの間に十分なtimeを与えて、物事が本当にあなたの長期記憶に入っていることを確認してください。

これらの原則は、実際、どんな言語を学ぶときにも当てはまるようです!たとえば、 新しい単語を覚える方法 を参照してください。 Pimsleurメソッド もこのように機能します。

これらのキーを使用することで、私が定期的に使用する言語とテクノロジの原則、構文、および一般的なライブラリのほとんどすべてを完全に記憶できることがわかりました。それでも、例や知恵を求めてインターネットを常に探し続けています!しかし、その時点で、解決しようとしている問題の検証、採用されているさまざまなアプローチ、役立つツール、およびあまり使用されていないライブラリの相談を探しています。これは、最初に言語を学習するときに使用する検索とはまったく異なる種類の検索であり、チュートリアルやマニュアルに精通しています。

あなたの話から、あなたが遭遇しているかもしれないと思ういくつかの具体的な障害があります。

  1. 構文に苦労している場合は、十分な練習ができていない可能性があります。これは、繰り返しを開発するのではなく、コードに直接コピーして貼り付ける場合に特に当てはまります。 –筋肉メモリは、あなたが本当に良くなるのに役立ちます。これに対抗するには、繰り返しと時間に焦点を当てたエクササイズと規律を開発し、必要な領域で施設を改善します。提案:
    • 同じ言語で簡単なプログラムを1日に1回、毎日作成します。
    • 例をコピーして貼り付ける代わりに入力します。
  2. 中程度のサイズの問題の解決策を構築することに苦労している場合は、構築に関する十分な経験を得ていない可能性があります。これらを試してください:
    • あなたが得意にしたいいくつかの技術や言語で中規模のプロジェクトを開始します。または、興味のあるオープンソースプロジェクトの機能をもっと試してみてください。毎日少しずつハックしてください。 (これらの大規模なプロジェクトの後に行くときは、覚えておいてください:レンガからレンガに行きます。全体を一度にビルドしてはいけません!)
    • 同じ新機能を4つの異なるコンテキストで4日間連続で使用します。
    • Webブラウザーをオフにして何かをコーディングしてみてください。
    • 実際にあなたが学んでいることについてメモを取ってください。あなたが学んでいることを総合して、あなたの観察を書き留めてください。 (実際に書き留めて、自分の言葉で何かを表現するように強制することは、私に大いに役立ちます。)
    • 吸収しているテクノロジーに関するStackOverflowの質問について、回答を記述して検証します。 (これには、学習中に少しの評判を得るという追加の利点があります。:-))
  3. 練習の幅が狭すぎるかもしれません。あなたは多くの異なる言語で働いているようです。これには多くの利点がありますが、経験が薄れる欠点があります。 5つの異なる言語で作業する時間を費やしている場合、1つの言語で同じ時間を費やしている場合よりも、記憶することは少なくなります。さらに悪いことに、さまざまな言語間でかなり類似していない同義語がたくさんあります(他にif、elsif、elifでしたか?)。これに対処するには、焦点をはっきりさせます。学ぶべきことを1つ選んで、それを寒く学んでください。次に、次のことに進みます。
3
Owen S.

自分で適度なコードを作成することに集中すると、効率と生産性が向上すると思います。コードの検索、読み取り/理解、ソースのコピー、それに応じた変更などには、おそらくもっと時間がかかります。

あなた自身でそれを思いついた場合、それはおそらくあなたの特定の状況により適応されており、しばらくするとこれらの解決策はそれらを調べるよりも早くあなたにやって来るでしょう。

私の見方では、特定のソリューションについてセカンドオピニオンが必要であり、他の人(インターネット)がそれをどのように行っているかを調べているようなものです。これをやりすぎている/やりすぎていると感じた場合は、同僚に解決策について考えていることを同僚に尋ねていると考えてください。同僚に15分ごとに質問をすると、同僚はおそらく迷惑になるでしょう。したがって、質問の数を減らし、自分で考え出そうとします。

これをインターネットで調べたいときに視覚化します。

3
Geerten

これらの回答で何度も述べられているように、純粋で重要ではないコピーアンドペーストは悪いことです。しかし、すべてをゼロから作成することも同様です。それがあなたのビジネスの中核となる重要なコンポーネントではない場合、最初にそれを行うためのライブラリまたはコードスニペットを探します。スニペットを見つけることの例外は、問題が非常に単純で、その方法が非常に明確であり、ライブラリを使用していない場合、それ以上何もする必要がないことです。

私が個人的に知っていることは、よくあることを書いている場合、いくつかの微妙なバグがあり、1つまたは2つは、多くのテストを行わない限りそれほど微妙ではないバグです。だから私は同様の解決策を探し、それを変更してテストし、すべてのテストと開発の時間を節約します。結局、私は、機能し、拡張可能で、予算内であるか、予算を下回っていて、期限を満たしている製品を提供する責任があるからです。コードとライブラリを再利用することは、その目的に向けた良い一歩です。

3
Peter Smith

あなたが知らないことを学ぶための最良の方法:それをグーグル!私はあなたがほとんどの開発者と同じように正しいと感じています。劣等感をバックパックに入れ、心をオープンにしてください。

質問したり、Googleで調査したり、失敗することを恐れないでください。それはすべてそれの一部です。

3
TNCodeMonkey

盲目的にコーディングするのではなく、問題を調査することには何の問題もないことは、すでに与えられた回答から明らかです。しかし、直接尋ねなかったために対処されなかった質問は、なぜそれほど不安に感じているのか、そしてそれに対して何ができるのかということです。結局のところ、多くの人々が問題を乗り越えて自信を持っています(そうすべきではない人々でさえも)。

じゃあ何をすればいいの?たぶんあなたはちょうどあなたが手に入れた裏に数百のパットを必要とし、そして今自信を持ってコーディングすることができます。しかし、それでもうまくいかない場合は、自動テストとテスト駆動開発を検討することをお勧めします。テストスイートからの「すべてのテストに合格した」のように「よくできている」と言うものはありません。そこに着くと、あなたはknow正しく実行しました。

また、少しチャレンジしてみてください。すでに知っている構文を常に検索していると言います。そのため、構文を調べずにコードを書くように強制すると、結局、問題なく動作していることがすぐにわかります。

2
alexis

開発者は「素晴らしい」ものではありませんが、偉大さは必ずしも経験から生まれるものではありません。逆に、経験がなくても、開発者は「悪い」とは言えません。優れた開発者と悪い開発者の違いは、ドメインの知識ではなく、方法論にあります。優れた開発者の際立った特徴は、彼が意識的にコーディングしていることです。別の言い方をすると、優れた開発者は、なぜ彼が何かをしているのかを常に知っています。個人の倫理の観点から、これには知的勇気と誠実さが必要です。

少し時間をかけて基本を理解することは非常に重要です。その上に、より複雑なものがかなり構築されています。言語を理解するための基礎がなく、舞台裏で何が起こっているのか、コーディングは単にハッキングになるでしょう…

2
Manish Modi

ハッカソンに行くとおっしゃっていましたね。私はこの1年にかなりの数(15人以上)に行ってきましたが、それらは学習に最適であることに気づきました。そして、学習にとって素晴らしいこととは、二度とそのようなコーディングをしない方法を学ぶことを意味します。私は主に行くすべてのハッカソンで新しいことをすることを心がけているので、新しいことを学ぶことができます。非常に時間的な制約があるため、見つけたすべてのコードをコピーして貼り付けるだけで、テスト中にお尻に食い込むことになります。

ただし、良いことはそこから生まれます:A)バグテスト中に多くを学びます(これもまた大いに泣きます)B)そのようなコーディングを二度と行わず、より良いコーディングプラクティスを学ぶことを知っています。また、ハッカソンでは、あなたが知らなかった多くの新しいことを教えることができる人々に出会い、学校では決してやらないことをします。

だから私が言っているのはコピー貼り付けは悪いことであり、あなたは何も学ぶことはありません、そしてコピー貼り付けによって節約された時間は後でバグテスト中にあなたを噛み、あなたはあなたが何を書いたかさえわかりません、それは午前8時です、そして、すべてのカフェインを燃料としています。しかし、コードをバグテストする限り、以前にコピーしたすべてを学ぶ必要があると思います。

1
jreptak

ですから、例付きの本を読んでそれらを参照することは悪いプログラミングです。 APIをドキュメント化している人はほとんどいないので、私たちが残したのは本だけです。

私が多くのコード例を参照しているので、この質問をする理由が何であるかわかりません。おそらく、私の状況を読んだ後で自分で答えることができます。

16歳のとき通りに行っていたので、大学に行く機会がありませんでした。なんとかして24歳で、通信大学を勉強し、SCJP、SCJD、SCBCD、SCWCDなどのベンダー認定を取得する立場にありました。時々私は苦労し、例のためにオンラインにする必要があったことを認めなければなりません。無意識のうちに、現時点で頭の中に脳腫瘍が成長していました(2010年までにオレンジのサイズになりました)。私の5回の脳手術後、6週間は化学療法/放射線療法と10か月の化学療法を組み合わせていますが、私はまだ自分のプロファイルから表示できる手書きのコード化されたサイトでプログラミングしています。

はい私は今、脳に損傷のある多くのコード例を必要としています、それで私は悪いプログラマーになりますか?

1
thejartender

まあ、私は自分自身を優れたプログラマーとは言いません。しかし、私がすることは簡単です。何かをする方法がわからない場合は、実際にインターネットの周りのコード/例を見てみます。それを読んだ後、私はそれを書き直し、最適化し、必要なコードに最適なものを使用しようとします。

注:インターネットからコードを読み取るしない悪い開発者になります。他の人がそれをどのようにしているかを見るのは常に良いことであり、あなたはいつも何かを学ぶでしょう。しかし、それを盲目的にコピーすることは良くありません。

0
Blastcore