大学卒業後すぐに良いプログラマーになるべきですか?


28

可能性のある重複:
私はコンピューターサイエンスの学位を取得しましたが、専門のプログラマーに近いとは思えません

私は最近大学を卒業し、その後、開発チームに参加しました。開発チームでは、おそらく経験の浅い開発者であり、2、3の労働条件を帯びています。一方、チームの残りのメンバーは5〜10年の経験を積んでいます。

ボトル入りの課題とテストに関しては、私は非常に優秀な学生であり、非常に優秀なプログラマーでした。私はいくつかのプロジェクトで成功を収めましたが、今でははるかに大きなコードベースで作業しており、学習曲線ははるかに高くなっています。

私は、他に何人の開発者が彼らのキャリアをチームで始めて、彼らが吸うように去ったのか疑問に思っていました。これはいつ変更されますか?プロセスをスピードアップするにはどうすればよいですか?私の先輩たちが私を助けてくれていますが、私は偉大になり、今、自分の価値を示したいと思っています。

回答:


50

ソフトウェア開発の興味深い点は、あなたがどれだけ優秀かは問題ではないことです。常に優れた、または少なくとも何かを教えるのに十分な人が常にいるということです。また、数ヶ月前に書かれたコードを見て、経験のレベルに関係なく、それがひどいと思うことも珍しくありません。

私にとって、自分のスキルと同僚のスキルのギャップに気付いた後、他の人のコード、ブログ投稿、本を読んだり、同僚が物事を達成した方法に注意を払ったりするなど、今までに学んだことのない学習を始めました。大学はコンピューターサイエンスの準備をしましたが、実際にはソフトウェア開発の準備はしていません。それはほぼ4年後、私は以前よりもはるかに強力なソフトウェア開発者です。だから、そこにぶら下がって、周りの人からできる限り多くを学んでください。良くなります。


+1。また、チーム内の何かをひどく嫌う人であることも非常に好きで、知識を調整することを余儀なくされました。

27
+1University prepared me for computer science, but not really for software development.
ジョージマリアン

1
私が大学を卒業し、プログラミング業界で最初の(ああ、待って、2番目の)仕事を得たときと同じ経験をしたいと思います。
ギャブリン

4
@George:さらに悪いことに、現実世界のソフトウェア開発の多くは「IT」の傘下にあり、通常はいユーザーインターフェイスをデータベーステーブルに平手打ちすることになります。:(ない大学は永遠にあなたを準備することができ、正確なもの。
アダム・ペインター

@adam絶対に。私は時々それの必要性を理解していますが、「十分に良い」アプローチは単に私を夢中にさせます。
ジョージマリアン

23

いいえ。大学を卒業してから最初の6か月間は、プログラミングやソフトウェアエンジニアリングについて、以前よりも多くのことを学びました。しかし、それは大学が時間の無駄であったということではなく、私の心を準備し、基礎となる背景知識を提供しました。

それからまた、今振り返ってみると、私はまだ6か月で何をしていたのか本当に知りませんでした。


4
よく言われたように、私の教授はいつも「産業界と学界の間には大きな格差がある」と言っていました。あなたが現実の世界に出て、実際にそこに気づくまで信じることは難しいです!
クリス

この。これが、インターンシップ、無給、またはあなたが得ることができるものがとても貴重な理由です。地獄、非プログラミングのインターンシップでさえ、どのクラスよりもはるかに貴重な経験を積んでいます。
クズカイ

10

教育は基礎を築く基盤となりますが、実際のソフトウェア開発の準備にはなりません。それには経験が必要です。私が仕事のためにプログラミングを始めたとき、私は間違いなくあなたと同じ状況にいました。学習を続け、本を読んで、ブログの投稿をして、仕事学んだこと応用する限り、あなたは改善するでしょう。重要なことは、学んだことを応用することです。読むだけでは役に立ちません。新しい知識を積極的に適用する必要があります。


学習内容を適用するための+1。その部分について言及するのを忘れました。:)
アダムリア

7

私は自分がそうだと思っていたが、そうではなかった。

私を信じてください、あなたのキャリアのある時点で、あなたは戻ってあなたが書いたコードに取り組みますが、何年も触れず、他のプロの開発者がそのコードを見たり、あなたがそれを書いたことを絶対に望んでいません。それはあなたが成長していることを意味します。


4

ある意味では、プログラミング言語の選択は、自然言語の選択によく似ています。学校でかなりの量の理論を学ぶことができます。文法と語彙の基本的な要素を学び、ネイティブスピーカーとの実際の会話に出会うまではかなり上手だと思うと、完全に失われます。

