web-dev-qa-db-ja.com

アマチュアが良いプログラマになることは可能ですか?

プロのフルタイムプログラマーは、自分の仕事から継続的に学ぶことで素晴らしい仕事をすることができます。アマチュアプログラマーはどのようにして優れたプログラマーになるためのトレーニングを行うことができますか?

**音楽を再生したり歌ったりしたい場合は、趣味で興味があり、優れた歌手や音楽プレーヤーになることができます。しかし、あなたはプロの歌手になる必要も、生計を立てるために歌う必要もありません。これはプログラマーにも当てはまりますか?有名なアマチュアプログラマーはいますか?

46
Ted Wong

本当に良くなるための鍵は、良いチームで働くことです。多くのアマチュアは一人で働いているので、彼らはそれだけを達成します。チームでは、他の人から学び、仲間が他の便利なものであなたを襲うので、規律を身につけます。

そのため、チームに参加することをお勧めします。オープンソースプロジェクト、または友人と趣味のプロジェクトを作成します。

84
user281377

プログラミングが上手になるための道は、歌うことや音楽を演奏することと同じです:練習、練習、練習。数年間、定期的にソフトウェアを開発するのに十分な時間を費やしている場合は、それが上手くなる可能性があります-勤務時間内でも勤務時間外でも。

さて、練習に多くの時間を費やすこととは別に、プロがアマチュアよりも特定の意味で(音楽だけでなくプログラミングにおいても)よくなる別の理由があります。あなたが専門家であれば、必ずしも好きではないが、ソフトウェア開発のより広い仕事に属している必要があります(たとえば、テスト、顧客との議論、ドキュメントの作成、開発/ビルド環境の設定、ビルドスクリプトの作成など) )。また、不慣れな領域に足を踏み入れ、新しい言語やプラットフォームを学ぶことも時々求められます。アマチュアとして、あなたはあなたがしたくないことを何もすることを強いられません、それはあなたがあなたの人生のほとんどのためにあなたの快適ゾーン内に留まる可能性を高くします。言い換えると、最も好きな1つまたはいくつかの特定の領域に簡単に制限され、学習して成長する多くの機会を逃してしまう可能性があります。

OTOH多くのプロの開発者もこれに陥り、同じ会社で同じルーチンの仕事を続けていると、何十年も何も新しいことを学ぶことはほとんどありません...だから、より良くなるための鍵はあなたの態度です。学習を続け、意識的に快適ゾーンから新しい不慣れな領域に移動する機会を探すと、最終的にはゆっくりと化石化する「専門家」の群れをしのぐでしょう。これを行う良い方法は、いくつかのオープンソースプロジェクトに貢献することです。

推奨される読み物は The Pragmatic Programmer:From Journeyman to Master です。良くなる。

53
Péter Török

しかし、アマチュアプログラマーにとって、優れたプログラマーになるためにどのようにトレーニングできますか?

学習することで、あなたはより上手になります。

つまり、基本的に、趣味家と専門家の間に違いはありませんが、「落とし穴」は少し異なります。

アマチュアの落とし穴は、私見

  • プロではない場合、プロジェクトを完了する必要性は何であってもそれほど強くありません。これは良いことかもしれません。品質に関しては、角を切るのに慣れていないためですが、仕上げをすることは非常に重要なスキルであり、アマチュアとしてトレーニングするのは困難です。プロジェクトを終了させて​​別のプロジェクトを開始させるのは簡単だからです。

  • うまくコミュニケーションする必要性はそれほど強くありません。プロフェッショナルなプロジェクトでは、顧客が問題の内容について1つの一貫した文章しか完全に形成できない場合でも、顧客を本当に理解する強い動機があります。彼らはあなたに解決してもらいたいのです。あなたがそれらを誤解している場合、または(通常の場合)気付かない場合、彼らが理解する必要があることについて話していないと、遅かれ早かれ問題になります。アマチュアプロジェクトは、問題を解決しないためにすべての潜在的なユーザーを簡単に失い、技術的な方法で「終了」する可能性があります。

