web-dev-qa-db-ja.com

高校のプログラマが自分の仕事に気付かせるのに最適な場所はどこですか?

私は16歳の高校生で、コンピュータプログラミングに情熱を傾けています。私は11年生で、約8か月間、学校のシラバスの一部として学んでいます。私は学校で教えられていることを超えて、いくつかの(かなり良い)アプリケーションを書きました。私がプログラムする言語は、WindowsプラットフォームのC++です。最終的には良い大学でCSを専攻した後、プログラマーとして働きたいです。

私が持っている特定の質問は次のとおりです。

  • 自分の仕事に気づかせるのに良い場所はどこですか?
  • 若いプログラマーのためのジャーナルや出版物はありますか?
  • 出版物ではない場合、優れたブログはありますか、それとも独自のブログを開始した方がよいですか。
  • 他に何かありますか?プログラマーとして気付かれるでしょうか?

私はできるだけ客観的になるように努めました。

これがすべてtl; drの場合:若いプログラマーとして気付かれる最良の方法は何ですか?

編集:私は高校を卒業してすぐに採用されることを望んでいません目的は、プロのプログラマーとしてコミュニティを感動させることではありません。これは、他の人があなたの作品を見て批評することであなたのアプリケーションを改善する大学のアプリケーションに向けたものです。私はこれまでに書いたものからお金を稼ぐことを目指していません。

52
viraj

警告と提案をしたいのですが。

警告:

  • 知識を過大評価しないでください。今は、簡単なアプリケーションを書くのに十分な知識があり、実際にクラスで教えられている以上の知識があると思います。しかし、それはあなたを「プロのプログラマー」にするわけではありません。それはあなたをせいぜい「フリーランサー」にすることができます。

  • 学校で教えられていることの価値を過小評価しないでください。何かが自明であるように思われる場合でも、それを調べてください。次に進むと、「新しい側面」(後で詳しく説明します)が表示されます。

提案:

  • プロフェッショナルアプリケーションの一般的なライフサイクルは3〜5年で、数千(最大数百万)の作業時間を必要とします。開発者だけで展開することはできません。プロのプログラマーは他のプログラマーと協力する必要があります。これは、ツール(言語、IDEなど)に関する十分な知識だけでなく、テクニック、メソッド、イディオムについての問題でもあります。

  • ツールは正式なサンプルと演習で教えることができますが、テクニックとイディオムは「説明」することしかできません。それらを「学ぶ」には、経験し、その経験を他の人と共有する必要があります。それらは継続的に発明され、改善されています。

  • 企業は、学校から採用するときに、ツールの理解度と基本的な技術を使って能力をチェックしますが、最も重要なことは、新しいことをすばやく学習する能力をテストし、必要に応じて「仕事を捉える」ことです。

  • 経験豊富な人々を雇うとき、彼らは彼らが何回やったか、そしてそれらのことからどのような経験を得たかを見ます。

モラル:

  • あなたがより「評価されたい」なら、他の人の問題に参加することによって、他の人と協力することを学びます( stackoverflow など)またはプロジェクトを開く( sourceforge など)

  • また、急いでお金を要求しないでください。 「コード生成」を「共有するもの」と「販売するもの」に分割します。共有できるものは他の人が使用できますが、他の人の参加を引き付けて初期プロジェクトを拡大することもできます。販売できるのは、他の類似プロジェクトと比較してアプリを「ユニーク」にし、実際の商用製品にすることです。
    他の人とコードを共有するには、サイト codeproject または sourceforge を参照してください。彼らの評価は、あなたがしたことが他の人にとってどれほど面白かったかについての考えも与えます。

61

作成したアプリケーションのオープンソースプロジェクトを作成してオンラインでホストすることを考えましたか? SourceForge.net または GitHub.com は、優れたオープンソースプロジェクトホストです。これは、アプリケーションの可視性を高めるのに役立ちます。

35
Bernard

