大学を卒業するすべてのプログラマーが持つべきスキルは何ですか?[閉まっている]


9

私達は私達の学校でゲスト講師を雇い、彼が卒業すること、そして彼が期待するスキルレベルに達していないことに関して彼が接しました。Java、C ++、C#などの大規模なコンパイル言語、Python、Rubyなどの1つのスクリプト言語、1つのウェブフレームワークに関する知識。卒業生にとって絶対に不可欠だとあなたが思う他のスキルは何ですか?


大学卒業ということですか?
Michael Shaw

1
@プトレマイオス:アメリカではカレッジという言葉は正しいです。
Macneil、2011年

1
お尻に自分を蹴り、テキストメッセージを学ばない意志、若いパンク!socializedpr.com/...
仕事

回答:


27

断然、熱心に学びたいと思います。カレッジは、プログラマーになるために必要なスキルを習得することを意図していません。これらのスキルを習得するために必要なスキルを教えることを目的としています。


それをもっとよく言うことができなかったでしょう。
Chris、

4

新卒者は、単に学びたいという欲求以上のものが必要であり、学習へのこだわり、学習方法の理解、そしてソフトウェアの現実のしっかりとした根拠が必要です。私は一般的にあなたがどんな言語を知っているかは気にしませんが、すべてのジュニアは次のことをしなければなりません:

  1. 歴史を理解する。コンピュータサイエンスはよく研究された分野であり、多くの問題が解決されています。この事実を知ることは、あなたの前にあるものから学ぶ扉を開きます。知識を採掘するための豊かな歴史があることを知っていても、多くの卒業生が苦労しています。これには、big-O表記法、アルゴリズムの歴史、預言者の原則(Knuth、K&R、Hofstdaterなど)、および一般的に受け入れられている慣行やパターンなどが含まれます。

  2. それが解決できることを知っています。開発者が問題に困惑しているときはいつも驚きます。学ぶことを学ぶことの一部は、問題が常に簡単に解けるという単純な原則です。これがわかると、正解を見つけるための思考の枠組みになります。

  3. 分解を理解する。問題を解決できるだけでなく、その方法は、分割して征服するのと同じくらい簡単です。問題をより単純なコンポーネントにまで減らすと、あなたの答えが常に現れます。

  4. 測定する方法を知っています。新しい開発者は、問題を分解できることに加えて、これらの問題に関する事実を収集する方法を知る必要があります。どのぐらいの間?なんて大きい?どのくらい速いのか?幾つ?単純な事実は、理解と客観的思考へのステップです。事実なしで仮定を行うことは、問題の領域で迷子になる簡単な方法です。

  5. 客観的です。すべての問題を簡単に分解、測定、理解できます。理解できない問題は、単に追加の分解、測定、理解が必要なだけです。怒ったり欲求不満になったりしても、理論について議論したり非難したりすることには意味がありません。問題を解決するプロセスに関連する不合理な行動や信念は毒であり、解決策を見つけるのが非常に困難になります。

  6. パターンと原則を優先します。物事、言語、プログラミングモデル、コンピュータアーキテクチャ、さらにはエンジニアリング手法を実行するための数十の正しい方法に出会います。正しい方法は1つではありませんが、繰り返し適用できる強固な基本概念があります。これらのパターンは、学習と思考のすべてのステップをガイドするので、これらのパターンを確認してください。



0

雇用者として、私はプログラマとして以下の人のみを雇用します。

  1. コードをシングルステップで実行した経験がある。
  2. 単純な特定の問題を解決するために適切なデザインパターンを選択できます。
  3. 選択したデザインパターンを反映するコードを実装できます。

私の経験では、プログラミングの仕事に応募するコンピューターサイエンスの卒業生の5%未満が、基本的なレベルでこれらのスキルを実際に持っています。これらは商業的に役立つために必要な最低限のスキルであり、重要なことに、誰もがこれらのスキルを習得できるわけではありません。

その他の便利な機能は次のとおりです。

  • チームプロジェクトに携わった経験
  • ソース管理の使用
  • ユニットテストの経験

これらは、既存の開発チームとの統合を容易にしますが、通常は仕事で教えることができるテーマです。


0

私はかつて私が大部分が新卒のスタッフで「継承」したチームがあり、そこで研究の「隣に」(追加のお金を稼ぐために)実際のプログラミングをした人が最も有能なチームメンバーであるという経験がありました。したがって、経験が鍵となり、それどの言語でもほとんど問題になりません

ただし、採用担当者が探しているもの(jobserver.comなどの一般的な採用担当サイトすべて)を見ると、C ++、C#、Javaが求められていることはたくさんありますが、他にも探しているものがあり、また、COBOLのような「エキゾチック」なものがまだあります。


0
  1. 対人関係とコミュニケーション能力
  2. 実用的なアプローチ(その学術理論ではない)
  3. 技術的に傾いていないクライアントとして考える能力
  4. コスト/メリットの観点から、何が重要で何が無視できるかを評価する能力
  5. チームで働く能力
  6. 戦略的に考える能力:アーキテクチャ、拡張性、スケーラビリティ
  7. 大学の教えが現実の世界とはほとんど関係がないことを受け入れるオープン性(大学によって異なります-これについては多少ましです)。

この職業の学習プロセスは決して終わりません。自分自身を絶えず学び、上達させなければなりません。さもなければ、彼はゲームから「素早く」飛び出します。


これらはすべて便利です。ただし、ほとんどの大卒者がそれらを持っているわけではなく、ほとんどが職場で簡単に取得できるため、それらは重要ではありません。別の質問に答えていたと思います。
dbkk

@dbkk-失礼しましたが、問題は「プログラマを卒業するためのスキル」ではなく、「...が持つべきもの」でした。また、いいえ、それらは簡単に取得されません。正反対です。多くの場合、長年の経験を持つ人々は、まだほとんどの人を失っています。
2010年

1
これらは一般的なスキルであり、多くは学校での学習にはあまり適していません。
David Thornley、2010年

-1

他の答えも良いですが、大学で見落とされている#1のスキルは、実際のソフトウェアエンジニアリングのように思え ます。

OOPとJavaのような言語を教えるための基本的なクラスは素晴らしいですが、3年目と4年目には、生徒(少なくとも私の地元の大学)が、優れたアーキテクチャを特定して作成する方法を学ぶ代わりにコンパイラとオペレーティングシステムを書いているのはなぜですか。要件を分析し、そこから技術仕様のリストを作成します。おそらく最も重要なこととして、動作する良いコードと動作する悪いコードの違いは何ですか。

それは、私たちの大学がソフトウェアエンジニアではなくコーダーを解雇することをほぼ望んでいるようなものです。エンジニアリングのスキルや才能を発揮しなかった人は絶対に採用しません。


4
なぜなら、人々が教えられるのはソフトウェア工学ではなく、コンピュータサイエンスだからです。この問題は、大学と学生がコンピュータサイエンス!=ソフトウェアエンジニアリング、コンピュータサイエンスは科学であり、コンピュータサイエンスはプログラミングではなく、ソフトウェアエンジニアリングがプログラミング以上のものであることに気付いた場合には解消されます。
Thomas Owens

-1。内部でどのように機能するか(コンパイラ、OS、アセンブリ言語など)を学ぶことは、実際にこのレベルで作業したことがない場合でも重要です。
dsimcha

@dsimcha、あなたが信じているなら、あなたは現在、現実の世界で企業が採用しているソフトウェアエンジニアの種類について非常に狭い見解を持っています。これらのことによって何の価値ももたらされないわけではありません。それは、より本質的なものを教えないことの機会費用です。
ニコル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.