学校で学ぶべきだったが、当時は注意を払わなかった[クローズ]


42

この質問は、私が尋ねるべきより良い質問があったと思いました。

学校で何を学びましたか?(ソフトウェア関連の仕事を意味します。)

これは、大学生が学校にいる間に本当に注意を払うべきものを特定するのに役立つと思います。


16
話し言葉の学習にもっと時間を費やさなかったことを残念に思います(10〜20年後にクリックしました)が、これはプログラミングに関連するものではありません。
レニープログラマー

回答:


36

私が学校の外で見たほとんどの開発者は、オブジェクト指向開発の経験があまりありませんでした。彼らはそれを聞いたことがありますが、ほとんどのことは「クラスに物を置く」だけです。

学校では、OOフレームワークに配置できる車と人についての例がたくさんあります。これは、ポリモーフィズム、オーバーロードなどを教えます。むしろ「基本的な」もの。これらのこととそれらがどのように機能するかを知っているのは良いことですが、実際の使用例はこれまでありませんでした。学生に何らかのデザインが使用されている実際のシナリオを見せることは重要だと思います。

私が大学で見逃したもう1つのことは、使用可能なデザインパターンの使用(または誤用)です。最近では、最も重要なパターンを1年後期または2年目の初めに導入する必要があると思います。学生はそれらに精通する必要があります。

きれいなコードを書くことは、学校で(十分に)教えられていないことです。コードを実際に混乱させても、A +を取得できます。「アプリケーションが機能する場合、それは良いことです。」モットーでした。生徒は、クリーンで高品質のコードの書き方を学び、それに対して報酬を得る必要があります。これは、学習したパターンまたはベストプラクティスをリファクタリングして使用することも意味します。

もちろん、熱心な学生はこのすべてを独力で学んだが、それほど熱心ではなかった他の人はそうではなかった。これはモチベーションの欠如に置かれる可能性があります、または彼らはどこでどのように見えるかを知らなかっただけです。学校に多額のお金を払うとき、彼らは本当にこの高度なものをあなたに教えるべきだと思います。

また、適切な(プロフェッショナルな)文章は、ほとんどの人にとって不足しているスキルです。現実の世界では非常に重要なので、残念です。最も重要なのは、母国語で自分を明確にすることができることです。メイン言語で明確に書くことができない場合、会社でコミュニケーションを取ることは困難です。

あなたが誰かにこの年齢で書くことを教えることができるかどうか、私は知りません、彼らはすでにこのスキルに精通しているべきです。高校で教えられたものを繰り返すことができます。生徒にコメントや技術文書の書き方を教えるかもしれません。技術的なドキュメントを書くのは難しいと思います。誰もそれを行う方法やデフォルトのフォーマットを知らないようです。


1
この答えはOPに対するものではなく、それを補完するものです。彼らはあなたに、より深く/より深くあなたに何を教えるべきだったのでしょうか
-davka

1
学部教育の目的は、学生に幅広い分野を紹介することです。専門分野は、大学院レベルで行うことです。私は大学を卒業したばかりの候補者が何でも専門家になることを期待しています。最近の大学卒業生には、コンピュータ組織と基本的なアルゴリズム分析の間のギャップにまたがるバランスのとれた一連の基礎があることを期待しています。候補者がすべての検索およびソートアルゴリズムの漸近的境界を記憶しているかどうかは気にしません。実世界のコードの漸近的な境界を確認できる候補者が好きです。
ビットツイダー

3
「教える」の代わりに「学ぶ」が(誤って)使用されている場合、私はたじろぐだけですか?
Dr-jan

1
@ dr-jan:ご指摘いただきありがとうございます。編集済み。
Jan_V

1
私の意見では、深刻なソフトウェア作成を教えることができる唯一の方法は、あなた自身の過去の過ちに直面する複数年のコースを持つことです。
ポールネイサン

120

女の子。私は冗談を言っていると思うかもしれませんが、そうではありません。

気を悪くしないでください。アカデミックなものを学ぶ必要があります。しかし、あなたはあなたの周りの人々から人々について学ぶためにいくらかの時間を費やす必要もあります。

それには、あなたとあなたの友人とはまったく異なる興味と態度を持っているが、あなたはまだ仲良くしたい人の半分が含まれます。


16
これにもっと賛成票を投じたいと思います。
5arx

3
一般的にコンピュータを完全に理解していない人々とより多くの時間を過ごすことは良い物(TM)である
ロブ・アレン

