私は16歳の高校生で、コンピュータプログラミングに情熱を傾けています。私は11年生で、約8か月間、学校のシラバスの一部として学んでいます。私は学校で教えられていることを超えて、いくつかの(かなり良い)アプリケーションを書きました。私がプログラムする言語は、WindowsプラットフォームのC++です。最終的には良い大学でCSを専攻した後、プログラマーとして働きたいです。
私が持っている特定の質問は次のとおりです。
私はできるだけ客観的になるように努めました。
これがすべてtl; drの場合:若いプログラマーとして気付かれる最良の方法は何ですか?
編集:私は高校を卒業してすぐに採用されることを望んでいません目的は、プロのプログラマーとしてコミュニティを感動させることではありません。これは、他の人があなたの作品を見て批評することであなたのアプリケーションを改善する大学のアプリケーションに向けたものです。私はこれまでに書いたものからお金を稼ぐことを目指していません。
警告と提案をしたいのですが。
警告:
知識を過大評価しないでください。今は、簡単なアプリケーションを書くのに十分な知識があり、実際にクラスで教えられている以上の知識があると思います。しかし、それはあなたを「プロのプログラマー」にするわけではありません。それはあなたをせいぜい「フリーランサー」にすることができます。
学校で教えられていることの価値を過小評価しないでください。何かが自明であるように思われる場合でも、それを調べてください。次に進むと、「新しい側面」(後で詳しく説明します)が表示されます。
提案:
プロフェッショナルアプリケーションの一般的なライフサイクルは3〜5年で、数千(最大数百万)の作業時間を必要とします。開発者だけで展開することはできません。プロのプログラマーは他のプログラマーと協力する必要があります。これは、ツール(言語、IDEなど)に関する十分な知識だけでなく、テクニック、メソッド、イディオムについての問題でもあります。
ツールは正式なサンプルと演習で教えることができますが、テクニックとイディオムは「説明」することしかできません。それらを「学ぶ」には、経験し、その経験を他の人と共有する必要があります。それらは継続的に発明され、改善されています。
企業は、学校から採用するときに、ツールの理解度と基本的な技術を使って能力をチェックしますが、最も重要なことは、新しいことをすばやく学習する能力をテストし、必要に応じて「仕事を捉える」ことです。
経験豊富な人々を雇うとき、彼らは彼らが何回やったか、そしてそれらのことからどのような経験を得たかを見ます。
モラル:
あなたがより「評価されたい」なら、他の人の問題に参加することによって、他の人と協力することを学びます( stackoverflow など)またはプロジェクトを開く( sourceforge など)
また、急いでお金を要求しないでください。 「コード生成」を「共有するもの」と「販売するもの」に分割します。共有できるものは他の人が使用できますが、他の人の参加を引き付けて初期プロジェクトを拡大することもできます。販売できるのは、他の類似プロジェクトと比較してアプリを「ユニーク」にし、実際の商用製品にすることです。
他の人とコードを共有するには、サイト codeproject または sourceforge を参照してください。彼らの評価は、あなたがしたことが他の人にとってどれほど面白かったかについての考えも与えます。
作成したアプリケーションのオープンソースプロジェクトを作成してオンラインでホストすることを考えましたか? SourceForge.net または GitHub.com は、優れたオープンソースプロジェクトホストです。これは、アプリケーションの可視性を高めるのに役立ちます。
まず最初に、はっきりさせておきましょう。16人のYOプログラマーのほとんどは、実際にはコミュニティを感動させません。
私の意見ではその理由があります。優れたプログラマーになるには、プログラミングスキルだけに依存するわけではありません。 CSメジャーでうまくいけば、プログラミングはコンピューターサイエンスのサブセットにすぎず、賞を受賞したほとんどの人(少なくとも学術賞)は彼らが何か新しいことを証明したか(たとえば、新しい定理)、またはある種のタスク(設計パターン)を達成する新しい方法を発見したためです。そのためには、(少なくとも)次のことを行う必要があります。
あなたがすでにそれらすべてをマスターしていると感じているなら、そうです、あなたはおそらくコミュニティを感動させるでしょう。
いつでもオープンソースプロジェクトに貢献しようとすることができますが、実際に貢献できるようになるまでにどれだけ追いつかなければならないかにも驚くかもしれません。
最後に、 StackOverflow を調べて、好きな言語でどれだけ答えることができるかを確認してください。レベルの適切なプロキシが得られます。
Stack Overflowで本当に高い評価を得ようとする。ほぼ同じトピックがここで議論されました:
試してみたいことがいくつかあります。
バーナードの答え をフォローして、もう少し追加します。世の中に非常に多くのOSSプロジェクトがあり、人気のあるプロジェクトを作成しない限り、気づきにくいかもしれません。これは、プログラマーが始めたばかりでは簡単ではありません。
プログラミングコミュニティで注目を集めようとしている場合、プログラマが使用するツールのアドオン(OSSまたはクローズドソース)を公開することをお勧めします。就職の面接に出て、会社があなたが書いたソフトウェアをすでに使用していると言えると想像してみてください。多くの開発者ツールには、アドオンを作成するためのAPIがあり、いくつかのホスト「App Store」でさえ、マーケティングについてそれほど心配することなくツールを公開することができます。
ここに私の頭の上のいくつかの例があります:
選択したツールに応じて、注目を集めたいプログラミングコミュニティの特定の飛び地をターゲットにできます。
ここでは少し異なる視点があります。
ソフトウェアに注目してもらいたいのであれば、最善の方法はそれを使用してもらうことです。ビル・ゲイツとマーク・ザッカーバーグは素晴らしい若いプログラマーでしたが、より優れたプログラマーがたくさんいました。しかし、これらの2人の紳士は多くの人々に彼らの製品を使ってもらい、それゆえ彼らの仕事でよく知られています。
人々にあなたのコードを使わせるには、次のことができます:
私の意見では、ソフトウェアはユーザーに利益をもたらすことなくほとんど無関係です。そして、あなたは人々が気にする問題を解決するために気づかれるでしょう、そしてそれは非常にまれなスキルです。
まだ読んでいない答えの1つ:Google Summer of Code。
website から:
Google Summer of Codeは、学生の開発者にさまざまなオープンソースソフトウェアプロジェクトのコードを書くための奨学金を提供するグローバルプログラムです。 [...] Google Summer of Codeを通じて、承認された学生申請者は、参加プロジェクトのメンターとペアになり、実際のソフトウェア開発シナリオに触れることができます。
参加するには18歳である必要がありますが、それはそれほど遠くないことではありません。参加して、素晴らしい経験をした人もいます。すべての寄稿はオープンソースプログラムへの寄付であるため、公開されているため、注目されます。
18歳未満であるため、Googleには Google Code IN と呼ばれるGSOCのような大学入学前の学生(13〜17歳)向けのプログラムもあります。
私の見解では、プログラムする人のタイプがあります。
定義:
上記の「平均」という言葉を使用したことに注意してください。個人的な興味や仕事の経験に応じて、これらの割合は大幅に変化する可能性があります。これらは、あまりに一般化されたステレオタイプです。本を表紙で判断しないでください。私はまた、私の経験からパーセンテージをBSingしています。
私はフリーランスのプログラマーです。私が9年前に高校を卒業して以来、プログラミングは私の第一の収入でした。私はまだ学位を取得するつもりですが、現時点ではまだ私には適していません。
自己主導の認識への私の道は次の通りでした。これらの手順がプログラミングコミュニティに認められるとは言っていませんが、インタビューするときに信頼性を高めるのに役立ちます。
当時、IMOのプログラミングにかなり精通していた後でも、基本に立ち返り、チュートリアルを実行して、それらからインスピレーションを得た作品に基づいてポートフォリオを構築しました。また、自分のコードにJavaDoc風の方法でコメントするように強制し始めました。ポートフォリオは現在、華やかさと魅力に満ちていないかもしれませんが、それはあなたがそこから構築し、最終的にそこにあるものを置き換えることができるベースラインを提供します。次に、見込み客に示すデモとコードサンプルのセットを用意しました。これはあなたの最初の仕事を得るために不可欠です。誰も経験のない人を雇うつもりはありませんが、プロの経験がない有望なプログラマーにチャンスを与える人はたくさんいます。
その後、これらのプログラムを分析し、よく使用するタスクに基づいてライブラリを作成し始めました。新しいライブラリーを使用して、インターネットでCompSciの問題を調べ始め、ライブラリーを使用してソリューションを構築するのにかかる時間を計り始めました。これにより、特定のタスクに対して何を請求するかについて、将来のベースラインが得られます。
それまで私がオープンソースを発見したのはそれが初めてでした。私は興味のある言語でsourceforgeのプロジェクトを調べ、利用できるアプリケーションを見つけました。これらのアプリケーションをインストールし、毎日のコンピューティングエクスペリエンスの一部として使用し始めました。これらのアプリケーションの長所と短所を毎日のやり取りで確認でき、自分のニーズに合わせてそれらを拡張し始めました。私はパッチをレビューのために開発中のコミュニティに提出し、数回経ってからプロジェクトのメンバーになるよう申請します。ここで、「vastエクスペリエンス」を取り入れたチームで作業するときに使用したさまざまなツールの使い方を学び、当時考えていた次のレベルに進みました。
私は、個人として働いていたときに、オープンソースプロジェクトでの作業を習得し、互換性のあるソリューションを実装しました。私はフリーランスの開発者としてのキャリアを真剣に追求し始め、いくつかのフリーランスの求人サイトに参加しました。人気の仕事を見て、応募を始めました。断られた仕事はすべて、自分の知識を広げるための仕事を得たかのように、自分のためにそれを完成させます。これは私のポートフォリオを構築し、いくつかの実際の課題を紹介するのに役立ちます。私がようやく最初の面接を受けたとき、私は率直でした、彼らには私には専門的な経験がないと言いました。その後、私が取り組んできたオープンソースプロジェクト、そこで達成したことを彼らに伝え始めました。私が遭遇したいくつかの主要なハードルと、それらへの対処方法。私はアマチュアとしての経験に基づいて、実用的なアプリケーションとサンプルコードのポートフォリオを提供することができ、それらはすべての情報を取り入れ、フリーランスの世界に足を踏み入れる機会を与えてくれました。
JohnFXはこの質問に素晴らしい答えを出したと思います。
いくつかの考え:
JQueryUIから始めるのが最適かもしれません。それは楽しさと視覚的です。したがって、jQueryサイトのjQueryUI開発者フォーラムにアクセスして、貢献者になるよう依頼することができます。
優れたスキルを発揮するよりも、プログラミングに対する大きな情熱と献身を示していると思います。しかし、あなたを止めさせないでください!参加することを強くお勧めします。
この時点で、QAを行うために解決する必要があるかもしれません。 QAは退屈ですが、それを受け入れて献身を示すことができます。しかし、そこから少しのコードを提供したり、プラグインを作成したりできます。
あなたが何かに関与するように依頼し、彼らがそれを困難にするなら、それは彼らが嫌いな人だからです。人々が励ましているプロジェクトとニースを探してください。
励みになるプロジェクトを見つけたら、素敵な人とあなたが寄稿します。大人の寄稿者の1人、またはできればプロジェクトの担当者の1人に、短い推薦状を書くよう依頼してください。
IPhoneおよびAndroid(現時点では標準のブラウザを無視する)で適切に機能するWebアプリを作成し、HTML5の拡張機能(https://developer.mozilla.org/en/HTML/ HTML5)遅延、むらのあるネットワーク、および電話ブラウザーの制限を克服するため。これは、サーバーベースのAPIに接続するjavascript + html5ブラウザーアプリを配信することを意味します(SOAPではなくxmlrpc/json/yamlを選択)。サーバーでは、安価なVPSのLinux(debian)でcherrypyを使用することをお勧めします。123systems.com、buyvm.net(推奨)で月額4ドル未満で入手できます。Pythonの使用方法を学ぶそして、Fabricを使用してサーバーにデータをデプロイします。namecheap.comで.infoドメインを年間$ 2.99で取得し、DNSにdnsmadeasy.comを使用します(より高価ですが、それだけの価値があります)。 DNSを介して負荷分散を実行できる単一の問題はありませんでした。また、データベースによって延期されることはありません。sqliteを使用し、sql状態変数を使用して手動でテーブルを設計する方法を学ぶnts。最後に、1台のマシンで、おそらく30,000人のユーザーを処理できます。 (3秒ごとにサーバーへの1ヒットで同時に2,000)。 HTML5のストレージにできるだけ多くキャッシュすることを忘れないでください。
これを行い、それについてブログを書いて、ブログのエントリと進捗状況についてひねりを加えれば、間違いなく気づかれるでしょう。学ぶことはたくさんありますが、あなたはそれを行うことができます!
PS:私が大学に出願してから久しぶりです-彼らはまだあなたにこのようなものをリストする機会を与えていますよね? (例えば、趣味に関するセクション、またはあなたの興味についてのエッセイの質問)。
「自分を過大評価しないでください」と答えた人には敬意を表しません!
自分の年齢でプログラミングが好きなら、それを試してみてください。おそらく、他の子供たちよりも年齢が高く、偉大です。ベテランになる頃には、次のブライアンカーニハン、エドガーダイクストラ、またはダグリーかもしれません。
IPhoneまたはAndroid開発を学び、実際のアプリをいくつか構築することをお勧めします。
何かを得意とし、そこに着くまでの間、会議で話したり記事を書いたりすると、気づき、スキルが磨かれます。
私は70年代後半からプログラミングをしており、Javaです。最も重要なJava今まで読んだ本はGang of FourでしたJavaが発明される前の10年前に作成されたデザインパターン。それを読んで素晴らしいものになってください!
今日、最も支払額の高い業界は金融ですが、それは急速に変化しています。私はそれが戻ってくると信じていますが、あなたは決して知りません!
プログラマーになって、高い雇用と仕事の満足度を楽しんでください!
頑張ってください、あなたはあなたの前に素晴らしいキャリアを持っています!