ネイティブスピーカーとの会話で自分自身を保持できるようになるまで、言語を実際に学習する方法は、毎日1時間ごとに実際に言語を話すことです。これは通常、話されている場所のどこかに住むことを意味します。そして、それは興味深いことが起こるときです。学校で学んだことは、それ自体で、外国の路上では価値がありませんが、実際の言語学習をはるかに容易にする優れた強固な理論的基盤を提供します。(少なくとも私のスペイン語の経験でした。)

プログラミングも同じ方法です。学校で学んだことは、本当のプログラマーとして行う必要のある仕事の準備にはなりませんが、(あなたが人気のためにすべてを馬鹿にしない有能な学校にいると仮定して)実際に良いコーダーになることを学ぶ時が来たら、あなたが必要とする基本的な概念はすでに整っています。(少なくとも、プログラミングの経験でした。):-)


2
良い答えですが、「学校で学んだことは価値がない」とは言いません。しかし、私はあなたが何を目指しているか知っています。
ギャブリン

4

多くの優秀なプログラマーが大学のコンピューターサイエンスの学位を取得していますが、そのほとんどは彼らと同じものです。

コンピュータサイエンスに関することは、人々が上で議論したように、それはプログラミングと同じではないということです。大学で勉強したものの多くは基本的に準備ができていませんでした-それについての講演を聞いていたとき、空っぽの学術的なナンセンスのように見えるものがたくさんありましたが、数年後に私は私は役に立たなかったとして提出したものの多くを再び学んでしまったので、それにもっと注意を払っていました。私は実際に、それがあなたがしたいことであれば、コンピュータサイエンスの学位を始める前に、商業環境で数年のプログラミングを行うことを使用できると思います。

また、多くの場合、大学では必ずしも学習方法を知っているとは限りません。誤って、または他の開発者から学んだことの多くは、私の講師や大学院生が大学で知っていたことは確かですが、それらを理解することが役立つとは思いませんでした。何かをすることを学んでいる間にあなたが抱えている問題について人々に尋ねることは(そしてこれは本当にすべてに当てはまります)、学習プロセスをよりスムーズにし、痛みを軽減します。自分や他の人から学ぶことができるほとんどのこと-私が自分で学んだ多くの教訓は、私の痛みを伴う過ちから学んだことを考えると、できる限り他の人から学ぶことを選ぶでしょう...


2

ブライアンハートの投稿を引用します

コンピューターサイエンスとプログラミングは別のものです

誰がソフトウェアエンジニアを殺したのか というタイトルのジョエル・スポルスキーの学部のプログラミングと素晴らしい記事も参照しています

これらの議論はすべて現実をかなりよく説明しており、私の意見では、大学はあなたを優れたプログラマーにしようとしていないので、あなたの質問に「いいえ」と答えます。自分で自分を優秀なプログラマにする必要があります。

私はCSの学位を取得していませんが、8年前からプロとしてソフトウェアのプログラミングと開発を行ってきました。私が持っているすべてのプログラミングスキル、私は自分自身を学びました。


1

いいえ、プログラマーのふりをして、苦労して学びました。フリーランサーとして最初の顧客を獲得し、C / C ++と非常にひどく戦い、最終的に勝ちました。構造体でmallocを実行しても、構造体のポインタにメモリを割り当てるのに十分ではないことを理解するのに数時間かかったことを覚えています。


あなたの元の学位は何でしたか?あなたの苦労はついに報われましたか?
rwong

私は電子技術者で、Matalbにはかなり優れていましたが、C / C ++とJavaの知識はほとんどありませんでした。信じられないかもしれませんが、私の最初の本当のプログラミングの仕事はWindows CEのドライバーを作成して、このデバイスに移植することでした:eurotech.com/EN/innovation.aspx?pg=wearable。私は会社に少し助けられましたが、基本的には家で一人で働いていました。しかし、私は何も忘れていなかったに違いない!私はまだ学んでいますが、今では現実的に大規模なプログラムを行うスタートアップを所有しています...
martjno

1

大学を卒業したとき、私はかなり良いプログラマーでした。また、卒業する数ヶ月前におしゃれな仕事を提供していました(さらにおしゃれな仕事を断ることができました)。

鍵は、私が趣味家として多くの仕事をし、学年中にWeb開発の仕事をし、IBMで質の高い夏のインターンシップ(「ExtremeBlueスピードチーム」とExtremeBlueプログラム自体)を行ったことです。専門職としての経験豊富なため、卒業後、入門レベルのものを少しスキップできます。

(そうは言っても、Real Job(tm)では最初の6か月ほどでプログラミングがずっと上手くなりました。その後は終わったわけではありませんが、それは本当に多くを見せていたときです。)