16
これを支持した48人以上の人々は、静かにため息をついた。
ジョージ

それ以外の場合は「ユーザー」として知られています。
ゲイリーウィロビー

61

統計に約42%のエネルギーを投入すべきだったと思います。


10
兄と私は昨年、母親にもっと統計を勉強したかったと言いました。私はクオンツであり、彼は医師です。ああ、私の母は統計の先生です
...-chrisaycock

4
@davka:テスト、特にパフォーマンステストで頻繁に発生します。また、私は最近多くのデータ分析を行っています。
FrustratedWithFormsDesigner

4
@davka-私はデータ駆動型の会社で働いており、開発者が「コードxがコードyよりも優れている理由」、または「はい、あなたが私を許可すれば、このことを改善するために2週間を費やすと、統計分析はx%でスピードアップすることを示しています。統計的手法を適用して実験を設計する方法を知ることが、実際の目標です。
wkl

3
統計を取るべきである可能性が70 +/- 2%あると思います。
ザカリーK

10
60%の時間、それは毎回動作します。
マシュー

51

書くことは私にとって最大のものの一つです。ただし、これは開発者だけに限定されるとは思わない。


スタックオーバーフローとブログは、その上で私を大いに助けてくれました。
Svish

36

関数型プログラミング。当時、それは何の役に立つこともできなかった括弧の群れのように見えました。ラムダ式が広く使用されるようになった今、そのように考えるために脳を再訓練する必要がありました。大学では、LISPとSchemeをできるだけバックミラーに入れたいと思っていました。関数型プログラミングのいくつかの側面がどれほど役立つか考えていたら、もっと注意を払っていただろう。


9
+1。プログラミングの方法を知らない人にとって、関数型プログラミングは命令型プログラミングよりも学習しやすく、関数型プログラミングを知っていれば命令型プログラミングは学習しやすく、関数型プログラミングは学習しにくいと信じています最初に命令型プログラミングを学びました。関数型プログラミングを教えるだけでなくすることは、それが理にかなっているが、ハイテクそれは最初の、そして最も重要なのはそれから、このような大きなF-INGの契約をしないでください!私、SICPがそれをどのように行うかが大好きです。最初の割り当ては、数百ページになるまで表示されず、気付くことすらありません。
ヨルグWミットタグ

1
+1。Schemeは大学で数年間機能的なパラダイムをオフにしました。そのコースを受講する前にCとC ++のバックグラウンドを持っていたからです。シニアの年に、言語コースを受講してSMLを使って本当に楽しんだし、Lispも楽しんだので、もっと注意を払うべきだと感じたものとしてリストしませんでした。おそらく大学全体での経験の産物であり、これらのパラダイムの使用方法を理解するのがはるかに容易になります。また、私は自分自身にScalaを教え、とても楽しんでいます。:D
wkl

1
私は一般的に同意します(学校でより機能的です)が、最初に学んだスタイルに基づいて関数型プログラミングを学ぶのが簡単または難しいことを証明することは不可能です。
ケビン

34

正規表現。大学でそれらを吹き飛ばしたことをはっきりと覚えています。彼らは仕事に不可欠でした。


2
正規表現しかし、最後のケースのシナリオとしてのみを使用する必要があります
billy.bob

はい!当時どれだけ嫌っていたのか考えていたのを覚えています...数年後に再び必要になるまで、クラスのためにそれを学び、心から取り除きました。それから、私はそれを再学習しなければならなかったので、自分自身をののしっていました。
BMWの

4
@ m.edmondson、正規表現は単純なタスクに最適です。コードでそれらを使用している場合、何か間違ったことをしている可能性があります(結局、コンビネータの解析ははるかに優れています)が、テキストエディタでの通常の検索と置換では問題ありません。
SKロジック

3
正規表現は、コマンドラインやvimやemacsなどの強力なエディターで使用するための優れたツールです。コードで使用するためだけではありません。
スティーブンポールガー

1
@ m.edmonson、いいえ-正規表現は最初に選択すべき素晴らしいツールです!それらが適用される状況-いつ適用されないかを知ることは、経験が必要な場所です。

33

私のお気に入りの回答(統計)が使用されるため、2番目のお気に入りの回答を提供します。Big-O表記法と、さまざまな主要アルゴリズムの効率に関する知識。私にとって統計よりも「秘密兵器」ではありませんが、それでも非常に価値があります。