まず最初に、はっきりさせておきましょう。16人のYOプログラマーのほとんどは、実際にはコミュニティを感動させません。

私の意見ではその理由があります。優れたプログラマーになるには、プログラミングスキルだけに依存するわけではありません。 CSメジャーでうまくいけば、プログラミングはコンピューターサイエンスのサブセットにすぎず、賞を受賞したほとんどの人(少なくとも学術賞)は彼らが何か新しいことを証明したか(たとえば、新しい定理)、またはある種のタスク(設計パターン)を達成する新しい方法を発見したためです。そのためには、(少なくとも)次のことを行う必要があります。

  • 数学の背景知識を身に付けてください。アルゴリズムを理解し、さまざまなデータ構造を習得する必要があります。
  • 優れたプログラマーは、「具体的な」言語に興味を持つ前に、まずパラダイム(オブジェクト指向、関数など)を理解していることを理解してください。
  • 多くの場合、優れたプログラミングはコードモデリングにも使用されることを理解し、既存のデザインパターンを学習してください。

あなたがすでにそれらすべてをマスターしていると感じているなら、そうです、あなたはおそらくコミュニティを感動させるでしょう。

いつでもオープンソースプロジェクトに貢献しようとすることができますが、実際に貢献できるようになるまでにどれだけ追いつかなければならないかにも驚くかもしれません。

最後に、 StackOverflow を調べて、好きな言語でどれだけ答えることができるかを確認してください。レベルの適切なプロキシが得られます。

26
SRKX

Stack Overflowで本当に高い評価を得ようとする。ほぼ同じトピックがここで議論されました:

Stack Overflowでの高い評価は良い仕事を得るのに役立ちますか?

13
Doc Brown

試してみたいことがいくつかあります。

  • 実際の問題を解決するソフトウェアを作成します。理想的には、以前に解決されていない(または少なくとも満足できるほどには解決されていない)問題です。あなたのソフトウェアがあなたの最高のプロモーション努力にもかかわらず誰も使用しない場合、それらは必死にそれを単に必要としない可能性があります。
  • 関連するメーリングリスト、IRCチャネルおよびインターネットフォーラムで作業を発表します。プログラムがライブラリを広範囲に使用している場合は、ライブラリのコミュニティに投稿することを検討してください。他の既存のソフトウェアを補完する場合は、発表してください。コミュニティなどへ.
  • 深刻なプロジェクトの場合は、専用のWebサイトを設定してください。 Webサイトには、機能の概要、ダウンロードとドキュメントへのリンク、および(該当する場合)いくつかのスクリーンショットを提供する必要があります。それが適切なウェブサイトであることを確認してください。宣伝された安いジオコシティスタイルの嫌悪感ではありません。ニュースセクション、Wiki、および/またはバグトラッカーを追加すると、潜在的なユーザーに、プロジェクトがどの程度アクティブであるかを示すことができます。
  • オープンソースプロジェクトの場合は、人気のあるFOSSハブ(github、bitbucket、sourceforgeが必要な場合)でホストし、(上記を参照)wikiとバグトラッカーを公開します(ただし、それらを定期的に使用する場合のみ)。
  • 何をする場合でも、適切なドキュメントを提供してください。短い「はじめに」と完全なリファレンスの両方が必要です。あなたが最初のものを持っていない場合、人々はあなたのプログラムが使いにくいと感じるでしょう。 2つ目がない場合、必要な情報を見つけられないため、その使用は中止されます。
8
tdammers

バーナードの答え をフォローして、もう少し追加します。世の中に非常に多くのOSSプロジェクトがあり、人気のあるプロジェクトを作成しない限り、気づきにくいかもしれません。これは、プログラマーが始めたばかりでは簡単ではありません。

