web-dev-qa-db-ja.com

プログラミングスキルを向上させるために最も効果的なことは何ですか。

プログラマーとしてのキャリアと人生を振り返ると、コードを読む、コードを書く、本を読む、ポッドキャストを聞く、スクリーンキャストを見るなど、プログラミングスキルを向上させるさまざまな方法がありました。

私の質問は次のとおりです。プログラミングスキルを向上させるために、あなたが最も効果的に行ったことは何ですか。改善したい人に何を勧めますか?

私はここでさまざまな答えを期待し、単一の「1つのサイズですべてに当てはまる」という答えはありません-さまざまな人々のために何がうまくいったか知りたいのですが。

876
Oded

優れたプログラミング手法をTI-83 + BASICなどの言語に適用しようとしました。

0
user14563

コーディングマラソンに巻き込まれるのは簡単です。時々立ち止まって、他の人々が同様のプロジェクトをどのように実装しているかを確認することが重要です。

優秀な著者が書いた本を読んでください。 「C:A Programming Language」、「The Perl CookBook」、またはお気に入りの言語に最適な本などを読んでください。彼らが解決する問題について読み、コードのサンプルを見るのではなく、自分で書き上げて、コードを彼らのコードと比較してください。彼ら/あなたのものが良い理由を理解してください。

0
SammyO

さまざまなフレームワーク、IDE、オペレーティングシステム、および言語を使用した。一般的に、混乱していなければ、成長していません。悪いことは、平凡であることではありません。悪いことは、あなたが素晴らしいと思うときは平凡であることです。

0
hoyhoy
  1. 私は開発者中心のコミュニティのWebおよび物理的に参加しました
  2. 他の人のコードを読んでみてください。
  3. コードを書く。
  4. 読んだことを読んで(ブログ、ポッドキャスト、本など)、読んだことを実行してください。
0
Coda

本や記事をたくさん読む。

0
Legend

より多くの本を読み、より多くのコードを書いてください。

0
William

私にとって最大のことは、実装から一歩戻って全体像を検討し始め、アーキテクチャ、パターン、プロセス、要件分析などをよりよく理解したことだと思います。

0
mattlant

私はこれが以前のコメントを単に繰り返していると確信しています:

1:多数の言語からコードを読み取ります。言語が特定の状況をどのように処理するかを理解します。それはあなたがより上手になりたいと思っている言語であなたをより悟らせるかもしれません。

2:チーム...プログラミングの実践、アプローチ、テスト、計画、実装などの議論.

3:上記を使用して、より少ない言語のセットに焦点を当てます。

4:100%正しいと思い込まないでください。質問する必要はありません。

0
Matt

私よりはるかに賢い人と働く

0
Kevin

コンピュータを使用して、それを完全に理解してください。
あなたができると思ったもののためのコードを書いてください。
適切なコードを読み、書き方を学びます。悪いコードを読み、コーディングしない方法を学びます。

0
amadamala

たくさんありますが、以下は私をより良いプログラマーにするのに大きな影響を与えました

1)大学時代、私は他のクラスメートによって評価された最高のゲーム/プログラムを作成するために、非常に才能のあるクラスメートと継続的に競争していました。それは、市場シェアを争う2つの小さな新興企業のようなものでした。

2)「Deep Cの秘密」を読む

3)スマートな人々があなたのコードにコメントできるオープンソースプロジェクトに参加する。

0
azeemarif

あなたが一人でプログラミングしているとき、あなたにとって最も簡単になるもの、または最も明白に見えるものが最高であることを想定することは非常に簡単です。ただし、知識のある他のグループ(特に自分よりも経験が豊富なグループ)と積極的に接触している場合は、考えたことのない多くの問題と、自分には起こらなかったかもしれないそれらの解決策を見つけるでしょう。自分の過ちを犯すことよりも、他の誰かの経験から学び、そうすることで(自分自身またはあなたの雇用者の)重要なプロジェクトを台無しにする方がはるかに良いです。自分自身に直面する前にこれらのことを仲間から学ぶことができれば、ほとんどのプログラマが気付かないような多くの初期の失敗を回避できます。経験の浅いプログラマーになることは可能ですが、他の経験豊富な人々が何をしているかに十分注意を払えば、ソフトウェア開発に対するシニアの理解が得られます。