2
たぶん、私は十分に複雑なものを書いていないだけかもしれませんが、Big Oを知る必要があったのは、ハイエンドのハイテク企業でのインタビューでした。だから私は20年前にそれを学びましたが、私は使用していませんが、10年に1回程度は覚えていません。
ビルリーパー

2
@ bill-leeper:私の経験では、Big-Oは毎日使用するものではありませんが、知っていると、自分が知らなかった問題を見つけるのに役立つことがよくあります。そうでなければ、理解できなかったでしょう。あなたがそれを知らないなら、あなたはそれらの洞察を決して持ちません、そして、あなたが何が欠けているかを知りません。
btilly

1
@ bill、big-Oは、スケーリングする必要があるときに別のループにいくつのループを入れるかに注意する必要があることを示す正式な方法です。ほとんどのプログラマーは、正式な名前を知らなくても、何らかの方法でそれを学びます。

23

私が14歳のときに先生が私に言ったことを聞いていたらと思います。


21

有限言語とオートマトン理論のコースでなければなりません。

私の仕事がドメイン固有の言語コンパイラをゼロからやり遂げるまで、それは理論的すぎると思っていました。


4
おっ あなたは正確に何をしますか?=)
fouronnes

1
@otibom:私は半導体を扱っており、独自のドメイン固有の言語があり、かなり厳しいパフォーマンス要件があります。
Fanatic23

18

UNIXと同様にCも言うでしょう。大学を卒業してすぐにUNIXを学びましたが、UNIXとCをもっと早く浸透させることで恩恵を受けたと思います。


UNIX?それはまだ大学で教えられていますか?
apoorv020

1
それは...またはまあ、Linuxに近いはずです。プログラマは少しbash(または他のシェル)を知っている必要があります。
Per Wiklander

17
  • 人工知能/データマイニング-クラスに参加し、退屈していました。数年後、私は集団知能のようなトピックについて自分で学びました。大規模なデータセットの分析は、私の仕事と以前の仕事で大きな問題です。
  • データベース理論/設計-繰り返しますが、授業を受けて退屈したので、私は自分でデータベースに関することを学んでいます
  • 一般的な高レベルの数学と興味深い数学テクニック-4つの微積分クラス、線形代数、統計、確率、離散...を取りましたが、私もやるべきだと感じました:
    • 数値法
    • 高度な統計手法、マルコフ連鎖のようなもの-大規模なデータセット分析に関連するもの
  • 人間とコンピューターの相互作用-学校では、これが自分の仕事で行うことに役立つとは感じていませんでした(低レベルまたは舞台裏で働くことが好きでした)が、私が持っている仕事では、使いやすさが時々注目されてきました。
  • 第二言語-私は常に言語への贈り物を持っていましたが、大学では言語を取らず、自分で日本語を教えようとするのは難しいと感じています。

13

テクニカルライティング。私は多くの時間を費やして要件を書き、顧客や同僚とコミュニケーションを取ります。これは、私が大学で1単位の授業を受けたエリアです。私のキャリアで本当に役立った他の唯一のクラスは、別の1クレジット時間クラスでした。それはCプログラミングでした。残りは興味深く、おそらく全体的な分析スキルの助けになりましたが、私のキャリアにとって直接的な利益にはなりませんでした。

確かに私は20年前に学校に行き、Cは電気工学部門の最先端と考えられていました。CSの人々はLispとC ++で何かをしていましたが、おそらく今日の卒業生で起こっていると思うほどオブジェクト指向ではありません。


11

設計文書

私はいつも、他の誰かがこれらのものを作成する人、または単なるドキュメントであると想定していました。それらはまったく単純ではなく、私のチームは十分に小さいので、自分で設計ドキュメントを作成します。


私はそれが得意でない場合、他の誰かがそれらを書いているでしょう、それは私がそれを好きな方法です。
ケビン

10

第二外国語。私の場合はロシア語です。私の周囲の空間には、この特定の言語の本やリソースなどがたくさんあります。


@FrustratedWithFormsDesignerはい、しかし私は子供の頃... :)
lfx

私はフランス語とドイツ語を個人的に学び、実際にドイツでしばらく過ごしました。それは誰もが経験すべきものです。
ケン

12
本当に?ロシア語のプログラミング関連リソース?私はロシア語を母国語としていますが、プログラミングに関するものを検索するときにほとんどそれを利用しません。ほとんどの場合、英語のクエリをGoogleに入力すると答えが返ってきます。また、ロシア語の技術書は、しばしば英語からの非常に悪い翻訳です。
ディマ

@Dima、現在どのような状況かはわかりませんが、私がコラージュと学校にいたとき、すべての先生がそう言っていました。
lfx

