コンピューターサイエンスの学位を取得していますが、プログラミングの方法がわからないと感じています


1050

私はコンピューターサイエンスの学位を取得していますが、Stack OverflowのようなWebサイトやGoogleのような検索エンジンを見て、そのようなものをどこから書き始めてもわからないのです。ある夏、私はiPhone開発者として働く機会がありましたが、ボンネットの下で起こっているメカニズムをほとんど理解せずに、他の人が書いたライブラリをほとんど接着しているように感じました。

アルゴリズムを研究することで知識を向上させようとしていますが、それは長くて苦しいプロセスです。私はアルゴリズムが難しいと感じており、この本の内容を習得するまでに10年が経過するのを学んでいます。私の現在の状況を考えると、私は仕事を探すために1ヶ月を費やしましたが、私のスキル(C、Python、Objective-C)は比較的浅く、C#、Java、およびWeb開発がはるかに高いローカル市場ではあまり望ましくありません需要がある。それはCとPythonの機会が存在しないと言っているわけではありませんが、彼らは私が持っていない3年以上の経験を要求する傾向があります。私のGPAは問題ありません(3.0)が、IBMのような大企業に適用したり、大学院に戻ったりするには十分ではありません。

基本的にはコンピューターサイエンスの学位を取得していますが、プログラミングの方法を学んだとは感じません。会社に入社してフルタイムでプログラミングすることで、自分のスキルを磨き、自分よりも経験豊富な人たちから学ぶ機会が得られると思いましたが、仕事を見つけるのに苦労しており、本当にイライラし始めています。

私は自分のネットをより広くキャストし、自分が育った都市の向こう側を見るつもりですが、同様の状況の他の人たちは何をしようとしましたか?私は一生懸命働いてきましたが、自分で出かけて自分のアプリを書く自信がありません。(つまり、iPhoneアプリ市場でインディー開発者になります。)何も起こらなければ、より人気のあるスキルのアップグレードと学習を検討するか、ITのようなわずかに関連する何かを試してみる必要がありますが、切り取るようなものです。

回答:


533

プログラムを学ぶ最良の方法は、プログラムを書くことです。

2つの提案:

  • ゲームを開発する
  • ウェブサイトを開発する

アルゴリズムは、有用ではありますが、理解する必要がありますが、実際にはソフトウェア設計の2番目の要素を果たします。TDD /デザインパターン/アーキテクチャ/リファクタリング/ユニットテスト/コードをまとめるプロセスなどは、はるかに重要なスキルである傾向があります。

また、自分の時間にこれを行う方がはるかに優れています。仕事でこのようなことをするのを待たないでください。うまくいく傾向にあるのは、キャリアの早い段階で自分の時間にスキルを磨く努力をしている人だと思います。通常、彼らはソフトウェア開発に本当に情熱を持っているからです

  • もう1つは、「本とサンプルを読む」ことであり、尋ねることを恥じることはありません。学びたいなら、尋ねてください:)

70
+1合意。そして、あなたが自分の時間にこのようなことをしたくない場合、これはあなたにとって最高のキャリアパスではないかもしれません。今のものをまとめると、GPAを補完できるポートフォリオを構築できます。
クリス

68
@クリス、-1。それは、自分の時間に貧しい人々のために無料奉仕をしない弁護士が間違ったキャリアにいると言っているようなものです。私が知っている多くのプログラマーは、プログラミングに費やす時間を減らし、他のほとんどのことに時間を費やす方が良いでしょう。

21
実際には、歯を切るとき、多くの弁護士が、ひどく支払われて、先に進むために多くの余分な時間を費やします。

22
弁護士の仕事とプログラマの仕事を実際に比較することはできません。プログラミングを使用すると、自分でスキルを習得できます。その部分を改善するために雇用主やクライアントは必要ありません。

31
本当に、プログラミングは特別だと考えるのをやめる必要があります。弁護士は、私たちと同じように自分で作業/学習できます。彼らは低賃金の仕事から始めて長時間働くかもしれませんが、多くのプログラマーもそうです...「趣味としてプログラミングしないならプログラマーであってはならない」という行は本当に主観的です。

388

私はほとんど他の人が書いたライブラリを一緒に接着しているように感じました

なぜこれが「実際のプログラミング」ではないと感じるのかは理解していますが、真実は、統合作業が企業プログラマーの典型的な作業負荷のかなりの割合を占めているということです。あなたの経験はあなたが考えるよりも少し価値があるかもしれません:)


126
接着剤の場合は+1。誰も新しい家を建てるために専門家のグループを雇い、彼らがその過程で家を建てるのに真新しい技術を発明することを期待しないでしょう。実際、リスクと予算の管理に興味がある人は、おそらくそれをしない方がよいでしょう。
ダンブライアント

14
私はそこにいくつかのエッジケースがあることに同意しますが、私はそこにあるプログラミングの仕事の75-80%がちょうどあなたがちょうどライブラリを接着しているようなものであると言うでしょう。

15
また、ライブラリを結合するだけでも何も問題はありません。それがあなたの生産性を高めるものです!

10
間違いなく私の仕事の90%が他の人のコード(ライブラリまたはレガシーコード)を接続するか、古いコードを維持するかのいずれかです。しかし、少しずつ時間をかけて少しずつ勉強しているので、今ではこれらのライブラリの多くがどのように機能するかを知っており、一般的に内部で何が起こっているのかをより深く理解しています。生涯学習者であり、あなたは最終的にそれをすべて拾います。
CodexArcanum

53
ライブラリを接着しないときは、通常、後で接着するライブラリを作成しています。

238

まず、非常に正直な質問をありがとう。目の前の問題に取り組むには多くの方法があります。ここにいくつかのヒントがありますが、私はこれまで私にとって非常に役立つと考えていましたが、引き続き知識を広げるためにそれらを使用しています。

  1. 学ぶ、学ぶ、さらに学ぶ。これはおそらく私があなたに与えることができる最も重要な唯一のヒントです。学習をやめないでください。1つの言語を知ることは良いことですが、複数の言語を知ることはさらに良いことです。他の言語の知識があれば、より優れたプログラマーになり、特定のタスクへの取り組みが容易になり、一般的なデータ構造のより良い知識を得るのに役立ちます。

  2. 小さいスタート

  3. 暇なときに趣味のプロジェクトを始めましょう。かなり簡単に達成できることをしないでください。どこから始めればいいのかわからないプロジェクトに取り組みましょう。深い終わりに身を投げます。これの利点は、あなたが存在することを決して知らなかったことを学び、それを完了するとき、あなたは計り知れない誇りと満足を感じることです。これが私を動かし続けるものです。

  4. あなたがしていることに真の情熱を持っています。人々はこれについて私に反対するでしょうが。単に9-5の仕事だと考えれば、この分野で優れているとは思いません。それを行うには情熱が必要です。

  5. SOで他の人を助けて!理解する最善の方法は、他の人にそれを教えることです。

  6. 他の人々のプログラムを研究し、それらがどのように機能するかを理解してから、あなた自身のプログラムに同様のテクニックを実装してください。コピーして貼り付けるのではなく、読んで理解してから、その理解に基づいて自分で実行してください。

  7. それで保管してください。物事は時々非常にイライラすることがありますが、終了すると非常にやりがいがあります。何かを理解できない場合は、休憩を取り、考えをクリアして、もう一度やり直してください。SOでお問い合わせください!私たちは喜んでいます:)

  8. 新しいテクノロジーの学習を止めないでください。

  9. いくつかの本を読んでください。私は学生であることを理解しています、あなたはたくさんの読書をしたでしょう。実用的な書籍をいくつかご紹介します…うまくいけば- 実用的なプログラマー:ジャーニーマンからマスターへ - コード完成:ソフトウェア構築の実践的なハンドブック


13
きれいなコードを既読リストに追加してください、それはかなり良いです。

7
「1つの言語を知っているのが良い」->間違っている。1つの言語を知っているだけでは十分ではありません。複数の言語を知ることは良いことですが、さらに多くの言語を学ぶことはさらに良いことです。
デニルソンサマイア

10
「小さく開始」とは、親しみやすいプロジェクトを選択するだけでなく、プロジェクト内で実行可能な部分を実装し始めることを指します。私のプロジェクトは、視差の少しの実験から始まり、「ゲームの背景にはかなりクールなスターフィールドのように見える」と考えました。船を追加します...エイリアンを追加します...いくつかのミサイル、キーボードコントロール、および衝突検出(それぞれ単純な問題、それ自体で)を1つずつ追加し、すぐに、私が販売した商用ゲームがありました時間)かなりの現金。一方、「ゲームを書く」ことは、漠然とした、近づき難い仕事です。一度に1ビット。
mmc