プログラミングコミュニティで注目を集めようとしている場合、プログラマが使用するツールのアドオン(OSSまたはクローズドソース)を公開することをお勧めします。就職の面接に出て、会社があなたが書いたソフトウェアをすでに使用していると言えると想像してみてください。多くの開発者ツールには、アドオンを作成するためのAPIがあり、いくつかのホスト「App Store」でさえ、マーケティングについてそれほど心配することなくツールを公開することができます。

ここに私の頭の上のいくつかの例があります:

選択したツールに応じて、注目を集めたいプログラミングコミュニティの特定の飛び地をターゲットにできます。

7
JohnFx
  1. Imagine Cup などのコンテストに参加するか、少なくとも学校のコンテスト(ある場合)に参加してください。
  2. アプリケーションをオンラインにして、おそらくソースコードを提供し、質問とは関係ありませんが、他の人からのフィードバックを聞いて、それから学ぶ
  3. さまざまなコミュニティに貢献してみてください
4

ここでは少し異なる視点があります。

ソフトウェアに注目してもらいたいのであれば、最善の方法はそれを使用してもらうことです。ビル・ゲイツとマーク・ザッカーバーグは素晴らしい若いプログラマーでしたが、より優れたプログラマーがたくさんいました。しかし、これらの2人の紳士は多くの人々に彼らの製品を使ってもらい、それゆえ彼らの仕事でよく知られています。

人々にあなたのコードを使わせるには、次のことができます:

  • 多くの人にあなたの製品を売りなさい。たとえば、モバイルアプリをアプリストアに置いて、ダウンロード、購入、継続使用を追跡します。
  • 多くの人にあなたの製品を使ってもらい、広告収入を得ましょう。
  • 多くの開発者に、あなたの製品で動作する製品を開発してもらいます。これは難しいです。
  • 人気のあるオープンソースプロジェクトに貢献して、あなたの貢献が多くの人に利用されるようにします。

私の意見では、ソフトウェアはユーザーに利益をもたらすことなくほとんど無関係です。そして、あなたは人々が気にする問題を解決するために気づかれるでしょう、そしてそれは非常にまれなスキルです。

4
Jay Godse

まだ読んでいない答えの1つ:Google Summer of Code。

website から:

Google Summer of Codeは、学生の開発者にさまざまなオープンソースソフトウェアプロジェクトのコードを書くための奨学金を提供するグローバルプログラムです。 [...] Google Summer of Codeを通じて、承認された学生申請者は、参加プロジェクトのメンターとペアになり、実際のソフトウェア開発シナリオに触れることができます。

参加するには18歳である必要がありますが、それはそれほど遠くないことではありません。参加して、素晴らしい経験をした人もいます。すべての寄稿はオープンソースプログラムへの寄付であるため、公開されているため、注目されます。

18歳未満であるため、Googleには Google Code IN と呼ばれるGSOCのような大学入学前の学生(13〜17歳)向けのプログラムもあります。

3
Jeroen

私の見解では、プログラムする人のタイプがあります。

  1. 「プログラマー」-これには、16歳の独学者と中国で利用可能な「ソフトウェア開発者」の労働力の99%が含まれます。彼らは仕事を成し遂げることができます...ある意味で....最小限の意味で、しかし、デザインパターン、保守性、堅牢/防御的コーディング、アルゴリズム/データ構造、およびソースの効率的な使用が好きな他のような概念のアイデアはほとんどありません。制御ソフトウェア。ドキュメントを効果的に読み、ほとんどのAPIを使用することができます。
  2. 「平均的な電気技師」-80%電気、10%コンピュータサイエンス、10%ソフトウェアエンジニア。エレクトロニクスに習熟しているが、典型的な「プログラマ」とほぼ同じくらいプログラミング。しかし、ロジックと批判的思考、および電気的な側面からの管理スキルは役立ちます。
  3. 「平均コンピュータサイエンスBS卒業生」-25%のプログラマ、25%のソフトウェアエンジニア、25%のコンピュータサイエンティスト、25%の応用電子工学(ロジックを含む)。
  4. 「平均的なコンピューターエンジニア」-これらの人々は、50%の電気技師、50%のコンピューターサイエンスの卒業生の組み合わせです。

