アマチュアが優秀なプログラマーになることは可能ですか?[閉まっている]


46

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

**音楽を演奏したり歌ったりするのが好きな人は、それがあなたの趣味であり、あなたが興味を持っているので、それを行うことができます。しかし、プロの歌手になる必要も、生計のために歌う必要もありません。これはプログラマにも当てはまりますか?有名なアマチュアプログラマーはいますか?


3
右。そのため、Wozniakは最初のAppleが販売されるまでは優れたプログラマーではありませんでした(したがって、彼は「プロフェッショナル」になりました)。
キース

定義「良い」..

2
すべての「良い」プログラマーはかつてアマチュアでした。
spudwaffle

回答:


84

本当に良くなるための鍵は、良いチームで働くことです。多くのアマチュアは一人で働いているので、彼らはそこまでしか行けません。チームでは、他の人から学び、他の人が他の便利なものであなたを攻撃するので、あなたは規律になります。

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


9
+1良いチームで働くため。チームに同等以上のスキルを持つ人がいることは、非常にやる気になります。
BenR

「落とし穴」リストのチームパートを忘れてしまった、+ 1
ケプラ

2
+1それが鍵だと思う:あなたよりも経験のある良い人から学ぶこと。良いチームに参加することは、言うよりもずっと簡単です。

1
良いチームビットの+1 。チームがあなたよりも上手でなかったり、上手でなければ、あなたは学びません。
スペンサーラスブン

4
他の人から学ぶためにチームに入る必要はありません。
エマニュイルルセフ

53

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

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

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

推奨される読み物はThe Pragmatic Programmer:JourneymanからMasterまでで、どのように改善し続けるかについての非常に実用的なアドバイスがたくさんあります。



専門家は不快な仕事をしなければなりませんが、それとは別の側面があります。これらの不快な仕事は、ほとんど役に立たない退屈で退屈な仕事です。IOWアマチュアは、興味深いプロジェクトを開発することを選択することで、同時により多くのことを学ぶことができます。しかし、 1つの重要な教訓は、もちろん、退屈で退屈な作業を行う準備をしなければならないということです。私は特にあなたのような手段が、よそのコードで作業しているため、「オープンソース・プロジェクトに貢献する」のように-学習の例で、なじみのないコードを読み取る方法など
Steve314

@StuperUserリンクが壊れています(2番目の括弧はハイパーリンクに含まれていません)。
Paperjam

「まともなアーティストになりたいなら、絵を描いてください。毎朝、スケッチをしてください。あなたは助けずにはいられません。」プロジェクトを見つけてください。助けが必要な利益がそこにあります..アドバイスを求めます(「請求システムを構築しています、どこから始めますか?」、「コンテキストセキュリティをどのように処理しますか?」など)。失敗のコストが低く、あなただけ...それから支払うギグを取得する可能性があります
ボビーD

@ Steve314、優れた専門家は、ありふれた退屈なタスクを自動化するツールを作成します。適切な仕事に適切なツールを使用することで、一部のタスクの時間を数百倍に短縮しました。(より優れたツールでさえ、そのタスクを完全に自動化できたかもしれませんが、ツール作成の労力と時間の節約のバランスが取れているように感じました。)
sarnold

18

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

学習することで良くなります。学習は、一部が実行され、一部が実行されたことを反映します。

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

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

  • あなたがプロジェクトを終了する必要性は、どんなに関係なく、あなたがプロでないときほど強くありません。これは良いことです。なぜなら、品質に関してはコーナーをカットするのに慣れていないからです。しかし、仕上げは(時間通りにさらに良いです)アマチュアとして訓練するのが難しい非常に重要なスキルです。プロジェクトを終了させて​​別のプロジェクトを開始するだけで簡単だからです。

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