2
@Denilson OPは、プログラムの方法を知っているとは感じないと述べています。プログラミングに自信がない人のために1つの言語を知っているのは良いことです。私のリストはこのコンテキストにのみ適用されます。

7
@Denilsonは、可能性がありますが最初の言語を学ぶことなく、複数の言語を学びましたか?
ペテルトレック

141

個人プロジェクトを開始します。学校の問題は、あなたがした最も複雑なことは、15週間から1年かかり、他の数人の人々が関与したプロジェクトだったことです。問題の領域は十分に理解されていました(教授は学期にきちんと適合しないタスクをあなたに与えませんでした。)これは現実の世界が提供する贅沢ではありません。

あなたが情熱を注ぐことができる、何か最初から最後までの大きなことをしなければならない場合、あなたの脳はそのプロセスを包み始めます。これが単なるキャリアであり、あなたがそれを愛していない限り、あなたはまだあなたがまだそれを成していないように感じるでしょう。


私は1)履歴書の送信2)本を読むことで日々を分けてきましたが、2)コードを書くのにもっと費やすことができるようです。多くの雇用主は、業界での経験がほとんどない人を雇うリスクを冒したくないと思うので、私が受けなかったインターンシップは、今では本当に魅力的に見えます。

5
+1。私は完全に同意します。小さなアプリを起動し、必要に応じて機能を追加します。建物が進行し、さらに何ができるかを理解し始めたら、それを追加できます。

11
「問題の領域は十分に理解されていました(教授は学期にきちんと適合しないタスクを与えていませんでした。)」これはコンピューターサイエンス教育の最大の問題の1つです。この問題に対処するCSまたはソフトウェアエンジニアリングプログラムはいくつかありますが、ほとんどの場合、枠を超えて考えることはありません。あなたは本当にあなた自身のプロジェクトを引き受ける必要があります。Stackoverflowの構築方法がわからない場合は、自分でクローンを作成してみてください。どのクラスでも教えることができる以上のことを学びます。
マットオレニック

素晴らしいアイデア。しかし、コア機能を備えた小さなものから始めて、ゆっくりと追加してください。1つの巨大な完璧なアプリを取得するよりも、この方法のほうがやる気になります。また、書籍の豊富な情報ほど多くの情報やチュートリアルを見つけることはできないと思います
-Xster

@Xster、それが私の言いたいことです。非常に基本的な機能を備えた「質問と回答」アプリケーションを作成するタスクは、開始するのに適した場所です。
マットオレニック

106
  1. K.ニコラスが言うように、プロジェクトを使用して、これらのオンデマンド言語の1つから始めます。
  2. StackOverflowで測定しないでください。それは不必要にあなたを落胆させます。

81
#2の +1- 自分自身と群衆の知識を比較しないでください。
gf

8
StakOverflow自体は名手製品です。言うまでもなく、膨大な種類の製品で何十年もの経験を持つ人々がいます。

6
StackOverflowに対して自分自身を測定することは悪いことだとは思わないでしょう。ここには多くの賢い人がいます。いくつかはあなたがこれまで以上に賢いです。しかし、それらはあなたが学び続けたいと思う人々です。

15
ねえ、なぜ私はSOにはまっているのか知っています!それは12の理由で素晴らしいです。しかし、知らないことすべてに継続的にさらされるのは謙虚です。気が進まないように注意する必要があります。それだけです。

@Georg-ナイスゲームオブゴーグラビター。KGSスマンドリ

72

私はあなたの仕事の状況を手伝うことはできませんが、あなたがあなたのスキルを伸ばすのを助け、あなた自身のスキルについてのあなたの感情を視野に入れることができることを望みます。

私はコンピューターサイエンスの学位を取得していますが、プログラミングの方法を知っている気がしません。

インストラクターに恥ずかしいことがあるかもしれません。プログラミングの方法を知らないという気持ちが、あなたの人生と教育のこの段階に自然で適切である可能性もあります。役立つアイデアをいくつか紹介します。

  • 多くの雇用主は、成績証明書に記載されているコースやGPAが何であるかを気にしません。代わりに、彼らはあなたが何ができるか、特にあなたが何を構築したかを知りたがっています。良い仕事をするには、履歴書にあるテクノロジー(C、C#、何を持っているか)よりも、あなたが構築したもののほうが重要です。

  • 教育中に多くの興味深いプロジェクトを構築する機会を得られなかった場合、インストラクターに恥をかかせてください。ただし、これらのプロジェクトを今すぐビルドできます。興味深い問題については、Webサイトを調べてください。2学期の学生は「歌の検索」を終えたばかりです。Webサイトの膨大な量の歌詞を取得し、転置インデックスを作成し、キーワードをフィードすると、それらの単語を含む歌詞が表示されます。これはGoogleではありませんが、同様のデータ構造を持つ同じ原則に基づいて作成されており、今すぐ構築を開始できます。

私は一生懸命働いてきましたが、自分で出かけてアプリを書く自信がありません。

たぶん、あなたは適切な種類の問題に一生懸命取り組んでいませんか?問題を見つけるのは良いことです

  • 無制限です
  • 複数の良い解決策がある
  • たくさんの悪い解決策がある

これらの種類の問題に取り組む場合、選択を行い、結果に耐えることを学び、物事がうまくいかない場合は、戻って選択を再検討することを学びます。あなたはあなたの成功からよりもあなたの失敗から多くを学びますが、あなたの失敗よりあなたの成功からより多くの自信を得るでしょう。

上に挙げたような特性を持つ良い問題は金のようなものです。ただし、他の人から良い問題を受け取っても、何も失うことはありません。 良い問題、そして練習、練習、練習のためにウェブ探しましょう オイラーの問題があなたが始めなければならない場所であるなら、まあ初心者にとっては問題ありません。しかし、すぐにあなたが本当にクールだと思う中小規模のプロジェクトを構築したくなるでしょう。構築したものに興奮している場合、それは潜在的な雇用者を感動させるでしょう。あなたが興奮していない場合、あなたを雇うのは難しいです。

Peter Norvigは、専門家になるには10年かかると報告しています。もちろん、学位を取得した直後に専門家のように感じることはありません。少し秘密にしましょう:ハーバード大学の教員のほとんど(私は8年間1人でした)は、ハーバード大学にはあまり所属していないように感じます。彼らは雇われました。これらの種類の感情は、学校から職場へ、またはある種類の仕事から別の種類への移行を行う人々にとって非常に一般的です。とても一般的なのは、「偽者症候群」という名前です。

あなたが学位を持っているにもかかわらず、あなたの大学はまだあなたに話します。本当に良い教授がいたとしても、彼らはおそらくあなたを気にかけているでしょう。彼らは確かに彼らの学生の一人が平均Bで卒業したが、彼女は彼女の貿易の基本的なスキルをマスターしていないと感じています。そのため、あなたのプログラムから最も元気で共感的な教授を1人または2人探して、良い問題を見つけるための手助けをしてください。次に自分のスキル、知識、およびそれらに対する感情自分自身で管理します。毎日少しずつ何かを構築し、本当にクールではないものに貴重な構築時間を費やさないでください。 最終的には、プログラミングに関する興奮の感覚を取り戻すことをお約束します。その後、あなた自身にも自信をつけることができます。


同意しなければなりません。そこに行って、C、Python、Objective-Cを知っており、何かをする独立したアプリケーションを構築していることをあなたの将来の雇用者に証明してください。人々はしばしばゲームを選択します。なぜならゲームによっては、挑戦的な設計と実装を伴うことがあり、多くのライブラリが無料だからです。Windows用のゲームを作成する場合、GDI / +またはDirectXはすべて無料のライブラリです。など
-DeadMG

「ハーバード大学の教員のほとんど(私は8年間1人でした)は、ハーバード大学にはあまり所属していないように感じます。督促–クルーガー効果=)

2
何かを構築するための+1:特に有用なものである場合は、群衆からあなたを際立たせます。

5
@アレックス、人事を経ることはない 運がよければ、知り合いはあなたが働きたい場所を知っています。
ノーマンラムジー

1
ご存知のとおり、これが私が一般的に仕事を見つけた方法です。将来的には、ネットワーク内(またはその周辺)の仕事にもっと集中し、キーワードスキャナーのinを免れる必要があると思います。

59

法律事務所で仕事をする方法について何も学ばず、現実世界について何も学ばなかったとDAが不平を言う古いLaw&Orderのシーンがありました。不平を言っている教授は、「それは法律学校であり、弁護士学校ではない」と答えています。

同じことがコンピューターサイエンスにも当てはまります。おそらく、あなたがオンラインで見ているプロジェクトにすぐに貢献する方法を学ばなかったかもしれませんが、おそらく長期的に成功するために必要な基盤を開発したでしょう。