おそらく、私がした最も便利なことは、comp.lang.c、comp.lang.c ++、comp.lang.Javaなどのオンラインフォーラムを定期的に(毎日または少なくとも毎週)読むことでした。フォーラムのディスカッションに参加しています。 (私が頻繁にフォーラムに頻繁にアクセスした日、それらのほとんどはUsenetにありました。今、それらは特定のWebサイトや開発者コミュニティと関連する傾向があります。)

これらのような活発なディスカッショングループでは、多数のプロの開発者(特に言語の作成者や重要なライブラリの実装者などの高レベルのプロの開発者)を引きつけ、どのプログラミング手法が有用であると考えられるかを理解するのがはるかに簡単です。どちらが望ましいか、どのプログラミング言語、ツール、ライブラリが支持されているか、支持されていないか。また、バージョン管理システムからビジュアルモデリング言語、プログラミング方法など、他の専門家が使用しているソフトウェアエンジニアリング技術に注意を払うことも役立ちます。論争の的になっている領域を知ることも重要です-著しく異なる見解を持つ2人の高レベルの経験豊富な開発者の間の長い議論を見ることは、途方もなく教育的な経験になる可能性があります。

しばらくすると、お気に入りの言語やプログラミングのアプローチが、当初信じていたほど普遍的に好まれるわけではなく、代替案を検討し始めていることに気付くかもしれません-それは良いことです!つまり、(最新の流行を採用するだけでなく)自分の信念についてよりニュアンスがあり、より現実的になり始めており、うまくいけば、さまざまな方法を含むように視野が広がります。

0
unknown (yahoo)

ただそれをするのではなく、実際にそれについて考える時間をとってください。