プロの落とし穴は

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

  • から学ぶことはほとんどありません。はい、すべてを挑戦とみなすことができますが、正直に言う必要があります。1年のスパゲッティコードの後、あなたはより長い年月の言語でリファクタリングすることができません(「あなたはそれを複雑にしている!」)おそらくそれが長続きするよりも経験が豊富であり、唯一のことは、フラストレーションと企業政治に対する耐性を構築することです。

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

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

ITでは、これらの機会は音楽よりももう少し可能性が高いので、有名なアマチュアになることは不可能ではないと思いますが、多くの場合、アマチュアは情熱を仕事にします(ミュージシャンがする必要があるときに同様の問題を抱えています)商業と芸術の境界線を把握する)


これは私の魂を傷つけます。リファクタリングが許可されていないスパゲッティコードの1年(「あなたはそれを複雑にしている!」)
テランス

1
「よくなるための動機はほとんどありません。」そのような方法でソフトウェア開発を扱った従業員がいれば、たとえ不注意で物事を壊してしまったとしても、もっとうまくやろうとする人よりも、彼らを解雇したいです。

@Chris Marisic:それなら私はあなたと一緒に仕事ができたらうれしいです。悲しいことに、あなたは私の雇用主の列の例外になります
ケプラ

8

フルタイムの企業向けドローンよりもアマチュア向けの学習の方が多くの可能性があると思います。アマチュアとして、あなたは与えられた技術、環境、設計、開発方法論に制限されていません。自分の成長に役立つと思うことは何でもできます。フルタイムの開発者として、同じ企業ガイドラインによって制限された同じルーチンに従って、同じ製品に何年も取り組んでいる可能性があります。私たちのほとんどにとって、それは停滞に他なりません。共通の基本に慣れれば、企業環境から少し学ぶことができます。

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


6

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

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


4

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

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

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


アマチュアプログラマーはどのようにして優れたプログラマーになるために訓練できますか?

再び同じソースから:

  • プログラミングに興味を持ちましょう
  • プログラム
  • 他のプログラマーと話す
  • 必要に応じて、大学に4年間入学します
  • 他のプログラマーとプロジェクトに取り組む
  • 他のプログラマーの後のプロジェクトに取り組む
  • 少なくとも半ダースのプログラミング言語を学ぶ

リンクだけで構成される回答を+1することはあまりありませんが、この記事読む価値があります。ありがとう。
サーノルド

これについてさらに詳しく説明してもらえますか-尋ねられた質問にどのように、なぜ答えるのですか?「リンクのみの回答」はStack Exchangeでは歓迎されません
-gnat

1
@gnatリンクはそれをすべて言っています-うまくいけば、それは編集後に良くなっています。
BЈовић

3

アマチュアとして、あなたは多くの専門家よりもより良い実践を模索するより多くの選択肢があります。専門家はしばしば「ただそれを成し遂げる」というプレッシャーにさらされています。

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

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

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

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

2

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

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


2
実際、それはかなりの程度、自然な才能です。貧しいソフトウェアエンジニアを優秀になるようにトレーニングすることはできませんが、一般的には誰でも優秀になるようにトレーニングできます。音楽や芸術の才能によく似ています。ほとんどの人をかなり上手に訓練することはできますが、誰も偉大に訓練することはできません。彼らは自分自身を訓練し、おそらくどのトレーナーよりも優れています。また、世界クラスのアスリートのように、ほとんどのプログラマーが自分の存在を知らない理由を説明できる世界クラスのプログラミングの才能に出会ったことはほとんどありません:)
ビルK

2

私が行った就職の面接では(雇用者側で)、面接対象者がアマチュアとしてプログラミングしているもの(学校の割り当てを除く)を常に求めていました-それを行ったことは、フィールドへの真の関心と確かなしるしです自分で学ぶ情熱。それが可能であるだけでなく、それはほとんど良くなるための要件です。


2