最初に、仕事、あらゆる仕事を得る。自給自足になります。特に現在の経済状況では、書店などで働く候補者が、より適切な雇用を探している間、決してfaultしません。座って何もしない人に質問があります。

プロジェクト、任意のプロジェクトを見つけます。たとえば、github.comには多くの適用可能なプロジェクトがあります。

良いニュースは、あなたが思っているよりもずっと早く、あなたがどこに学校に行ったのか、あなたのGPAが何であるのかなど、誰も気にしないということです。

頑張れ!大変なこともあるかもしれませんが、いつかその経験に満足するでしょう。


8
私たちは最近、これについて仕事で議論しています。あなたのキャリアに無関係な仕事を得ることは、あなたの履歴書をまったく助けると思っていますか?財政的な理由で果物を拾う必要がある場合は問題ありませんが、プログラマとしてのキャリアを築こうとしているなら、あなたの履歴書にその場所があるとは思いません。経済的補償なしでプロジェクトに参加したり、独自のビジネスを立ち上げようとする方が経済的な制約がない場合。私の意見では、フィールド技術者の方がはるかに優れているとしても、オープンソースプロジェクトまたはフィールドに関連する何かに参加することです。

1
@piotr-あなたはそれを自分で言いました-「財政的な制約がなければ」。最近の大学卒業生は、母親とパパと一緒に住んでいない限り、この問題を抱えています。私はデイビッド・Mに同意します-あなたの分野で直接仕事を見つけられない場合は、仕事を得てください。ただ座っていないことを示してください。それから、あなたが日中の仕事で働いていないときは、夜間に学習を続け、プロジェクトなどを通して自分の分野を理解し続けてください。もちろん、履歴書も呼び出して送ってください。

履歴書では、ギャップよりも仕事の方が見た目がよくなります。
ジムC

私の意見では、あなたのキャリアの初めに、無関係の仕事は仕事がないよりも良いです。ただし、履歴書の仕事は仕事がないよりも良いということには同意しません。「仕事なし」の正当な理由がある場合、「どんな仕事」よりも優れている可能性があります。私は自発的に長い失業を経験しましたが、首尾一貫して説明できる正当な理由がありました。

5
piotr:「あなたのキャリアに無関係な仕事を得ることは、あなたの履歴書をまったく助けると思いますか?」そのとおり。プログラマーが一日中家に座っているよりも、ダウンタイム中に建設作業をしているプログラマーのほうがはるかに高いと思います。それは労働倫理を示しています。家に座って一人でコードを書いている一人の天才を雇いたいと思ったことは一度もありません。彼らは他の人とうまく働く方法を知らないか、仕事の汚い部分をする傾向がありません。

59

ProjectEulerを見ましたか?私は、そのサイトで問題をやってPythonを学びました。:] JavaまたはC#を学んだ後は、試してみてください。また、GUIプログラミングも試してみることをお勧めします。

編集:

コーディングの練習のために調べることができる多くのリンクのSOに関する素晴らしいトピックを次に示します。

https://stackoverflow.com/questions/662283/websites-like-projecteuler-net


4
私はサイトについて多くのことを聞いたことがありますが、問題を試みる時間はありませんでしたが、今日は私が持っている唯一のものが自由時間であるように思えます。

44
Project Eulerは、プログラミングの知識を築きたいと思っている初心者プログラマにとってはほとんど役に立ちません。アルゴリズムをコーディングすることで数学の問題を解決する方法を見つけ出すことを目指しています。優秀なプログラマーにならなくても、何百万ものことができます(ただし、おそらく優秀な数学者になるでしょう)。優れたアルゴリズムを書くことは、ほとんどのプログラミング作業にとって優先度の高いものではありません。

1
私はチャールズに反対します-オイラーは特定の概念を理解し、それらを実行する動機を提供します。
ブラム

Xavier Hoが行ったようにそれを使用することは、面白くて便利なようです。つまり、新しい言語の基本を習得することです。PEは、プログラミング(小規模)または数学のいずれかで役立つと思われます。どちらの方法でも急落できます。これらの点は別として、私はチャールズに同意します。

6
pythonchallenge.comが重要です!オイラーはプログラミングによって解決される数学の問題ですが、pythonchallengeは純粋なプログラミングの問題です
-Xster

48

私はあなたのユーザー名からあなたが女性だと推測しています...そうでない場合は、これを無視するか、自分の視点に合わせて自由に変更してください。

私の経験では、コンピューターサイエンスの大学を卒業した女性は、同様のスキルを持つ男性よりも自分の能力がはるかに低いと考えています。女性は自分自身の欠点に比べて単純に(または正確に言えば、私が知っている女性です)と言うかもしれませんが、結局、彼らは雇用主に自分自身を売るのにより苦労しています。

(私は大学院生のほとんどを他の同級生と比べて完全に失敗したように感じ、クラスのトップを卒業しました。)

だから私のアドバイスは、自分自身に正直になり、スキルを磨くために一生懸命働くことです。ただし、仕事を探すときに知っていることを軽視してはいけません。また、「リーチ」の仕事に応募することを抑制しないでください。

  • あなたの価値の本当の評価を与えることができるメンターを見つけてください。
  • 偽のインタビューを実施し、自信、エネルギー、情熱を投影する方法を学びます。
  • 面接を行うときは、個人的なプロジェクトについて話し、技術的な質問をしてください。あなたの学習意欲とエネルギーはあなたの最高の資産です。

後付けとして追加:

  • 最初の仕事に就くときは、給与を交渉することを恐れないでください。あまりにも多くの女性が最初の申し出をありがたく受け入れて、彼らが値するものを決して手に入れません。

これは....関連
ポールネイサン

+1、すべて良い点。私が学校にいたときに、同僚の女性と同じような感情に出会いました。
ヘザーM

6
女性のものだけではありません。すでに有能であるか、成長する必要があることを確認できる人(Yay you!)は、自分の能力を疑い始めない人よりも自分の能力に疑問を抱く傾向があります。この現象には名前があります。督促–クルーガー効果。学校でのキャリアは、どんなキャリアでも、生涯学習の道を続けることができれば、驚くほどの成功を収めています。幸運をお祈りします!!!
ウォーレンP

1
ウォーレン:まったくその通りです。私のあまり率直な男性ピアの多くは同じ問題を抱えていました。北米を含む世界中の多くの文化で、小さな女の子は男の子と同じくらい積極的に競争し、スキルを誇示するように奨励されていません。しかし、それは間違いなく単なる女性的なものではありません。

素晴らしい答え、私は完全に同意します。また、私は卒業クラスで気づいた、それを突き出した女性はしばしばトップの学生だった。(意味、悲しいことに、脱落した多くの女性が完全に有能なプログラマーを作っていたかもしれません...)

39

多くの人は、個人的なプロジェクトを始めるべきだと言っています。私の意見では、これはここでの最善のアドバイスです。他の回答を読んだときに見えなかったものをいくつか追加します...

  • あなたがいる地域で何か選んで情熱的なについてを。これを見つけるのに最適な場所は、コンピューターサイエンス以外の興味があるかもしれません。それはあなたが関与している非営利、あなたが情熱を傾けている趣味、あなたがしているスポーツかもしれません。

  • 共同編集者を見つけます。コーディングだけでは難しいので、非常に役立つもう1つのことは、このプロジェクトで協力してくれる仲間を見つけた場合です。これにより、とても楽しくなり、やる気を維持できます。彼の最近のブログ投稿で、Jeff AttwoodはSOを構築した彼の経験でこの正確なことについて語っています。 http://www.codinghorror.com/blog/2010/05/on-working-remotely.html

  • 控えめな(最初は)何かを選びます。理想的なプロジェクトは小さなものから始まります。ゲートからの目標が野心的すぎる場合、それは非常に困難になります。PC、電話、組み込みシステム、およびWebの開発を行った後、Webは、他の人がすぐに使用を開始できる達成可能なものを探すのに最適な場所だと思います。

  • 可能であれば、他の人が使用するものを選択してください。「顧客」が10人しかいない場合でも、他の人に自分が作成したものを使用してもらうという感覚は麻薬のようなものです。信じられないほど満足。顧客から学び、それらに対応することも、貴重な学習経験です。

このプロジェクトが愛の労働であり、あなたが幸せに深夜に取り組んで、翌朝ベッドから飛び降りてそれに戻ると、良いことが続きます。あなたは学び、自信が育ちます。そして、人々が見ることができる何かをそこに置いたら、それはあなたのポートフォリオの始まりになります。プログラマーや(まともな)マネージャーを採用することに感心するものはありません。


可能であれば、他の人が使用するものを選択してください...それがフィードバックを得るための最良の方法です
-balalakshmi