プロの落とし穴は

  • 良くなるための動機はほとんどありません。癌の治療法を見つけても、生産的に見えるようにコーヒーを飲んでも、週40時間あります。学習は主に自分のために行うものであり、多くの場合、学んだことを適用しようとすると、それに反対する力があります(保守的なグループ思考、階層、スタイルガイドでさえ、改善に対する武器として使用できます)。仕事をあきらめ、時間を切り刻み、人生の別の目的を探すには、多くの愛が必要です。

  • 学ぶことはほとんどありません。はい、1つはすべてをチャレンジとして試すことができますが、正直でなければなりません。1年のスパゲッティコードの後、より多くの年がある言語でリファクタリングすることはできません(「複雑化しています!」)。それがおそらく続くよりも多くの経験の中で、人が学ぶ唯一のことは、欲求不満と企業政治に対する寛容を築くことです。

音楽を再生したり歌ったりする場合は、興味を持ってそれを再生できます。それでも、優れた歌手または音楽プレーヤーになることができますが、プロの歌手になる必要はありません。

もちろんそうする必要はありませんが、実際に仕事を辞めて音楽でお金を稼ぐ機会を断るミュージシャンは何人いるでしょうか。

ITでは、これらの機会は音楽よりも少し確率が高いため、有名なアマチュアになることは不可能ではないと思いますが、多くの場合、アマチュアは情熱を仕事にします(ミュージシャンがしなければならない場合と同様の問題を抱えます)商業とアートの境界線を理解する)

18
keppla

フルタイムの企業用ドローンよりもアマチュアの方が学習の可能性が高いと思います。アマチュアとして、特定のテクノロジー、環境、設計、および開発方法論に制限されることはありません。あなたはあなたの個人的な開発に役立つと思うことなら何でもすることができます。フルタイムの開発者は、同じ企業ガイドラインに従って制限された同じ手順に従って、何年も同じ製品に取り組んでいることでしょう。私たちのほとんどにとって、それは停滞に他なりません。共通の基本に慣れたら、企業環境から少し学ぶことができます。

それが多くのフルタイムの開発者がアマチュアでもあり、彼らが仕事の後もコーディングを続け、彼ら自身のおもちゃプロジェクトで遊んでいる理由です-それは成長に必要な少しの自由です。

8
SK-logic

アマチュアプログラマーとして、あなたは現在あなたのスキルを向上させる多くの可能性を持っています。ソフトウェアエンジニアリングを学びながらスキルを向上させるために、次のことを行いました。

  • 本を読む、例えば ML蒸留実用的なプログラマアルゴリズムの概要
  • https://softwareengineering.stackexchange.com/ のようなWebサイトをお読みください。メトロ/電車に座っている間、私は過去数ヶ月間これを行っています。それは確かに他の人々の質問や意見を読むのに役立ちます。
  • 無料の講義、コース、セミナーに参加してください。たとえば、Javaユーザーグループに参加できます。学生向けの無料セミナーもあります。
  • ソフトウェア雑誌を購読します。
  • Joel on SoftwareGoogle-Code-BlogMartin Fowler などの興味深いRSSフィードを購読します。
  • 職場や学校への運転中にポッドキャストを聴く。 SE-Radio
  • OpenCourseWare をチェックして、大学の実践的な課題のいくつかを行ってください!

もちろん、あなたもあなたの知識を適用する必要があります。これは、インターンシップ、友人とのプロジェクト、または学習コースを通じて行います。自分を改善するには多くの方法があります。あなたは自由な時間を投資する用意があります。また、何か新しいことを学んで楽しんでください

6
BenR

アマチュアが良いプログラマになることは可能ですか?

はい、 可能です ですが、時間がかかります:

チェスの演奏、作曲、電報の操作、絵画、ピアノの演奏、水泳、テニス、神経心理学とトポロジーの研究など、さまざまな分野の専門知識を身に付けるには約10年かかります。鍵となるのは熟慮の練習です。何度も繰り返し行うだけでなく、現在の能力を超えた課題に挑戦し、それを試し、実行中および実行後のパフォーマンスを分析し、間違いを修正します。その後、繰り返します。もう一度繰り返します。