1

私は高校から仕事に直接行ったので、あなたに逆の答えを与えることができます。私は独創的なプログラマーとして働き始め、雇用主から与えられたプロジェクトですぐに生産的になりました。新鮮なコンピューターサイエンスの学位を持っている同僚が何人かいましたが、彼らはまったく生産的ではありませんでした。

時間が経つにつれて、卒業した同僚の一部はスキルを大幅に向上させましたが、他の同僚は向上しませんでした。


1

大学は、実際のプログラマーになることを教えていません。私はこれが彼らの学位プログラムと比較して多くの仕事で似ていると推測しています。学位から何も得られなかったとは言いませんが、実際に仕事に4年を費やすよりもはるかに役に立ちませんでした。

しかし、それは大丈夫です。私が始めたすべての仕事は、おそらく不十分な資格でした。自分の能力に自信があり、学習に専念しているなら、ステップアップして仕事をすることができます。


1

プログラミング全般について、少なくとも大学で経験したことのない事実を学んだとは思いません。確かに、あちこちで新しいプログラミング言語を取り上げ、新しいAPI、新しいコードベース、新しいツールを学びましたが、一般的な概念はすべて学校のすぐ外にありました。

経験を積むのは、報告されたバグを絞り込む方法を高速化する、または新しいコードを記述するための最も堅牢な方法に直接つながる、本能のようなものです。初心者の場合でも、同じバグを修正したり、同じ機能を実装したりできますが、時間がかかり、予期しない問題のために戻って修正しなければならない可能性が高くなります。

だからこそ、経験豊富な同僚に指導してもらうことが重要です。彼らに行き、「これは私がこれをどのように扱うべきだと思うかです。あなたはより良い方法を考えることができますか?」と言います。それはあなた自身のためにそれを理解する経験と他の経験から学ぶことの両方の利益をあなたに与えます。


0

私は大学の先生よりも優れたプログラマーでした。

その後、仕事を始めたときに素晴らしいプログラミングの実践を学びました。


0

優れたプログラマーは常に学習しています...これを行うための別の方法またはそれを行うためのより良い方法を学習しています。あなたの仲間のプログラマがあなたに教えなければならないものが何であれ、私は耳を傾けます。


0

誰も言及していないことの1つは、学校で解決するために与えられた問題は、あなたが教えられている特定のテクニックとして使用する方法を簡単に見られるようにするために意図的に馬鹿げていることです。あなたは通常、その特定の問題に使用することになっているテクニックを知っています。なぜなら、それはクラスで扱ったばかりのものだからです。学期全体のプロジェクトは少し賭けですが、実際の世界と比較して範囲と複雑さはまだ限られています。

実生活のプロジェクトは複雑で長年にわたって進化しており(当社のソフトウェアは10年以上も前から継続的に変化しています)、さまざまなスキルレベルの多くのさまざまな人々に触れられています。まだ10年前のデータベースバージョンに触れている可能性があり、新しいSQLテクニックをまったく使用できません。8年前は素晴らしいツールを使用していたかもしれませんが、他の何かに取って代わられたため、学校で学んだことはありません。しかし、同社はそれを完全に置き換えるために何ヶ月もの開発努力を払うことを望んでいません。

あなたは、クライアントが何を支払うか、そして時には(通常は)人工的な締め切りが何であるかによって、開発する時間が厳しく制限されている世界で立ち往生しています。

クライアントが特に要求したツールを使用するように制限される場合があります。あいまいな要件またはほとんど意味のない要件がある場合があります。あなたは何も知らない非常に複雑なビジネスドメインを扱っているかもしれないので、要件が理にかなっているかどうかさえ判断できません。

現実世界の問題は、彼らが学校であなたに与えるきれいな問題に決して匹敵するものではありません。最初の1年のほとんどの間、混乱せず、場違いに感じていないなら、私はあなたを心配します。


0

それよりも悪い...この仕事で数年後、あなたはあなたが学んだことについてかなり気分が良くなるでしょう。しかし、その後、あなたは仕事を変えるでしょう、そしてあなたの新しい会社(あるいは同じ会社内の新しいグループでさえ)は異なった事をするでしょう、そしてあなたは正気に戻ったように感じるでしょう。さまざまなコード、さまざまなコーディング標準、さまざまなツール、さまざまなプロセスが存在し、その2日後には、最後の仕事で本当に何かを学んだかどうか疑問に思うでしょう。今回は、その魚の水切れの感覚をより早く克服しますが、それでもあなたが望むよりも時間がかかります。

ジョブを切り替えるたびに適応期間があります。経験を積むにつれて短くなりますが、常にそこにあります。

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