34

20年以上開発者である誰かの観点からのコメント:

StackoverflowのようなWebサイトやGoogleのような検索エンジンが表示されますが、そのようなものをどこから書き始めてもわかりません。

それらはチームの製品であり、主に他のチームによって作成され、経験とリソースに支えられたライブラリとインフラストラクチャ(.net、java、asp.netなど)に基づいています。似たようなことをどこから始めればよいか分からないということは完全に理解できます。これを心配しないでください。

ある夏、私はiPhone開発者として働く機会がありましたが、ボンネットの下で起こっているメカニズムをほとんど理解せずに、他の人が書いたライブラリをほとんど接着しているように感じました。

現在、多くの開発作業がそのようになっています、私は恐れています。しかし、これらのライブラリの「上」で興味深い仕事をするための多くの範囲があります。また、アルゴリズムを見つけるのが難しいことを心配する必要はありません。クイックソートやリンクリストなど、キャリアの間に実装する必要はほとんどありません。それがライブラリの目的です。

基本的にはコンピューターサイエンスの学位を取得していますが、プログラミングの方法を学んだとは感じません。

プログラミングの方法を知ることと、プロの開発者として機能する方法を知ることは、まったく異なる2つのことです。ある程度の経験が必要です。できれば、実際のシステムで他の開発者と協力してください。C#またはJavaのいずれかをスキルセットに追加してみてください-それらの間に大きな違いはないので、知識は移転可能です。あまりにも早く専門になりすぎることに注意してください。あなたはすぐに多くのお金を稼ぐことはないだろうということを受け入れなければならないかもしれないので、できればしばらくの間あなたの個人的な費用を低く保ってください。

あなたが言及したプロジェクトで作業を開始しますが、プログラミングの知識を増やすだけでなく、それを使用してみると、バージョン管理、単体テスト、統合テスト、さらには簡単なドキュメントの作成などの関連スキルの経験が得られます。この種のスキルは、開発者とプログラマを区別するものであり、将来の雇用主にとって良いショーケースです。役立つ無料のツールが多数用意されています(Visual Studio、github、nunit、Googleアプリの高速版)。

あなたが書いたことから、あなたのCS学位は技術的な問題について考える方法を教えたように聞こえます。また、現在の技術的な制限や経験についてなど、良いレベルの自己知識があるようです。これらを利点として使用してください。今は雇用市場に参入するのに適した時期ではありませんが、一生懸命に働いても大丈夫です。心配しないで、学んで、経験を積んで、最新の状態を保ち、楽しんでください。

幸運を!


「クイックソート、リンクリスト、またはあなたのキャリアの間に何かを実装する必要はほとんどありません」私の現在の立場では、カスタム記述されたリンクリストのクイックソートを実装する必要がありました。ただし、リストを実装する必要はありませんでした。基本的なことの仕組みを知ることには、明確な価値があります。

優れた開発者は、これらの基本的なデータ構造とアルゴリズムがどのように機能するかを知り、それらを実装できる必要があることに同意します。私は自分自身のリンクリストを数回ロールしなければなりませんでしたが、クイックソートを書く必要はありませんでした(幸運なことに)。私のポイントは、多くの言語/プラットフォーム(.net、Java、C ++など)には事前に作成された実装が含まれる可能性があるため、OPは学位で学んだアルゴリズムについてあまり心配するべきではないということでした。

31

プログラミングは、大学でのアルゴリズムやGPAの理解だけではありません。プログラミングとは、枠の外で考える能力、学ぶ意欲、意欲、そして何よりも重要なのは創造性です。

個人的には、去年の5月に大学を卒業したばかりで、ひどいGPAがありました。私は学問よりも社会生活に重点を置いており、代価を支払いました。

しかし、大学からの最近の就職面接(着陸するのに1年もかからなかった)の間に、私は自分の創造性、学習への情熱、分析スキルを誇示し、それが仕事を手伝ってくれました。


27

注:私はこの投稿がダウン投票されることを期待しています。これは元のポスターへの答えではなく、私が上で読んだほとんどのコメントの所見です。

上で読んでいる答えは本当に怖いです。comp.sci学位は役に立たないか関係がない、または何も教えないというほぼ普遍的な感覚があるようです。comp.sciの学位は本当に悪いものになりましたか、それとも、学位の不足を正当化しようとする開発者からの単なる熱風ですか?

まじめな人、彼らは最近大学で何を教えているのですか?卒業する頃までに(少なくとも私が学生だったときに)CSの学位を取得すると、コンパイラの設計、compを十分に理解することができます。複雑さ、正式な方法とロジック、データ構造とアルゴリズムの動物園全体、基本的な運用研究(LPなど)、データベース、暗号化とセキュリティ、スケジューリングアルゴリズム、ネットワークプロトコル、インターネット開発、OSとカーネル設計、並列アルゴリズムとデータ構造、数値アルゴリズムなど。ロット全体は通常、最終論文の一部を形成する巨大なプログラミングプロジェクトで補われます。comp.sciの卒業生が十分なプログラミングの練習を受けられないと言ってはいけません。

また、従来のcomp.sci学位ではソフトウェア開発サイクルの一部を省略しているため、TDD、ユニットテストについての話はあまり聞かないでしょう。しかし、残酷に正直にしましょう。それは本当にロケット科学ではありませんよね?スクラムやファンクションポイント分析についても聞いていません。このような基本的な問題に関する詳細なコースを教えることはかなり冗長になりますが、最近では多くの学位がシステム設計のコースを持ち、学生にこれらのことの仕組みを教えています。

確かに、あなたは.NET、PHP、またはその他の現在の業界標準の専門家ではないかもしれませんが、それは無関係なはずです。5〜10年後には、選択する言語はとにかく変わります。プジョーで運転することを学んだからといって、フィアットを運転することができないはずではなく、プログラミング言語にも同じことが当てはまります。どんな言語でも使えるようになるには、数冊の良い本で数ヶ月の練習が必要です。

確かに何かが時間の無駄である場合、これらの高価な「認証」は、基本的に電子多肢選択試験に参加し、特定のアーキテクチャまたは言語の(通常は無意味な)特徴について尋ねます。特定の病理学的プログラミングのケースに関する知識によってプログラマの能力を測定する傾向があります。

私はさまざまな企業のIT業界で働いており、他のソフトウェア開発者の面接プロセスにも関わってきました。私たちは通常のフィズバズの質問のいくつかを設定しましたが、主に正式なトレーニングや訓練を受けていない人を対象としていました。私はこれまでに、基本的かつそれほど基本的でないプログラミングの質問に答えることのできないcomp.sciの卒業生に会ったことがありません。

注:私はヨーロッパに住んでいて、ヨーロッパの大学の学位しか知りません。しかし、米国の大学の水準はEUの大学の水準よりもはるかに高いと確信しています。


4
これは、学位を取得した後、すべての学位について誰もが感じる方法と同じです。学校は一般的に、さまざまな状況に備えます。仕事を始めたら、より専門的になり、学校でそのエネルギーをすべて無駄にしたように感じるかもしれませんが、実際にやろうとしていることをどうやって知りましたか?まったく学んだことがないよりも、構築できる多くのことを学ぶ方が安全です。

1
私は議論の両側を見ます。CompSciの学位は非常に賢明ですが、CompSciをあまり気にしていないために、コールセンターで働いているCompSciの学位を持つ人にも会いました。CompSciコースで多くのことを学びましたが、自分の時間に学校を離れて学んだ仕事を獲得した技術的なスキルのほとんどを認めなければなりません。ソフトウェアエンジニアリングの仕事を面接するとき、通常、彼らは特定の技術、問題解決戦略、および対人スキルに関する知識をテストします。大学で明示的に教えられているものはありません。
セリン

1
数十人のCS卒業生に会いました-それらにインタビューしながら-それは5分間考えて放置されたとしても、ソートアルゴリズムを説明できませんでした。おそらく、この州の大学の基準は全面的に完全に適用されているわけではありません。@Chris Sが指摘しているように、何もほとんど学ばなくても学位を簡単にスライドできます。
ディーンJ

ここで2つのことを混ぜています。学位を取得することは非常に有用であることがわかりました。それにより、はるかに優れたコーダーになりましたが、正確な理由はわかりません(おそらく、小さな知識と問題解決へのより良いアプローチの組み合わせ)。とは言っても、512バイトのルックアップテーブルを使用して(9,5)ECCを実装する方法すら把握できない卒業生(かなり有名な大学の卒業生)がたくさんいます。優れたコーダーとは、「これは理解できませんが、試験問題は実行できます」を超えたコーダーです。