出来ますか?はい。ただし、プログラミングに費やす時間が長くなるほど、それを上手くやらなければなりません。技術的なスキルで専門知識を開発するには、10年/ 10万時間の審議練習が必要であると言われています。これは、快適ゾーンで同じ種類のコーディングを行う(たとえば、異なるWebサイト用の単純なjQueryコードを作成する)1万時間ではなく、プログラミングについての学習/読み取り/ソースコードの読み取り/ソースコードの書き込み/他の言語の学習の10000時間です/他人との共同作業など

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


1

誰もがすべての点でアマチュアです。優れたプログラマーになりたいと思っているなら、それがやりたいことです。鍵は自分でプログラミングすることです。学校はほとんど何も教えません。学習の大部分は、自分自身と職場で行われます。良くなりたいなら、良くなりなさい。


1

与えられた本当の言葉の本来の意味(フランスのアマチュア「の恋人」、古フランス語から、最終的にはラテン語からamatorem NOM。amator、「恋人」 -ウィキペディア)、一つは専門家の多くもアマチュアであることを信じているしたいと思います。あなたがあなたの工芸品を愛していないなら、あなたはそれを練習するでしょうか?

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


アマチュアの本当の意味は、OEDまたはNOADで見つける意味です。単語の語源はその意味を決定しません。「職業としてではなく娯楽として、追求、研究、科学、またはスポーツに従事する人」。
ジャンゴラインハルト

本当。「本当の意味」ではなく「本来の意味」を書いたほうがいいかもしれません。残念ながら、現在の言語には「何かをするのが本当に好きだから何かをする人」という一般的な言葉がありません。これは、OPの質問「アマチュアが優れたプログラマーになることは可能ですか?」に答えるのに役立つと思います。もちろんそれは可能です-プログラミングが好きなら、あなたはそれを練習し、やがてそれが得意になります。(個人的な才能やその才能を考えれば、決して素晴らしいことではないかもしれませんが)、少なくとも良いことです。
StevenV

0

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

しかし、知識を得ることは情熱の問題にすぎません。夜中に物事を学び、最終的にビル・G・マーク・ザックなどの世界に新しいものを持ち込むことになった人々がいます。簡単に比較することはできません。しかし、より優れたソフトウェアエンジニアになりたい場合(プログラマーとは呼びません)、会社に参加したり、他の人が使用する優れた製品で働いたりします。

最後に、あなたのスキル、態度、業界の最新情報を改善し、好みを開発し、情熱を持って進むためにたくさん読んでください。物事は簡単にあなたをフォローします!


ビル・ゲイツとマーク・ザッカーバーグは、ハードバードでビジネスを始めて中退するまでコンピューターサイエンスを学びました。アマチュアの良い例ではありません。
バルテック

オタクな環境を除いて、ハーバードがプログラミングスキルの開発に重要な役割を果たしているかどうかは疑問です。
サラット

0

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

専門家としての質を保つための秘trickは、メンターまたはメンターのセット(オープンソースプロジェクトのチームなど)を持ち、そのトピックに真剣に取り組むことです。元プロのミュージシャンとして、私の経験では、これらの両方がプロとしてもアマチュアとしても優れている必要があります。一部は本で学ぶことができますが、一貫した外部の批判がなければ、初心者として習得された悪い習慣を乗り越えることは非常に困難になります。

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


0

他のことと同じように、何かを上手くやる最良の方法は、あなたが良くなりたいと思う環境に没頭し、あなたに寛容で教えてくれるあなたよりもはるかに優れた人々に身を包むことです。簡単ではありませんが、それが私が見つけたのは、最速のものを上手に学ぶための最良の方法です。

しかし、本当に才能のあるプログラマーになると、あなたはそれだけで、才能がなければなりません。あなたが自然な才能のあるバイオリン奏者でなければ、どんなに頑張っても、どんな楽器を買っても、あなたはマスターほど優秀になることはありません。同様に、プログラマーを本当に天才にするような才能がなければ、決して彼らになることはありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.