3
@FrustratedWithFormsDesigner:私は信じます。ロシア語には確かに数学関連の資料がたくさんあります。しかし、コンピューター関連の話題について話しているのであれば、英語を知ったほうがいいでしょう。
ディマ

8

物事のCS側から:

  • ユーザーインターフェイスの設計
  • テスト中
  • バージョン管理
  • 並行性

すべてのカテゴリから:

  • テクニカルライティング
  • 音声コミュニケーション
  • 時間推定スキル

テストとバージョン管理のために+1。まじめな話、私たちはテストが本当に学んだことはありません...非常に重要だったことを多くのことを聞いてどのようにかかわらず、...(とそれは私たちのせいではなかった私たちは本当にそれについて何もありませんでした。)
Svish

7

ベクトルの数学と計算。私はそれらを持っていましたが、私の教授はひどくて、実際に主題を教えませんでした。しかし、グラフィックプログラミングに非常に精通している人として...より良いベクトル数学の基礎があれば助かります。


7

明らかに、歴史と文学。問題はしばしば、学校がそれらを面白くしないことです。


ホームスクーラーとしてそれらを学ぶとき、彼らははるかに興味深いことができます。
マシューロダトゥス

6

エレクトロニクス

学校ではソフトウェア関連のものはあまりありませんでした。ああ-情報学ですが、キャンセルしました。:)しかし、後で学ぶのは簡単でした。エレクトロニクスに対して、私はしばしばそれを取得しません。マイクロコントローラー、PWM、GPIO-wtf?理解してほしい。


「純粋な」ITの選択がなかったので、私は高校(に相当するEU)で電子機器を取りました。コンピューターとその周辺機器の使い方だけでなく、それらがどのように機能するかを私が知っていることを今日でも嬉しく思います。
ビンセントヴァンカルバーグ

5

分散ネットワーキング/コンピューティング。プログラミングは難しいことではありませんが、現在のアーキテクチャの前提条件は、分散コンセプトの深い知識です。

詳細なコースは選択科目として提供されましたが、これとAIのどちらかを選択する必要がありました。したがって、それは本当に後悔ではありません。


5

デザインパターン:それらが提示された方法は、実際にそれ以来、私はそれらの本のカップルを読んで、彼らは非常に便利だと思いましたが、彼らはどのように便利を教えてくれませんでした。


これは、プログラミングトレーニングに関する一般的なバグであり、その理由を説明することはできますが、理由は説明できません。良い実例もありません。だからこそ、この問題に対してweardテクニックを使用している人がいます。彼らは、この特定の問題に対してこの他のテクニックが優れていることを伝える知識なしに機能する最初の問題を見つけます。
HLGEM

4

Unix、Shellscripting、C。学校で習得する機会がありましたが、後で仕事でそれをしなければなりませんでした。


4

コンピューターサイエンス以外のもの:
個人的に、私はこの辺りのほとんどの普通の人々のような母国語があればいいのにと思います。つまり、ほとんどの人が生まれたのは1つの主要言語を話し、あとで1つまたは2つの言語を選択することです。この状況では、通常、追加の言語は母国語を損ないません。これは、音声、ライティング、リスニングを含む強固な基盤が既にあるためです。私は3つの異なる言語を同時に話し、書き、聞いて育ちました。学校と大学の両方の語学クラスで常に上手く行っていたとしても、1つの言語に完全に堪能であることを望みます。これにより、回答を作成する前に一瞬考える必要があります。一部の人々はそれに気づき、私はあまりにも恥ずかしがり屋であると結論付けています(これはある程度間違っていません)。


4

経済。それは退屈かもしれません(そして少し残酷)が、とにかくそれはこの社会で本当に不可欠な唯一のものです。その後、統計。


4

ソフトウェアの実行においてコンピューターがどのように動作するかについて最も洞察を与えた3つのクラス(この理解により、より最適なプログラミングが可能になりました)は次のとおりです。

アセンブリ言語オペレーティングシステムコンパイラ

これらのクラスは、Web開発者であり、その基礎となる理解を直接利用しない場合でも、これらのいずれか1つに特に焦点を当てたキャリアに進まない限り、これらのクラスはそれほど有用ではないと考えるのはおそらく非常に簡単です効果的にコーディングするのに非常に役立ちます。


3

私は大学で受けたかったのに、受けなかったクラスが約12あります。ほとんどはCSではありません。写真、一般的な化学、より多くの執筆!