1
興味深い問題ですが、なぜハードウェアを除いて、通常はECCテストを行うのでしょうか?)もちろん、それはあなたができない/できない自我の良い例です?compSciで学ぶ

24

あなたの謙ilityさはあなたによく役立つでしょう。初心者の心は関係なく、我々が持っているどのくらいの教育と経験、学習のすべての種類のために有用ではありません。

他の人が示唆しているように、プロジェクトオイラーなどでエクササイズを行います。

SOで他の人を助けるためのソリューションを作成します。質問を理解し、適用可能な知識を決定し、最後に答えを明確にする練習は、練習がスキルを構築するので、自信を構築するのに役立ちます。

それにこだわります; 大丈夫です。


9
謙虚さはうまくいきますが、そうでない場合を除きます- 個人的なプロジェクトを含めてドアに足を入れるには、ある程度のチャッツパが必要です。不合理に自信が必要になることさえあります

@イアン、私はあなたの訂正を謙虚に受け入れます。;-)真剣に-それは良い点であり、良い記事です。女性は男性のように嫌いな人であるべきだという結論は好きではありませんが、その実用性について議論するのは難しいです。
カールマナスター

@Carl-結論の速さ:-)採用スタッフ/マネージャーはそのthat慢さ/自己宣伝を食い尽くします。特に、要件を理解し始めていない技術職の候補者を評価する場合。私は、この自信のない自己推進者が現れてショーを盗むとき、これらの貧しい女性と同じボートで多くの非常に有能な男性を見てきました。より多くの女性が自信過剰になるよう奨励することは、それが勝利だと考えることはできないと思います。私たちが最も良いことをできる場所、私見は、より良い決定を下すために人事担当者を訓練すること、またはプロセスを刷新することです。

23

修士号を取得して卒業すると、優れたプログラマーになることはありません。音楽プログラムを卒業すると、優秀なミュージシャンになることができます。

練習、練習、練習、経験に勝るものはありません。1日8時間プログラムし、5年後には、あなたが今不足していることを理解しているかもしれません。


6
それはキャッチ22ですよね?希望する仕事を得るためにフルタイムでプログラムします。
ジムシューベルト

16
いいえ、5年後には何も知らないことに気付くでしょう:)
アールズ

1
@Earlz、そして、あなたが最終的に知っていることは、すでに時代遅れです。
ダンブライアント

4
実際、すべての「Javaスクール」(ここではそうであったかもしれないし、そうではないかもしれない)では、コンピューターサイエンスがプログラミングではないことを忘れがちです。私はCSの学位を取得して医学部に通った人々と、最終的にプログラマーになった生物学者を知っています。しかし、生物学の学位が彼らを外科医にしない理由を誰も尋ねることはありません。誰もが、生物学の研究が医学を実践していないことを知っています。

1
@Earlzどのくらい禅:)
Tullo_x86

23

このような率直な質問、素晴らしい答え-私は簡単にチャイムを鳴らすつもりです:)

これまでの答えは私を少し笑わせました-彼らは潜在的に皮肉なことに私たち自身の偉大さを祝う可能性があります。貧弱なドキュメントとフレームワークのバグのため、私はSOに来ました。ここには明らかに他の金がありますが、たとえあなたが偉大な開発者になっても、謙虚さを保つ価値があります-そして私は個人的な歴史的(?)慢の観点からそれを言います。

より良い人事担当者やマネージャーは技術者を使ってあなたを評価しますが、あなたは技術者に雇われないかもしれない(おそらくそうではない)ことに留意してください。

雇用主は従業員のための計画を立てており、その計画全体を計画し、それを敬意を持って自分自身に当てはめてみてください。雇用主が実際に特定の計画を持っていない場合、困難と機会が生じる可能性があります-良い質問をし、計画を指定するのを助けると、実際にこれらの状況で突き出させることができます。

ビジネスの人々は、彼らが理解していない決定で彼らを助けるために彼らの認識を少し管理しなければならないので、彼らを後援する開発者について(当然のことながら)妄想することができます-そして、私はあなたに持っていない視点を示すためにまたは、非技術系同僚の開発。これは多くの場合、技術者と非技術者との関係の本質であるということを理解することは重要だと思います。回避するのは難しいです。

プロフェッショナルで、オープンマインドで敬意を払うことは仕事を得る-プロフェッショナルとは何かが曖昧なら、ウェブ上でそれを解決する場所があると確信している-私が始めたときに誰かがそれを指摘してくれたらいいのにと思う。:)

私が最後に言いたいのは、開発とアーキテクチャが上手になり、すでにこの道に足を踏み入れたように聞こえると、プロフェッショナルなコードが非常に不満になる場合があるということです。適切なソリューション。

解決策がどこにあるのかわかりませんが、アウトレットを見つけて、あなたの仕事にあまり感情的にならないようにしてください。それはあなたが自分のペースを調整し、より良い人生を送るのに役立ちます-何か「正しい」-多くの場合、同僚のために複雑な問題を作成することになり、プロジェクトの時間枠内でそれを実現するために必要な時間をほとんど入力することができなくなります。これの症状は「暗くなる」ことです-あなたがしたいことを誰にも説明したくないとき。最高の開発者の多くは、彼らがしていることの本質を素人に説明することができます-これは学ぶのに素晴らしいスキルであり、実践するために知的に解放されることがわかりました。

ねえ、そして推定するとき、最初に、タスクをビットに分割し、時間を合計してからそれを2倍にします(それは、分割、征服、行進と呼ばれます;)

幸運を!私はスキーインストラクターになることを期待して学校を去り、主任開発者になりました。あなたが何をするにしても、あなたはうまくやれると確信しています。


10
あなたの最初の文は、短い間チャイムを鳴らすだろうと言いました...しかし、あなたはここで最も長い答えの1つを持っています。;)

「タスクをビットに分割し、合計して時間を2倍にします(これは、分割、征服、家に帰るということです。)」...のための+1です...多くの仕事では、マネージャーが期待するように4倍にする必要がありますが半分の時間で、同じ期間内に行う必要のある別のプロジェクトを追加します。推定を延長することはできません。「2倍して単位を増やす(1時間=> 2日、1日=> 2週間、1週間=> 2か月、1か月=> 2四半期、1四半期=> 2年、.. 。)いくつかの実際の仕事の経験の後、それは私がいつも思っていたほど面白くない

これを印刷して壁に接着したところ
質問

22

はい、それはかなり普通です-ほとんどの学校は、有名な学校でさえ、コンピューターサイエンスを教えるのに素晴らしい仕事をし、ソフトウェア開発を教えるのにひどい仕事をしています。これは徐々に良くなっていますが、まだまだ先は長いです。

とにかく、あなたは正しいことのほとんどをしているように聞こえます:

  • 仕事以外のプログラム
  • ソフトウェア開発に関する本を読んでください(コードの完成、デザインパターン、神話のマン月など)。
  • 新しいテクノロジーを学び続ける-学校は、言語そのものではなく、言語の学習方法を教えておくべきでした。新しいフレームワーク、IDE、API、ライブラリ、ビルドツールなどを学びます。
  • SOやここなどのサイトを探索しましょう。経験豊富な人々と定期的に交流することは、知恵への数少ない近道の1つです。

1
正直なところ、Mythical Man-Monthは少し過大評価されていますね。(しかし、私は本当に「* in a Nutshell」のような本が好きです)。
カミロマーティン

2
@カミロは同意しません。Mythical Man Monthはソフトウェアエンジニアリングをテーマにしていますが、一言で言えば本は単一のテクノロジーに関するものです。最終的には、ソフトウェア開発に関するピープルウェアの問題を理解する必要があります。MMMは、トピックをカバーする読み取りの1つです。
ブライアンウィギントン

21

本当に素晴らしい質問です。人生のあらゆる歩みや雇用市場であなたが説明したことを正確に経験している人がたくさんいると確信しています。

最初に-あなたがコントロールできないものについてこれ以上心配する必要はありません。あなたは、学校、あなたがしたこと、学んだこと、学ばなかったこと、学んだことを強調したり、考えることさえ許されません。

第二-専門。たとえ自分の行動が不明瞭であっても、自分の行動が本当に得意な人には常に需要があります。お気に入りのプログラミング言語を選択し、その言語を完全に習得して「自分で作ろう」と決意する必要があります。プログラミングスキルを向上させる方法について多くの素晴らしいアドバイスを既に得ていますが、結局のところ、主題に関する権威ある本と数日間自分の部屋に閉じ込めて、何もせずにすべてのページを読んで、本が与えるすべての例を書きます。