すなわち

  • あなたが持っているスキルについて考えてください。
    • あなたが持っていないスキルについて考えてください。
    • どんなスキルが欲しいか考えてください。
    • 業界にどのようなスキルを求めているかを考えてください。
  • 0
    Paul Rowland

    毎年新しい言語を学ぶことは素晴らしいことです(私は昨年だけで3つの言語を学びましたが)。私はまだC++を好みますが、物事を解決するさまざまな方法を知っていることで、コーディングスキルがさまざまな点で向上しました。それと、一連の「カタ」または小さなコーディングの目標があります。新しい知識をそれらに適用するたびに、余暇に試し続けています。

    0
    Robert Gould

    私ができる最も賢い人々と協力し、彼らに質問します。恐れずに質問してください。

    誰かがそれを行うためにウェブサイトを構築する必要があります... ;-)

    0
    Stuart Helwig

    ICFPプログラミングコンテスト に数回参加しています。

    そのようなプログラミング競争は他にありません!学ぶたびにたくさん。特に私よりもはるかに賢い人々とチームで働くことです。

    0
    Anton Orlov

    K&R2を2回目に読みました。そして、それをもう一度読んでください。

    0
    Serafeim

    小学校に戻って、父のオフィスPCからパスワードを盗む偽のログイン画面を作成したかったのです。 MS-DOSで実行されるのは単なるバッチスクリプトであり、特別なことは何もありませんでした。それから高校で、自分の好みに応じてMSWordを「カスタマイズ」できるのは魅力的だと思ったので、単純なMSWordマクロウイルスを書き続けました。

    その時私が学んだプログラミングスキルは、私が魅力的だと思った何かをすることの副作用でした。

    0
    simoncpu

    それを改善するためにあなたが考えることができる単一の考えはありません。その学んだスキル。それはあなたが練習によってあなたをより良くするでしょう。実際には、単一の属性を意味するものではありません。私が考えることができる最も重要な属性は1.コードを書く2.異なるpplからペアリングまたはpersapactiveを収集する(コーディングdojo - http://www.codingdojo.org/ のようなアクティビティ)。 3.コードレビュー

    0

    Smalltalkのエキスパートである50人以上のプログラマーとペアプログラミングを行う。私たちはJavaでプログラミングをしていたのですが、オブジェクト指向の設計とデバッグのテクニックについては本当に多くのことを学びました。

    私たちが心を開いている限り、経験豊富なメンターとのペアプログラミングをお勧めします。

    0
    Mario Ortegón

    私より頭がいい人(それほど難しくはない)と一緒に仕事をし、自分の仕事に興味がある。たくさん読むことは役立ちますが、物事を解決する方法について自分のやり方を見つけられるようにする必要があります。

    0
    FrankS

    私のスキルを爆発させたのは、他の人と一緒に仕事をすることだけでした。私は彼らの失敗から学び始めました。 :)

    0
    zgoda

    多くのコードは新しいことを学ぶことを恐れないでください

    0
    reuven

    私はこれらのほとんどが以前に言及されたことを知っていますが、彼らが私のために働いたので、それらをもう一度繰り返します。

    1)最も重要なことは、あなたがしていることに興味を持つことです。あなたがそれに興味があるなら、あなたはそこに半分の道があります。何もあなたの仕事への欲求を害することはありません。

    2)組織内で、あなたより賢く、より良く、より速く、知識と専門知識をできるだけ多く吸収できる人を見つけます。これは、ジュニア、シニア、その他すべてのユーザーに適用されます。肩書きは、私にとってはまったく意味がありません。 「ジュニア」レベルの開発者が、想定される上級レベルの開発者よりもはるかに多くの専門知識/知識を持っているのを見てきました。

    3)自分のコーディング規約に従うようにできる限りの努力をした。書き込み、読み取り、分析、レビュー、議論。コードを記述したら、それを読み直します。メンテナンス可能ですか?よくコメントされていますか?それはそれがすべきことをしているように見えますか?この一環として、コードを分析する必要があります。これはあなたがこれを行うことができた最良の方法ですか?それは何らかの方法で改善できますか?それに応じて変更を加えます。次に、それを確認し、テストします。それはそれがすべきことをしますか?すべきではないことは何ですか?最善を尽くして、コードを解読してください。満足できたら、コードを他の人と話し合ってください。彼らはそれをどう思いますか?彼らはあなたの決定に同意しますか、同意しませんか?それを改善するために何ができたのかについて、他のアイデアを持っている。

    4)常に新しいことやアイデアを学びたいと思っている。

    0
    Jason

    100%の単体テストカバレッジ。

    単体テストを行うことで、プログラミングが本当に改善されました。

    ただし、コードカバレッジツールを使用して単体テストのカバレッジを測定すると、ユニットテストのレベルが上がります。

    良い例は、モジュールを取り、100%の単体テストカバレッジを作成することです。

    あなたは、それぞれモジュールを取り、どのように最高のカバレッジを得ることができるかを見ることによってあなたの同僚との友好的な競争をするかもしれません。

    -

    CrowdNews.euでフォローしてください

    0
    equanimous

    プログラミングとプログラム設計の指導を開始。新入生レベルのOOコースとジュニアレベルのソフトウェアエンジニアリングコースを教えるまで、私はJavaについてほとんど無知でした。

    0
    Lewis Baumstark

    無意味なコードを打ち出す代わりに、私の脳を使う。一度コードを書いて、正しいコードを書いてください。

    0
    leppie

    Steve McConnellのコードコンプリート2を最初から最後まで読んで(実際には彼のアドバイスのほとんどに従っていることを確認して)、私のプログラミングスキルが大幅に向上しました。 。

    また、実践優れたデザイン(本で説明)と他の人のデザインを分析することは、正しい方向に、スキルごとに動くために重要です。

    0
    Levi

    私が行った最も効果的なことの1つは、自分に最適なものに基づいて、プロジェクトでさまざまな言語と代替ツールを使用することを強制することです。 IOW言語の機能を調べて、標準的な選択肢の1つよりも適しているかどうかを確認しました。そのため、個々のメリットに基づいてさまざまなツールを学び、使用する必要がありました。

    私のプログラミングスタイルについても、四角いペグを丸い穴に絶対に詰めないように頑張っています。物事を行うには多くの異なる方法があるので、使用できる多くの言語があります。他のスタイルについてもっと理解できるほど良いです!

    0
    flxkid

    プログラミングスキルを向上させる1つの方法は、さまざまなビジネスドメインを学び、ソフトウェアを使用してそれらのドメインの問題を解決する方法です。たとえば、ビジネスWebアプリケーションのみを扱う場合、HTML、CSS、およびリレーショナルデータベースについてはかなりの知識を得ることができますが、必ずしも同時実行性や3Dグラフィックプログラミングなどの概念を習得する機会はありません。

    0
    newdayrising

    重要なアプリを複数の言語/システムで作成します。 VB6、一般的なLISP、Java/jsp、Java/spring/struts、Rails、grails、Djangoでベッティングプールアプリを作成しました。 Ruby/cocoa OSXで書いています

    それぞれの実装は異なります。また、システムがどのように異なるかを学びました。

    0
    sal

    より経験豊富でインテリジェントなプログラマーの多様なセットとの協力。

    「コードを書くだけ」と言う人は近視眼的です。私は、誰かが「コードを書いた」だけのプロジェクトを見てきました。これは、良い習慣や実用的なプログラミングに対する洞察を誰にも与えず、コーディングの副次的な部分で確かなスキルを開発するのにも役立ちません。仕様、ドキュメント、アイデアの明確化。

    0
    Geekoid
    1. あらゆる(オープンソース)ソフトウェアのソースを読むことは、あなたの専門分野において華麗で重要です。

    2. さまざまなプログラミングパラダイムを学び、理解する(OOはすべての答えではありません)

    3. モノリシックな「システム」ではなくライブラリ/コンポーネントを作成し、インターフェース設計、ドキュメンテーション、概念の単純さの価値を学びます。

    0
    Marijn

    少なくとも1人の(経験豊富な)人とのプログラミング、理想的にはExtreme Programming環境でのプログラミング。代替アプローチの議論は、それぞれの長所と短所を明らかにするのに役立ちます。

    0
    Adam

    多くの人がすでにここに書いたように、たくさんのコードを書いてください。

    しかし、あまり書きたくないほどたくさん書いて、 基本的に怠惰、3つの素晴らしい長所の1つ目 を取得します。

    「簡潔さはウィットの魂」-シェイクスピア

    0
    epatel

    他の人(最高のプログラマー)がどのようにコードを作成するかを学び始めた後、私は大きな改善を見ました。私がやったことの1つは、興味のあるテクノロジーの「How do I」専門家/教祖によるビデオを見始めたことです。

    本を読むよりも動画を学ぶことに大きなメリットがあると思います。本を読むのも素晴らしい方法だという事実を軽視しないでください。しかし、ビデオはよりインタラクティブで迅速であり、視覚的に素晴らしい印象を与えます(つまり、ビデオが優れている場合)

    Tech Podcasts、dnrtvが私のお気に入りです。これを読んでください SOスレッド。

    0
    Vin

    私はいつも頭の中に「小さな」プロジェクトのリストを持っています。私は「あるはず…」を考えるたびに、将来の使用のためにそれをファイルします。次に、面白いと思われるテクノロジーを試してみたいときはいつでも、その機能をプロジェクトリストと比較します。うまくフィットしているようであれば、私はレースに出かけます。

    これにより、「Hello、World!」よりもずっと実用的なものを常に持つことができます。に向けて働きます。

    0
    cmreigrut

    あなたのスキルを向上させるには、本当に好きなプロジェクトに取り組むことが重要だと思います
    あなたの知識を他の人と共有することが重要です。
    他のサイトで、詳細について知る必要のあるトピックについて調査する必要があります。
    最後に、オープンソースプロジェクトでの作業は、プログラマーとして非常に役立ちました。

    0
    Peter GA.

    実際に目的のためのプログラミング。私が実際にユーザーが使用するプログラムを作成して書き始めたのは、学年のためだけに渡されたのではなく、自分のプログラムが与えた影響についての理解を深め始めました。全体像を見ることができました。

    0
    Mogura

    基本的なコンピュータサイエンスを行い、それがすべて同じであることを学ぶ。それはすべて同じ概念に帰着し、すべてロジックとチューリングマシン上に構築されており、すべて同じように実行できます。

    アセンブリにOOPを適用すると、デジタルロジックが面白い...

    0
    Aethylred

    「美しく」とてもきれいに見えるコードを書き始めたとき、私のプログラムはほとんど最初の実行で機能し始め、バグはほとんどありませんでした。バグがある場合、見つけやすい傾向があります。

    だから私は単純さ、清潔さ、そして美しさを探すだけです。 :-)

    「賢い」または複雑な方法でコードを記述しないでください。できるだけクリーンで読みやすいように記述してください。プログラムは正常に機能し、簡単に保守できます。

    0
    Jesper Hertel

    効果的なC++のような良い本を読む。ちなみに、私はすでにC++で数年間プログラミングを行っていましたが、優れたC++やその他のプログラミングの本を読み始めて初めて、知識が飛躍的に向上し、より優れたプログラマーになりました。

    0
    A Non

    批評すべき部分が少なくとも1つ見つかるまで、レビューは完了しなかったという原則に従って、多くのコードレビューを行います。

    ちなみに、多くの場合、このようなコードレビューを行うには、元の作成者の隣に座って、理解できるまでコードを1行ずつ説明するように依頼する必要がありました。幸運なことに、優れたプログラマーからコードのレビューを依頼されるほど幸運な場合は、スキルもすぐに向上します。

    0
    A Non

    言語能力については、コアAPIを掘り下げ、各メソッド/クラスを利用するコードを記述します。これには2つの利点があります。

    1. APIを学ぶことで、ホイールの再発明をやめることができます。
    2. さらに重要なことに、言語の主要なイディオムをよく理解できます。これにより、コードがクリーンで読みやすくなります。 LISPで手続き型のコーディングをやめたときのように。
    0
    noah

    読んだり、他の人と協力したり、一般的に参加して遊んだりします:)

    0
    knight0323

    より多くのコードを書くことを奨励するもの。現在、スキルを向上させるために Project Euler に取り組んでいますが、仕事で扱っているコードベースを見るだけで、昨年も多くのことを学びました。また、実際にプログラミングしたい言語がわかるまでは、ソフトウェアエンジニアリングの本に集中するのが最善ですが、本をたくさん読んでも害はありません。

    0
    deworde

    1)多くの間違いをして、他の人に尋ねたり読んだりして、それらから学んだ
    1)メンターがいた
    2)多くのポッドキャストを聞いてから、私が聞いた主題について読みました
    3)ペアプログラミング
    4)スタイルとテクニックについてオープンソースプロジェクトをレビューする(そして、理解できなかった部分を調査する)

    0
    Mike
    0
    Jeremy

    仕事だけでなく家庭でもコードを書く。これにより、私は仕事で時間がないので、非常に興味深く有用なものを見つけることができました。

    0
    Andre Gallo

    1980年代にコンピューター雑誌から印刷されたサンプルを痛々しくコピーした。 1行ずつ。どこかにエラーがあったことを理解するためだけに。

    一般に、他の人のサンプルを読んで修正する。それらのバグを見つける。それらから外挿します。

    0
    akauppi

    私はリーダープログラマーだったチームから、私が何も知らないさまざまなテクノロジーを扱う新しいチームに移りました。

    そして、2年後に再びそれを行います。

    0
    shoosh

    CでSchemeコンパイラを作成しました。Schemeの内部と外部を学ぶ必要があっただけでなく、コンパイラ、ハードウェアでのコードの実行方法、ガベージコレクタの動作などについてもすべて学びました。

    0
    Josh Segall

    他の多くの人が言ったように、たくさんのコードを書き、いくつかの異なるスタイルの言語を確実に学ぶようにしてください。つまり、似た言語に限定されないということです。たとえば、Javaを知っていれば、かなりの類似点(自動ガベージコレクションなど)があるため、C#の学習はそれほど難しくありませんが、JavaまたはC#の後にC++を学習すると改善されますなぜなら、もしあなたがあなたがあなたのアプリについて別様に考えることを強いられるからです。また、ジョブに適切なツールを使用する方法を学びます。 Perlのコードの半分またはawkなどの標準ツールを使用して同じことを実行できる場合、Javaで単純なファイル変換を作成しても意味がありません。

    自分にとってチャレンジであったことをすることが一番役に立ちました

    0
    Sean

    私の経験では:

    • 実際の実装の前にテストを書き慣れるまで、重いテスト駆動開発(TDD)を練習してください。それはあなたをより良いプログラマーにするでしょう。
    • ペットプロジェクトをサイドに持つか、単にオープンソースプロジェクトに参加します。
    • あなたよりも優れた人々とチームを組むようにしてください。彼らが使用しているツールと、それらが問題にどのように取り組んでいるかを観察します。
    • プログラミングにワクワクするような新しいことを常に見つけてください。情熱を持ってください。
    • 作成します。あなたがお金のためだけにいるなら、あなたはプログラミングの第一人者であることを忘れることができます。
    0
    mislav
    • 間違いを犯し、そこから学んだこと-これらの1つは、3週間でプロトタイプを作成することでしたが、正しく再書き込みするのではなく、リリースすることを許可したため、12年後もまだ維持しています。
    • アルゴリズム300の実行、特に複雑さの順序。どこかで出血しているのは明らかですが、私が日常的に使用している概念の中で具体化しました。
    • 基本に戻って、OSと「C」にコードを書きます。 (これは部分的にはプロトタイプを生産に投入することに対する反応でした。)コードをより高速で堅牢にします。コンピュータの性能向上が一段落するにつれ、今後ますます重要になると思います。私はフレームワークの大ファンではありません。私はここで少数派だと思います。これを後で質問として投稿するかもしれません。
    • 「コード完了」を読んでいます。それから最大のものは私のコードのレイアウトとシンプルさへの焦点でした。
    0
    David L Morris

    さまざまな技術やプログラムに取り組んでいます。鍵は新しいことに挑戦し続けることなので、一つは自分がやっていなかったことに挑戦することだと思います!

    0
    Mitchel Sellers

    私は、Effective Java by Josh Blochを読みました。一晩私はより優れたプログラマーでした。

    0
    Craig Day

    多くの人々がプログラムに言った、そして私は同意する。具体的には、次のようにします。

    1)プログラミング競技を行う!私は今年の夏に初めてのことをしただけで、実際にはかなりの価値がありました(認めますが、驚異的なことはしませんでした)。興味深い問題にすばやく取り組むことを強制します。 Google Code Jamはこれに最適です。

    2)私がよく知っているアルゴリズム(これはソートが素晴らしい)を、その言語の便利な機能を使用して選択した言語で記述します。エレガンスが機能的にそれを行うことから来るときに、MLで命令型ソートを作成するので、それはちょうどしません。

    3)特定の言語を愛する人々に、なぜそれらの言語が好きなのかについて話します。 Perl/Pythonの議論でどちらか一方を選ぶのではなく、なぜ彼らが選択した言語を気に入っているのか、そして将来の参考のために役立つ情報を入手する理由について、それぞれの側から話したいと思います。

    4)テックブログを読む。あなたはそれらについて知っている人々のブログを読むことによって異なる言語について多くを発見するでしょう。もちろん、これはプログラミング以外にも当てはまります。

    もちろん、これらのことはあなたをより良いプログラマーにするために多くのことをする傾向があり、ソフトウェアエンジニアリングであなたを助けるかもしれませんし、しないかもしれません。

    0
    Alex Gartrell
    1. 興味のあるトピックに関する研究論文[ACM、IEEE]を読む

    2. 難しい問題を解決しようとします。失敗しても学べる

    0
    Steven A. Lowe

    私の学習スタイル(またはおそらく私の学習障害)を理解しました。

    人の話を聞くことは、私が学ぶのが最も難しい方法であることを発見しました。ですから、教室での講義、ポッドキャスト、ビデオは、私が学ぶのに最も良い方法ではありません。私が手伝うことができれば、時間を無駄にすることもありません。私は読書で学ぶのがずっと上手です。だから私はたくさんの本やウェブ記事を買って読んだ。 (知っています。このサイトのようなものです。)

    問題を解決する方法は複数あるのと同じように、学ぶ方法も複数あります。私にとって有効な方法を最適化することは、私の技術を改善するための最良の方法です。

    0
    OldGreyTroll