定義:

  1. 「コンピュータサイエンス」-ダイクストラはかつて述べました:「コンピュータサイエンスは天文学が望遠鏡に関するものである以上に、コンピュータに関するものではありません。」コンピュータサイエンスは、コンピュータに関するよりも数学に関するものです。これには、複雑なアルゴリズムとデータ構造を開発、理解、および分類する機能が含まれます。
  2. "ソフトウェアエンジニアリング"-デザインパターン、プログラムを表す図(これらが何と呼ばれるか思い出せません)。そのようなもの。防御的コーディング..ソース管理の使用、

上記の「平均」という言葉を使用したことに注意してください。個人的な興味や仕事の経験に応じて、これらの割合は大幅に変化する可能性があります。これらは、あまりに一般化されたステレオタイプです。本を表紙で判断しないでください。私はまた、私の経験からパーセンテージをBSingしています。

3
user606723

私はフリーランスのプログラマーです。私が9年前に高校を卒業して以来、プログラミングは私の第一の収入でした。私はまだ学位を取得するつもりですが、現時点ではまだ私には適していません。

自己主導の認識への私の道は次の通りでした。これらの手順がプログラミングコミュニティに認められるとは言っていませんが、インタビューするときに信頼性を高めるのに役立ちます。

当時、IMOのプログラミングにかなり精通していた後でも、基本に立ち返り、チュートリアルを実行して、それらからインスピレーションを得た作品に基づいてポートフォリオを構築しました。また、自分のコードにJavaDoc風の方法でコメントするように強制し始めました。ポートフォリオは現在、華やかさと魅力に満ちていないかもしれませんが、それはあなたがそこから構築し、最終的にそこにあるものを置き換えることができるベースラインを提供します。次に、見込み客に示すデモとコードサンプルのセットを用意しました。これはあなたの最初の仕事を得るために不可欠です。誰も経験のない人を雇うつもりはありませんが、プロの経験がない有望なプログラマーにチャンスを与える人はたくさんいます。

その後、これらのプログラムを分析し、よく使用するタスクに基づいてライブラリを作成し始めました。新しいライブラリーを使用して、インターネットでCompSciの問題を調べ始め、ライブラリーを使用してソリューションを構築するのにかかる時間を計り始めました。これにより、特定のタスクに対して何を請求するかについて、将来のベースラインが得られます。

それまで私がオープンソースを発見したのはそれが初めてでした。私は興味のある言語でsourceforgeのプロジェクトを調べ、利用できるアプリケーションを見つけました。これらのアプリケーションをインストールし、毎日のコンピューティングエクスペリエンスの一部として使用し始めました。これらのアプリケーションの長所と短所を毎日のやり取りで確認でき、自分のニーズに合わせてそれらを拡張し始めました。私はパッチをレビューのために開発中のコミュニティに提出し、数回経ってからプロジェクトのメンバーになるよう申請します。ここで、「vastエクスペリエンス」を取り入れたチームで作業するときに使用したさまざまなツールの使い方を学び、当時考えていた次のレベルに進みました。

私は、個人として働いていたときに、オープンソースプロジェクトでの作業を習得し、互換性のあるソリューションを実装しました。私はフリーランスの開発者としてのキャリアを真剣に追求し始め、いくつかのフリーランスの求人サイトに参加しました。人気の仕事を見て、応募を始めました。断られた仕事はすべて、自分の知識を広げるための仕事を得たかのように、自分のためにそれを完成させます。これは私のポートフォリオを構築し、いくつかの実際の課題を紹介するのに役立ちます。私がようやく最初の面接を受けたとき、私は率直でした、彼らには私には専門的な経験がないと言いました。その後、私が取り組んできたオープンソースプロジェクト、そこで達成したことを彼らに伝え始めました。私が遭遇したいくつかの主要なハードルと、それらへの対処方法。私はアマチュアとしての経験に基づいて、実用的なアプリケーションとサンプルコードのポートフォリオを提供することができ、それらはすべての情報を取り入れ、フリーランスの世界に足を踏み入れる機会を与えてくれました。