第三-自分を宣伝します。このコンピューターサイエンスの歴史の中で、このステップは今日よりも簡単ではありませんでした。あなたが与える答えとあなたがSOで尋ねる質問はあなたの履歴書です。あなたがマスターすることを決めたその言語のSOの主要な権威になるためにあなた自身にそれをしてください。数時間にわたる大規模な調査と回答の遅れを意味する場合でも、タグが付いたこのサーバーを介して寄せられる質問に対して責任を負います。アーカイブを検索し、トピックについてSOでこれまでに尋ねられたすべての質問を読んでください。誤った情報を修正し、独自の回答と回答のバリエーションを提供し、いくつかの既存の回答を1つのより良い回答に結合します。コメント、回答、編集の無限のストリームでSOをFlood濫させることが、あなたの存在理由になるはずです (評判ポイントを獲得するので、さらに楽しいです)。

4番目-パブリックイメージで作業します。最高の仕事に就くには自信が不可欠です。企業は、優れた同僚、コラボレーター、コミュニケーターである人々を求めています。これが問題だと思われる場合は、自我を高め、無限の補完物でシャワーを浴びる必要があることを友人に伝えてから、地元の図書館に行って、これらのいずれかを拾ってください


2
コラボレーション/コミュニケーションスキルの重要性に言及するための+1。ほとんどの卒業生はそれらを欠いています。
デニスオキダッハ

1
私は専門化に同意しません、すべての技術はいつか死ぬので、専門化しすぎると仕事なしで終わります...しかし、それはまだ危険です。

1
スペシャライゼーションには場所がありますが、私は大学を出てすぐに正しい時期であるかどうかわかりません。また、需要と供給についても議論します。専門化の秘partの一部は、すでに満員のニッチではなく、充填が必要なニッチを見つけることです。(そしてCOBOLの面では-数年前、飛行機のシートメイトは20代半ばから後半に見えましたが、レガシーシステムを移植するプロジェクトを扱っていました...彼らはまだCOBOLにこだわり、新しいハードウェアに移行する必要がありました。そのため、潜在的に新世代のCOBOLプログラマーがいる可能性があります)

21

さて、このハッカーのニュースを見て、私は「HOLY CRAP THAT'S ME !!」

だから私は昨年12月にCSの学位を取得して卒業し、どうにかしてクラスを合格し、実際にそれを取得することなく学位を取得したと感じました。私のクラスメート全員が信じられないほどのコーディングスキルを持ち、私ができることは基本的なJavaプログラムを作成することだけだと感じました。コーディングの方法を学び、優れたコーダーになるには、膨大な時間がかかります。そこには学ぶべきものがたくさんありますが、私のアドバイスはそれを少しずつ取るだけです。進むにつれて物事を学びます。誰もが悲しんでいるように、学ぶための最良の方法は、特にコーディングを行うことです。言うまでもありませんが、アプリケーションの作成については、学校であなたに迷惑をかけることすらしません。気を悪くしないでください、あなたが学ぶべきことがたくさんあることを知って、それを学ぶのに時間がかかることを理解してください。

あなたが間違いなくあなたが育った都市を過ぎて見るべきだと思います。CSの卒業生を採用している企業はたくさんありますが、それらのすべてがあなたが学校を出てすぐに優れたプログラマーになることを要求または期待しているわけではありません。コーディングに関する質問を一切受けなかった場所で、たくさんのインタビューがありました(また、アルゴリズムの解決とコーディングを求められたものもたくさんありました)。既に知っていることよりも学習能力を重視している企業に応募してください(私の経験では、大企業は、すぐにコードを作成できなくても大きな影響を与えないため、これに関心があります)。

コーディングがあなたがやりたいことであるかどうかはわかりませんが、技術的な背景を必要とする非技術的な仕事もたくさんあります。これらのオプションを調べることができます。

私は、C#やJavaのような1つの言語の詳細を学ぶことに集中せず、プログラミングの原則に集中しません。優れたコーディングスキルを転送し、任意の言語で適用できるようにする必要があります(これはあなたのキャリアの長寿にとって重要です。Javaは永遠に熱くなるわけではありません)。一方、「ホットスキル」を知っていると、仕事を見つけるのに役立ちます。面接スキルは非常に重要です。たとえ練習用であっても、面接をすべて受けましょう。

とにかく、IBMのような大企業があなたの手の届かないところにいるとは思わない。数か月前にあなたと同じように感じました。私は現在IBMで働いています。私のGPAもそれほど素晴らしいものではありませんでした。私は今でもプログラミングが苦手ですが、時間の経過とともに良くなることは知っています。あなたの学習能力に自信を持ってください!


1
私は、IBMのような大企業であることを言うだろう多くの他の多くの場所よりも、REACHにおけるが-彼らはあなたが実行している地面を打つことが期待されるだろう小さい場所とは違って、才能の彼らのプールを訓練することができていることが十分な人々を持っています。そして、インターンシップは常にあります-すでに卒業しているのは少し遅いかもしれませんが、多くの政府機関は夏のインターンを連れてきます...あなたは履歴書にその「NASA​​」または同様のものを得ることができます。

20

うわー、この前に多くの答え。

まったく異なる反応はどうですか...

人間であることの観点から問題を再構成しましょう。

「私は受胎学級を卒業し、もうすぐ生まれます。母がcrown冠し、明日の朝に出産する予定です。しかし、ウサイン・ボルトのようなアスリートを見ると、どうやってそれを走らせることができますか」速い?」

しかし、あなたはここにいます。あなたは本格的な人間であり、学校を卒業し、歩き、話し、コンピュータコースを修了した場合は、起動するのがかなり賢明です。恥ずかしいことはありません。

さて、ウサイン・ボルトが生まれて、トラックに突然狂った時間を入れ始めましたか、それとも人生でたくさんのことをして、彼が興味を持っているものを見つけて、信じられないほどのアプリケーションを続けて、そして突然バム!」彼はそこにいた。

後者の可能性が高いです。ですから、あなたが何をすべきかを知らないことに苦労しないでください。あなたに合ったものを見つけるには時間がかかります。それはあなたのためであり、あなたの両親が考えるものではなく、あなたの仲間が考えるものではありません。どのようなことのために右であるあなたあなたの火を照らすもの。他の人がそれがズボンだと思っているときでさえ、あなたが何があなたを考えるのですか?

開始する(および/または)あなたの学位をあなたが何をしたいのかわからないままにすることは珍しくありません。

私にとっては、Oレベル(英国の資格)の学校は得意でしたが、Aレベル(学位を取得するために大学に入学するために必要なレベル)について気にすることはできませんでした。それで、私は学位を取得するために、より低い場所に行きました(その結果、私が好む学位ではありませんでした)。しかし、私はそれを突き抜けて(まだ自分がキャリアとして欲しかったものの手がかりを持っていない)、ほとんどのソフトウェアの人が決して学ばないエレクトロニクスやものについて多くを学びました。この間、コンピューターゲームライターとしてフリーランスで働きました。

最終結果は?学位を取得した後(賞賛を得て)、ストレートエレクトロニクスをしている人よりも高い給料で就職面接を受けて仕事に就きました。髪を変えたりスーツを着たりしていませんでした。何?よく23でそれは重要です(今振り返ってみると、44歳で私はそれを笑いますが、それはあなたの青春の愚かさです)。

その会社は破産し、それから私はより深刻になり始めた。しかし、私が本当に興味を持っているものを(偶然に)突然見つけたのは、おそらくもう数年ではなかったでしょう。低レベルのソフトウェアツールであることが判明しました。明らかだったはず-私が書いたコンピューターゲームはすべてアセンブリで書かれていたので、私はいつも他の誰も頭を悩ませることのできない低レベルのものが好きでした。しかし、それを将来として見るには、より成熟し、20代半ばまで実際に現れなかったことに驚きはありません。

私はしばしば、多くの場合、まだ10代の若い人たちが、彼らが何をしたいのかを知っているように見えることに驚いています(そして驚いています)。しかし、本当の問題は、彼らがまだ27歳でそれをしているのかということです。または、彼らの初期のアイデアが彼らにとって正しくなかったので、彼らはコースを変えましたか?

THAT(Google、SO)と同じくらい印象的なことをどのように行うのでしょうか?まあ、あなたはソフトウェアや人生の他のすべてをするように、あなたはチャンクでそれをします。基本から始めて、経験を積んでください。あなたが十分であるなら、あなたは続けて、より多くの経験などを得るか、あなたがあなたが十分ではないか、それが地獄のように退屈であることを知っているので、それを放棄します(だから私はいつもにもかかわらず金鉱山でした。私にとっては、退屈です!)。

ぜひ、仲間を見て、長老を見て、彼らの選択と興味を調べてください。しかし、あなた自身も調べてください。多くの場合、一目見ただけで狂ったように見えますが、実際には本物です。(というだけで手形を支払うよりも)あなたが面白い何かを行うことはあるSOはるかにやりがい。