アマチュアプログラマーはどのようにして優れたプログラマーになるためのトレーニングを行うことができますか?

再び 同じソース から:

  • プログラミングに興味を持つ
  • プログラム
  • 他のプログラマーと話す
  • 必要に応じて、大学で4年間
  • 他のプログラマーとプロジェクトに取り組む
  • 他のプログラマーの後にプロジェクトに取り組む
  • 少なくとも半ダースのプログラミング言語を学ぶ
4
BЈовић

アマチュアには、多くの専門家よりも優れた実践を模索するための多くのオプションがあります。多くの場合、専門家は「ただやり遂げる」というプレッシャーにさらされています。

私はプログラミングを学んだようなコースを見たことがありませんが、私が通っていた大学が提供するいくつかの短い(1〜3時間)無料のコースから学びました。彼らはビジネスの人々が彼らのために書かれているコードを理解できるようにすることを意図していました。コースは、一般的な現実の問題を解決する非常によく書かれたコード(コメントを含む)を提示しました。次に、言語機能の説明と、コードがどこでどのように使用されたのかについてコードをレビューしました。私が見た完全な言語コースはどれも、そのコースから学んだことの質に近いコードをもたらすものはありません。私がコンピュータサイエンスの勉強に切り替えたのは2、3年前のことでした。

インターネットとライブラリは、多くのリソースと例を提供します。例の多くは、何かをするのにあまり良くありませんが、それを成し遂げることはできます。例を見るときは、最初にコードを見てください。説明なしで目的と構造を理解できますか?もしそうなら、あなたは良い例を見つけたかもしれません。