3

リベラルアーツを言っている人々の数は面白いです:私は認知科学専攻(哲学/ CompSci /解剖学)でした...英語の重い未成年者でPhilosophy / CompSciに切り替えました(BAを取得できたかもしれませんが、スキップした101を撮影することはありませんでした)。

リベラルアーツのクラスを受講したことで、CSの仲間から得たすべてのがらくたについて話すのに1週間の物語が必要です。ロジックの半ダースのクラスが私の計算にどんな計算よりも多くのことをしたとしても。私の最高のAIコースはすべて哲学コースでした。私の英語のクラスには、とんでもない女の子がいました。いいえ、私はそれらのコースを受講するためのある種の軽率なポーズをとりました。

でも気をつけて。少なくとも、誰かが履歴書を見るたびに教育について説明する必要はありません。


「私の最高のAIコースは哲学コースでした」とはどういう意味ですか?
マークC

@マーク:「認知科学」、私の元大手た、基本的には何もありませんが、 AI、および主に哲学で構成される。哲学には、分析と大陸の2種類があります。すべての愚かなたわごとは大陸です。分析は論理、歯車です。サイエンス、言語学、そのようなたわごと。
悪魔のような子犬

+1:私は哲学を専攻しているため、Philosophy of the Mindというクラスを受講しました。このクラスは、基本的にチューリングマシン専用でした。私の哲学アドバイザーは学部のCS専攻であり、私のCSアドバイザーは実際に哲学の博士号を持っていました。
モーガンハーロッカー

+ 1:「教育を説明する必要はありません」。そして、私は、物事がアメリカ/イギリスで異なっていると思っていました...私はあなたが何を意味するか正確に知っています。
レイヴライン

3

二次方程式と三角法。

従来のエンジニアリング分野のソフトウェアを書く上で非常に重要です。


計算しません....優れたプログラマーの大半はエンジニアであるため、数学、物理学、およびコンピューティングを理解しているエンジニアが大量にいる場合、基本的な算術スキルが不足していると感じる人がエンジニアリング分野のソフトウェアを書くのはなぜですか? ?
ベンフォークト

@ベン。信じられないかもしれませんが、多くの人がなんとかソフトウェア開発に参加し、正式なトレーニングを受けていません。これはおそらく「あなたの時間」の前です。私は1つでした。.なんとかそれを学ぶことができましたが、学校で注意を払っていればもっと楽になったでしょう。
angryITguy

明らかでない場合は、ソフトウェア開発の訓練を受けていないエンジニアがエンジニアリングソフトウェアを作成することを推奨します。論理的に考えるように訓練されていれば、ソフトウェアエンジニアリングを習得するのは難しくありません。二次方程式などの基本的な数学スキルが不足している場合、エンジニアリングの問題を自動的に解決するOTOH学習はほとんど不可能になります。
ベンフォークト

@ben。「基本的な数学」スキルが不足している人は、ソーシャルメディアコンサルタントと呼ばれ、エンジニアよりもかなり多くの人を作ります。
angryITguy

@guilio:私は敬意を持って同意しません。最上部には数人のエンジニアが非常に多くのお金を稼いでいます(通常は「発明者」と呼びますが、製品の設計にはエンジニアリングスキルを使用しました)。次に、最も人気のあるメディアコンサルタントの小さなグループがあります。その後、他の有能なエンジニア、その下の無能なエンジニアとランクアンドファイルメディアコンサルタントが混ざり合っています。そして、すべての人は、次のエンジニアに二次方程式を教える数学の学位を持っているあなたの平均的な大学卒業者以上のものを作ります。
ベンフォークト

1

必要なコンパイラーにはあまり注意を払いませんでした。


1

CS / Math:より多くの論理、代数、カテゴリー理論。より基本的であまり適用されないもの:基本を十分に理解しているときに適用されたものを理解することは、逆に簡単になり、より実り多いものになります。

(統計にAがありましたが、実際のプログラミングニーズにリンクするのに時間がかかりました、私は多くを忘れました。)

「人文科学」:自然言語、執筆、定式化、理解、理解されている。2-3人以上の仲間のハッカーのチームに参加するまで、つまりいわゆる「実生活」で重要になるとは思われません。


1

コンピューターグラフィックス(opengl / directxでの3Dレンダリング)

私は正直それにとても興味がありましたが、とても忙しかったので、好きな時間を入れることができませんでした。趣味ではなく雑用になりました。興味を持ってもらうためには、その本を取り上げる必要があると思います。

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