うん、23歳のあなたはアウディTTとクールなフラットに集中しているので、賢明なキャリアの選択よりもお金に誘惑されていることを知っていますが、真剣に、クールな車がすべて割れていないことに気付くでしょうあるために-その少女はあなたが運転するものではなく、あなたが誰であるかのためにあなたを好きでなければなりません。

真剣に、それについて考えてください。それほどクールではないソリューションが正しい答えかもしれません。


-1:これを少し強化して、自分自身についてではなく、質問にもっと集中できますか?
ジムG.

2
それは「私」ではなく、「ここ」がどこにあるかを最初に知ることなく、そこからどのようにしてここにたどり着いたかについてです。私は自分の経験を他の人の経験よりもよく知っているので、自分の経験を例として使用しています。あなたが私について読んだ場合、あなたは間違った観点からそれを読んでいます。あなたがそれを置くときに物事を「きつくする」場合、あなたは表現される視点の背景を提供せず、読者を混乱させたままにすることがよくあります。「卒業したときに何をしたいのかわからなかったが、今は何とかしている」と書くことができた。それは誰も続けようとは思わないだろう-「信じる本当の理由」(TM)はない。

良い答え、スティーブン。ここの他の回答とは異なるPOVから。

+1、1000票を追加してこれを一番の答えにしたい。私に触れた!

18

他の人からの素晴らしいアドバイスに加えて、あなたの地域の開発者イベントへの参加を追加します。ミートアップ、ユーザーグループ、バーキャンプ、コードキャンプなどを探してください。これにより、他の開発者とのネットワーク作り、仕事のリードの獲得、新しいテクノロジーの最新情報の取得、他の開発者のスキルレベルの現実的なピークを確認できます。


これにチャイムを付けたい。これを行う。私は病院で医療記録を扱うハイテク学校を卒業したばかりです。私は地元の.NETミーティングに行き始めました。しばらく時間がかかりましたが、最終的にサーバーとアプリケーションのサポートを行う開発会社に就職しました。私の人生の最終目標ではありませんが、医療ファイルをスキャンすることで勝ちます。

17

10,000時間のルールに従ってください。

何かの達人になるためには、少なくとも10,000時間練習する必要があります。プログラミングに10,000時間を費やすと、そのマスターになります。プログラミングに10,000時間を費やしておらず、クラフトの達人であると感じていないなら、落胆せずに、コーディングにもっと時間を費やしてください。

また、1日8時間プログラムする場合、これを行うにはおそらく3年半ほどかかります。営業時間中にプログラムする場合は、おそらく4年ほどかかります。3/4年程度のプログラミングでこれほど時間を費やしていなければ、おそらくマスターの気分になれないでしょう。


1
そして、同じ時間を何度も繰り返していないことを確認する必要があります!学習を続けるために自分自身をプッシュします。
フルーム

10kルールの場合は+1。最初にそれを聞いたが、それはマーケティング的に素晴らしいように聞こえ、非常に現実的です。

14

ちょっと考えてみてください。

ウェンディは、CSの学位を取得して卒業できるが、プログラミングの実践についてはほとんど知らないと言っている。それは非常に厄介な、恐ろしいことではありませんか?70年代に英語の学科を水没させた詐欺と同じくらい不安です。文学は、理解して統合できるアイデアの集まりではなく、学生が抽象化して「解体」しなければならない「テキスト」の集まりです(http:/ /www.answers.com/topic/deconstruction)。幸いなことに、悪臭のする波で一掃したインストラクターが現在退職しているために、その悪臭は衰えています。

数年前-数十年前-CSでの最初のコースでは、ソート、ハッシュ、検索などの実際の問題(そして、はい、再帰)を使用してアセンブリ言語(Cが発明される前)を教えました。2番目のコースでは、実際のライブコンパイラの設計と実現について学びました。私はMITで非常勤の学生でしたが、プログラマとして報酬を得るために必要なのはこれら2つのコースだけでした。そして2、3か月後にやや生産的になります。

だから今朝、ウェンディの叫びを聞いて、私は確かに、MITはあらゆる場所で、その提供物を薄め、(プログラミングの実践の文脈で)かなり役に立たないがらくたで学生を惑わせたはずがないと思っています。しかし、MITのEE / CSカリキュラムを見ると、まさにそれが起こっていることがわかります。

http://student.mit.edu/catalog/m6a.html

特に、学科がPythonを教育言語として使用していることに気付きました!つまり、本当に!MITのCS学位とは、学生がMITのCSの教師になる資格を得るということです。再帰について話す!

その後、コーディングホラーへのこの貢献に出くわし(http://www.codinghorror.com/blog/2006/07/separating-programming-sheep-from-non-programming-goats.html)、それが非常に重要だと思いましたこの会話の:

「私は(プログラマー候補の成功を予測することについての)この議論に後発ですが、遅咲きの30歳のCS学部の先輩としての私の経験では、プログラミングクラスは役に立たず、私はコミュニティカレッジとシカゴのイリノイ大学にしか行ったことがありませんが、プログラミングの入門クラスは次のとおりです。

「1.オブジェクト指向。学生に手続きの方法をほとんどまたはまったく理解させない。

「2.草取りクラス。クラスは主に、本を読むように言われた構文と構造ではなく、さまざまな種類の問題とその背後にある数学の記述で構成されていました。

「コードはData Structuresコアまでほとんど直接認められていませんでしたが、それはあなたがどのインストラクターに依存していたかによって異なります。この時点で、コードに専念する場合、コンピューターサイエンスコースに2年間在籍していた学生にプログラミング方法を教えることに専念する必要があるためです。

「コーディングは多くの若者にとって趣味であるため、教育機関はそれを頼りに、予想される学習曲線を確立し、学校に行ったときにプログラミングの経験がほとんどない人は選択肢を選ばず、狂ったようにcheし、すべてを費やしていると思います私の経験では、CSを中退した人なら誰でも電気工学に行き着いたので、これは必ずしも抽象的思考の赤字ではありません。私は頭も尻尾もできない数学をしている間、彼らはまだプログラムする方法を知りません。

「1.必要なプログラミング言語としてのJava。ここではJavaをbashするつもりはありませんが、学生が自分のガベージコレクションを学ぶ必要があるのは良いことではありませんか?そして、ポインターは学ぶのに良いことではないでしょうか?再び彼らと一緒に言語でプログラムすることを決めなかったとしても?

「2. Javaに夢中になった後、オペレーティングシステム理論のコアクラスを取り、キャンパスでCクラスを1つも持たないC(もちろん)にあることを発見しましたか?

「もちろん、私は30歳で、常にプログラミングをしている人の1人なので、問題はありませんでしたが、私よりも抽象化の方が優れていると知っていた人がたくさんいました(以前のCalculus、DiffEQ、 )そして彼らに対して積み重ねられていたプログラムを終わらせようとする彼らの完全な苦痛。」

ほんの2、3のデータポイントですが、他の人が言ったように、忘れられません。

-ピート


私はこのうんざりした視点にうんざりしています。
アンドレスジャアンタック

Pythonは現存する最高の教育言語の1つです
-Casebash

codinghorror.comの@ Icplben、Pete、またはJamaal?
ザキ

14

まず、そこにこだわる!

第二に、私を助けてくれたことがいくつかあります。

  1. 興味のある地域を超えて求人検索を続けてください。絶対に移動しても大丈夫です。外に出て新しい場所を見る絶好のチャンス!
  2. 経験が少ないので、インタビュアーはあなたがあなたが仕事をして問題を解決することに興奮して元気になる人であることを確認したいと思うと思います。そのため、会社のコーディングに興味があることを確認しました。私はどちらだった;)
  3. インタビュアーに質問してください。会社を調査し、インタビュー中に資料を用意してください。どのデザインパターンを使用していますか?YテクノロジーではなくXテクノロジーを使用する理由 インタビュー中にこれがあなたを人として締めくくり、休憩の機会を与えてくれると思います。
  4. 自宅で楽しむためのコード!成功する必要はありませんが、読んだテクニックやデータベースのようなテクノロジーを利用するコードを書くだけです。

第三に、私が再び卒業したとき、私はあなたと同じような船に乗っていた、そこにぶら下がって、検索を続けます。最初の仕事はそこにあります。


14

学んだことを専門とする学問を卒業する人はほとんどいません。その点で、コンピュータサイエンスは特別なものではありません。経験的な経験に勝るものはありません。それは、実際のクライアント向けの本格的なソフトウェアを開発することで得られます。これには、あらゆる要求、時間制約、変更、チームワークが伴います。