学習して適用する必要があるいくつかの主要なプラクティス:

  • DRY(Do n't Repeat Yourself)。
  • DRO(Do n't Repeat Other));標準言語ライブラリを使用し、他のライブラリを使用します。
  • コードをシンプルに保つ。エレガントなコードは維持が難しくなる傾向があります。さらに悪いことに、オプティマイザは多くの場合、単純なコードよりも遅いマシンコードを生成します。
  • モジュールの目的は1つだけです。 (その目的が仕事をするか、意思決定をすることであるなら、それはより良いです。)
  • 適切な名前を使用してください。入力を避けるために短い名前を使用しないでください。代わりにIDEオートコンプリートを使用してください。言語の命名規則を理解してください。
  • コードを最適化しないでください。そのパフォーマンスを測定し、最適化が顕著な効果をもたらすことがわかるまで待ちます。
  • 学び続けます。現在使用できる有用な情報を提供するリソースを特定する方法を学びます。
3
BillThor

音楽や歌が好きな方は、趣味で興味があり、歌手や音楽プレーヤーになることができます。しかし、あなたはプロの歌手になる必要も、生活のために歌う必要もありません。これはプログラマーにも当てはまりますか?有名なアマチュアプログラマーはいますか?

どういたしまして。それはソフトウェアengineeringです。それは「自然の才能」に基づいたものではありません。優れたプログラマーであることは、教育年数と経験年数に基づいています。 実際のプロジェクトでのみ機能します。

2
vartec

私が行った就職の面接(雇用主側)では、面接対象者がアマチュアとしてプログラミングしているもの(学校の割り当てを除く)を常に求めてきました。自分で学ぶことへの情熱。それは可能であるだけでなく、上手になるためのほぼ要件です。

2
Imre

出来ますか?はい。ただし、プログラミングに多くの時間を費やすほど、それを上手に使うための時間も長くなります。技術的なスキルで専門知識を身に付けるには、10年/ 10 000時間 熟考的実践 が必要だと言われています。これは、快適ゾーンで同じ種類のコーディング(たとえば、さまざまなWebサイト用の単純なjQueryコードを書く)を1万時間行うのではなく、1万時間の学習/プログラミングについて読む/ソースコードを読む/ソースコードを書く/他の言語を学ぶ/他の人との協力など.

そのレベルの時間をそれに費やすつもりなら;プログラマーとして仕事を得て、アマチュアステータスを落とすこともできます。 (あなたが独立して裕福でない限り)。

2
dr jimbob

与えられた リアル 単語の元の意味(フランス語アマチュア「恋人」、古いフランス語、そして最終的にはラテン語amatorem名詞amator、「恋人」-ウィキペディア)、非常に多くの専門家もアマチュアであると信じたいと思います。自分の工芸が気に入らなければ、それを練習しますか?

もちろん、それは可能です-プログラミングが好きなら、それを実践し、時間が経つにつれて、上手になるでしょう。 (個人的な才能またはその欠如を考えると、決して素晴らしいことはありません)、しかし少なくとも良い

1
StevenV

誰もが一度にすべてでアマチュアです。あなたが良いプログラマーになりたいと思っていて、それがあなたが楽しむことであるなら、そうするでしょう。鍵は自分でプログラミングすることです。学校はほとんど何も教えません。あなたの学習のほとんどは、自分で、そして仕事で行われます。元気になりたいなら、元気になって。

1
Yatrix

他の何かと同じように、何かを上手くするための最良の方法は、あなたが上手になりたい環境に身を浸し、あなたをはるかに上手に受け入れ、教えてくれる人に囲まれることです。簡単なことではありませんが、それが私が最も速い何かで上手になることを学ぶための最良の方法だと私が見つけたものです。

しかし、本当に才能のあるプログラマになるには、才能ある才能が必要です。あなたが自然に才能のあるバイオリン奏者でないなら、あなたがどんなに一生懸命やどんな楽器を購入しても、あなたはマスターと同じようには決して上手くいかないでしょう。同様に、プログラマーを本当に天才的にするような贈り物がない場合、あなたも彼らになることはありません。

0
stu

私はそれが優れたプログラマを定義するものではありません。しかし、自分で何かを学び、人々のグループと一緒に働くことは、何か違うものです。情熱的なアマチュアプログラマーは、新しいことを学び、ハッキングすることに本当に夢中です。彼らは物事がもっと面白いと思った。しかし、人々のグループでの作業は、その分野の専門家からのコラボレーション、コミュニケーション、情報の共有/獲得という、少し規律のある行動です。

しかし、知識を得ることは情熱の問題にすぎません。自分で物事を学ぶために夜を過ごし、最終的にビルGマークザックなどの世界に新しい何かをもたらすことになる人々がいます。簡単に比較することはできません。しかし、より優れたソフトウェアエンジニアになりたい場合は(私はプログラマとは呼ばないでしょう)、会社に参加するか、他の人が使用するいくつかの優れた製品に取り組みます。

最後にたくさん読んで、スキル、態度、業界の最新情報を改善し、好みを発展させ、情熱を持って行きましょう。事は簡単にあなたに従います!

0
sarat

質問に対して、「アマチュアプログラマーは有名になりますか?」答えは「はい、しかしほとんどはそのようにとどまらなかった」です。私が考えることができる最も有名な例は、大学で無給の(私は信じている)間に彼の最も重要な仕事のいくつかをしたロイフィールディングです(定義上、アマチュアは無給を意味します)。

プロ品質の秘訣は、メンターまたはメンターのセット(オープンソースプロジェクトのチームなど)と、そのトピックに対する真剣な時間の献身です。以前はプロのミュージシャンであった私の経験では、これらの両方がプロまたはアマチュアのどちらかとして優れているために必要であるということです。いくつかは本で学ぶことができますが、一貫した外部の批評がないと、初心者として習得した悪い習慣を乗り越えるのが非常に難しくなります。

とは言え、プログラマーの場合、ミュージシャンよりも学習する方がはるかに簡単です。ミュージシャンとしての教育的エラーを確認することは、ミュージシャンとしてのコードを確認することよりも、ミュージシャンとしての方がはるかに難しいというのが私の経験でした。動作しません。一方、優れた開発者になるには、かなりの時間を費やす必要もあります。

0
cwallenpoole