1
Steve Buzonas

JohnFXはこの質問に素晴らしい答えを出したと思います。

いくつかの考え:

  • JQueryUIから始めるのが最適かもしれません。それは楽しさと視覚的です。したがって、jQueryサイトのjQueryUI開発者フォーラムにアクセスして、貢献者になるよう依頼することができます。

  • 優れたスキルを発揮するよりも、プログラミングに対する大きな情熱と献身を示していると思います。しかし、あなたを止めさせないでください!参加することを強くお勧めします。

  • この時点で、QAを行うために解決する必要があるかもしれません。 QAは退屈ですが、それを受け入れて献身を示すことができます。しかし、そこから少しのコードを提供したり、プラグインを作成したりできます。

  • あなたが何かに関与するように依頼し、彼らがそれを困難にするなら、それは彼らが嫌いな人だからです。人々が励ましているプロジェクトとニースを探してください。

  • 励みになるプロジェクトを見つけたら、素敵な人とあなたが寄稿します。大人の寄稿者の1人、またはできればプロジェクトの担当者の1人に、短い推薦状を書くよう依頼してください。

0
Joe

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のストレージにできるだけ多くキャッシュすることを忘れないでください。

これを行い、それについてブログを書いて、ブログのエントリと進捗状況についてひねりを加えれば、間違いなく気づかれるでしょう。学ぶことはたくさんありますが、あなたはそれを行うことができます!

0
  1. できる限り学ぶ。これは本、フォーラム、クラスで行うことができますが、最も重要なのは実際にプログラミングすること(そして批評を受けること)です。高校のプログラミングクラスを超えている場合は、地元の(コミュニティ)カレッジに(夏を超えて、または夜間のクラスとして)受けられる優れたCSクラスがあるかどうかを確認してください。または、MIT /スタンフォードタイプのオープンコースウェアを試す。
  2. イニシアチブを示す。 C++が完全に無視されることを知っているとしましょう。オープンソースプロジェクトのリストへのコミットが数十回あるとすると、何かを知っていることを示しています(ただし、コミットのためにコミットしないでください)。独自のオープンソースプロジェクトを開始します。これは午後に行うことではありません。しかし、数か月で赤ちゃんになるもの。 Android/iphoneアプリを作成して公開し、役立つアプリをダウンロードしてダウンロードしてもらいます。

PS:私が大学に出願してから久しぶりです-彼らはまだあなたにこのようなものをリストする機会を与えていますよね? (例えば、趣味に関するセクション、またはあなたの興味についてのエッセイの質問)。

0
dr jimbob

「自分を過大評価しないでください」と答えた人には敬意を表しません!

自分の年齢でプログラミングが好きなら、それを試してみてください。おそらく、他の子供たちよりも年齢が高く、偉大です。ベテランになる頃には、次のブライアンカーニハン、エドガーダイクストラ、またはダグリーかもしれません。

IPhoneまたはAndroid開発を学び、実際のアプリをいくつか構築することをお勧めします。

何かを得意とし、そこに着くまでの間、会議で話したり記事を書いたりすると、気づき、スキルが磨かれます。

私は70年代後半からプログラミングをしており、Javaです。最も重要なJava今まで読んだ本はGang of FourでしたJavaが発明される前の10年前に作成されたデザインパターン。それを読んで素晴らしいものになってください!

今日、最も支払額の高い業界は金融ですが、それは急速に変化しています。私はそれが戻ってくると信じていますが、あなたは決して知りません!

プログラマーになって、高い雇用と仕事の満足度を楽しんでください!

頑張ってください、あなたはあなたの前に素晴らしいキャリアを持っています!

0
Victor Grazi