1
残念ながら、それは事実です。学士号は、あなたがそれを達成することができたバッジとして以外は役に立たない。とはいえ、コンプサイエンスカリキュラムは学部レベルでは恐ろしいものです。CMのカリキュラムには5つの数学が必要ですが、形式的な言語、オートマトン、計算可能性を1つのコースに組み合わせたもので、選択科目です。
MIA

4
100%に同意します。なぜあなたは今資格を得たものの専門家になるのですか??
アレックスファインマン

13

先日、この邪悪なサイトを見つけましたhttp://99designs.com/ ウェブサイトのデザインやその他のデザインの下で、おそらくソフトウェア関連のプロジェクトを見つけることができます。

これは、コーディングを取得し、新しいスキルを開発し、潜在的な雇用者である可能性のある新しい人々と出会ったり、お金を稼ぐこともできる素晴らしい方法です。

たとえあなたが仕事を持っていなかったとしても、あなたは自分の馬に乗っていないことを示すことにおいて、雇用主にとって大きな価値があると気づきました。あなたがそこに出て、いくつかのプロジェクト、できればインタビューで自慢できるプロジェクトをしたことを示してください。


私は1)履歴書の送信2)本のレビューを1日で分けていますが、私はプロジェクトに取り組んでいません。ちなみにそれは非常に興味深いサイトです。ソフトウェア開発者よりもアーティストやデザイナーをターゲットにしているように見えますが、さらに調査する必要があります。

本についてはあまり心配しません。他の場所で述べたように、学習する唯一の確実な方法は実行することです。仕事を見つけるのに時間がかかることでがっかりしないでください。残念ですが、正しいものを見つけるのに何ヶ月もかかることがあります。試してみてください:)私はあなたに同意します、ウェブサイトに興味があるならそれらのいくつかがありますが、サイトはアート/デザインをよりターゲットにしています。そうでない場合は、あなたが見ることができ、利点は、あなたが自分で考えをせずにプロジェクトを行うことができますし、あなたが支払いを受けることがありsourceforge.net他のプロジェクトのアイデアのために

13

心配しないで。ローマは一日で建てられたわけではありません。

For each P in PeopleYouKnow
Try
  ask/call P for a Job apply for job;
Catch Denial As Exception
  don be worry;
  //you'll get a job later
End Try

Finally
 If you haven't found a job yet
  For each programmingJobAd in internet

 Try
    apply for job;
    Follow up;
  Catch Denial As Exception
   don be worry;
  //you'll get a job later
 End Try
end
//Keep trying.
//find a bug from this code.

編集: #! diff A B

3c3
<   ask/call P for a Job apply for job;
---
>   ask/call P for a Job job; if job is available apply for job;
9a10
>  //(sic)
14c15
<     apply for job;
---
>     apply for programmingJobAd;
20c21
< end
---
> End

12

まず、グーグルをコーディングできないことを心配しないでください。Googleは長年にわたり、多くの経験豊富なプログラマーによって作られました。それは視覚芸術の学位を取得し、最後の晩upをどうやって作ることができるのかと思っているようなものです。

就職活動のために、要件を気にしないでください。彼らに電話して、あなたには年がないと言ってください、しかし、あなたはまだ申し込みたいです。彼らが本当に経験を望んでいるなら、もっと若いポジションが利用できるかどうか尋ねてください-あなたのためだけに新しいポジションを作成できるかもしれません。ほとんどの仕事は特定の人のために作成されます。人事部ではなく、プロジェクトマネージャーに連絡してください。HRは通常、新しい仕事を作成するのではなく、既存の仕事の応募者を選別するだけです。この場合、Googleはあなたの友達です;)

6か月ほど投資しない限り、Webアプリ(Googleやスタックオーバーフローなど)をコーディングしないでください。それは大きな学習曲線です。VCSの管理、Webサーバー、HTML JSおよびCSSコーディング、データベースシステム、Webアプリ言語の実行を学ぶ必要があります。残酷です。これらのテクノロジーのほとんどは、Webの仕事をしたくない限り譲渡できません。

Webアプリを実行したい場合は、シンプルなWebアプリのインストールを検討してください(このdjangoベースのIPから国への検索アプリ-http ://www.coulix.net/blog/2006/aug/17/ip- country-flags-django-comments /)。90ドルのdreamhost割引コードで買い物をし(実際のWebサーバーで作業できるように)、設定を試みることができます。セキュリティやパフォーマンスについてはあまり気にしないでください(ただしsshを使用してください)。これは単なる学習プロジェクトです。

デスクトップ上で何かをしたい場合は、pygameを見ることができます。


グーグルの最初のバージョンは短時間で作られたと思いましたか?夏のようなものまたはそのような何か
アールズ

Linuxでデスクトップ上で実行されるApacheは「実際のWebサーバー」であり、お金を使う必要はありません。ホスティング会社は何を運営していると思いますか?
TMN

@ TMN、Webサーバーとは、運用ハードウェアとソフトウェアスタックを意味します。DHはApacheとMySQLを使用することを知っていますが、実稼働サーバーでの開発には利点(メールなどのトリッキーなものを含むすべてがセットアップされ、ドメイン登録が行われます)と欠点(ルートがないなど、取得する必要があります)リモート開発に使用)。実動サーバーを使用すると、Web作業に飛び込むことができます。

11

プログラミングについてはすべて読むことができますが、実際にプログラミングを行う方法を学習するのは、プログラミングを始めるまでです。

個人的なプロジェクトを始めることをお勧めします。作成したいものは何ですか?ゲーム?ブログ?関係ありません。何かを作ってください!

それから、少し(数週間または数ヶ月)実際のコーディングを行った後、オープンソースプロジェクトに貢献することをお勧めします。個人的なプロジェクトは、目標がまだあなたのためにレイアウトされていない場合にプログラムする方法を見つけるのに役立ちます(実際に何かを設計する方法を知ることは、学校ではあまり教えられません)。既存のプロジェクトに貢献すると、チームで作業し、コード標準に従うようになります。

私は他の多くを読んで私の時間を無駄にしないでしょう。せいぜい20%程度の時間を読み、残りの80%をコードで記述する必要があります。(もちろん、時間によって、私はあなたの時間がプログラミング関連のもののために取っておかれることを意味します)


9

さて、ここに私の2セントがあります...他のいくつかのソースからの引用と相まって。

コンピュータサイエンスの修士号と博士号を取得した応募者であっても、驚くほど多くの応募者は、基本的なプログラミングタスクを実行するよう求められたときにインタビュー中に失敗します。

-ジェフ・アトウッド経由のダン・ケーゲル

http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html

これは、履歴書に長年の「経験」を持っている人が簡単なタスクを実行できないという点まで、私がよく見た問題です。個人的には、教育機関はこれについて主に責任があると思います、主題を知らないか、それを教えることができない教員から、お金のために特定のものにだけ入りたい学生を操縦するべきであるカウンセラーにフィールド自体への合理的な関心。

あなたの質問の音から、あなたは一枚の紙を手に入れるためにあなたの人生の数年からねじ込まれたように感じて大学から出てきています。それは、多くの雇用機関が最近プログラマーの学位を見る方法です。彼らは、紙を持っている人だけでなく、プログラムできることを証明した人を求めています。しかし、そもそもこの質問をしているという事実は、実際にプログラミングを学びたいという欲求を示しています。

学習のためにできる最善のことの1つは、既に何度か指摘されています。それはプログラミングに関するものです。残念ながら、これにより技術に関する知識と理解は絶対に高まりますが、履歴書に記載できるものでない限り、仕事を見つけるのに役立つとは考えられません。

特定の目的でいくつかのアプリケーションを構築することから始めて、何ができるのか、そして何があなたを前進させるのに挑戦するのかを考えてから、フリーランスの仕事を見つけることができる場所に行くことをお勧めします。あなたがウェブで拾うフリーランスの仕事のために莫大な金額が支払われることを期待しないでください、あなたはそれをあなたの財布ではなくあなたの履歴書に加えることを探しています。指して3〜5個のアイテムを取得し、「それを構築した」または「それらの機能を設計した」と言ったら、それらすべてをリストし、採用代理店を探します(どこにでもあります。ヘッドハンター)、履歴書を合理化するために少数の人々と協力して、仕事を見つけるための教育と機知を強調し、経験不足の側面を最小限に抑えます。

あなたが潜在的な雇用者と話しているときに覚えておくべき最大のこと(私は人々が常に混乱していることを見る)、そしてどんな分野の誰もが注意を払うべきことは、あなたが絶対に自分自身を売ることを望んでいないがまたは、できることを最小限に抑え、自分自身を売り過ぎないで、どうすればよいかわからないことをできると信じさせます。雇用主は、あなたがどうすればいいのかわからないことをするように頼むコツを持っています。 。

幸運を祈ります!

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