並べ替え
青山 卓さんのプロフィール写真

社会に出てすぐ役立つスキルを教える大学は「職業訓練校」です(暴言)


大学の情報工学科の役目を図で表してみましょう。

まず、横軸は分野・ジャンルを表します。世界全体はもっと広いものですが、画面の横幅には制限があるのでご勘弁を。

縦軸は一般から専門までの、専門性の高さを表します。

一番下の層は「常識」です。だれもが持つべき知識や能力です。この常識をなるべく埋めようと、長い年月をかけて義務教育が行われます。

下から二番目の層は「スキル」です。社会で付加価値を生む専門性です。例えば、IT・財務・外国語・プレゼンテーション・交渉術・チームマネジメント・・・等々。全てを持つことはできませんが、高いスキルや、複数のスキルの組み合わせで、社会の中で価値ある人材となります。

その次の層は「学問」です。社会で役に立つかどうかは分かりません。しかし最上層にある未知を開拓するために、より分野を狭めて専門性を高める人たちがいます。

最上層は「未知」です。世界中で未知を切り開いて明らかにしようと、いろいろな分野・ジャンルで学問が行われています。未知は少しずつ明らかになりますが、それでもなお無限に広がります。


大学の情報工学科はスキルと学問をまたぐ位置にあります。コンピューターの使い方を学ぶこともありますが、それよりも群論・フーリエ変換・オートマトンなど、より根本的な知識体系に重きがあります。

例えば、ケータイで当たり前のように

社会に出てすぐ役立つスキルを教える大学は「職業訓練校」です(暴言)


大学の情報工学科の役目を図で表してみましょう。

まず、横軸は分野・ジャンルを表します。世界全体はもっと広いものですが、画面の横幅には制限があるのでご勘弁を。

縦軸は一般から専門までの、専門性の高さを表します。

一番下の層は「常識」です。だれもが持つべき知識や能力です。この常識をなるべく埋めようと、長い年月をかけて義務教育が行われます。

下から二番目の層は「スキル」です。社会で付加価値を生む専門性です。例えば、IT・財務・外国語・プレゼンテーション・交渉術・チームマネジメント・・・等々。全てを持つことはできませんが、高いスキルや、複数のスキルの組み合わせで、社会の中で価値ある人材となります。

その次の層は「学問」です。社会で役に立つかどうかは分かりません。しかし最上層にある未知を開拓するために、より分野を狭めて専門性を高める人たちがいます。

最上層は「未知」です。世界中で未知を切り開いて明らかにしようと、いろいろな分野・ジャンルで学問が行われています。未知は少しずつ明らかになりますが、それでもなお無限に広がります。


大学の情報工学科はスキルと学問をまたぐ位置にあります。コンピューターの使い方を学ぶこともありますが、それよりも群論・フーリエ変換・オートマトンなど、より根本的な知識体系に重きがあります。

例えば、ケータイで当たり前のように通信できるのは群論のおかげです。体を切ることなくCT画像で体の断面を見ることができるのはフーリエ変換のおかげです。ブラウザがHTMLを解釈できるのはオートマトンのおかげです。表面に見える技術ではなくて、それを支える理論を学ぶのが情報工学科です。

一方、gitはスキルに属します。情報関連ということで横軸方向には近いですが、情報工学科がスキルと学問をまたぐ位置にあるのに対して、gitはスキルに属します。

人によっては、大学で git を学ぶこともあるかもしれませんが、必須ではありません。


なぜ、gitを学ばなくていいのか?

情報工学科できちんと学問を身に付ければ、下方向にあるスキル関しては「勉強すればすぐ使える」からです。

「知らなければ調べて理解すればいい」というスタンスです。

また、上方向に関して、道を切り開く能力を育てることも大学に求められています。スキルばかり勉強していては、未知など到底切り開くことはできません。学問を学んでこそ、ようやく未知を切り開く可能性がわずかに見えてくるのです。

社会に出てすぐ役立つスキルを教える大学は「職業訓練校」だ、という冒頭の暴言の趣旨が分かっていただけましたでしょうか。


質問に回答します。

大学の情報工学科を出ている人に求められているのは「gitくらい、調べればすぐ分かる」基礎能力の高さです。そしてgit以外についても「○○くらい、調べればすぐ分かる」という汎用性・柔軟性が求められています。

入社時点でgit等の特定スキルを持つことは、さほど重要ではありません。

Yuki Sonodaさんのプロフィール写真

Gitとは、アドホックに作られた最悪のコマンド体系と、Linuxカーネル開発の経験に基づいて設計され多くの適用例に裏付けられた版管理に対する優れた洞察と、マークル木をベースとした洗練されたデータ設計の組み合わせです。その鍵となる概念こそは、情報工学や計算機科学を専門とする学科が初期段階でしっかりと教えているものではありませんか。

Gitの習得に躓く人や、何か少し複雑な操作をしたりエラーを解決しようとしたりした際に手に負えなくなる例は世に珍しくはありません。そしてこうした問題を体系的理解によらず解決しようとするなら雑多な経験知が要求されるので、なるほどそのような経験は実務以前に積んでほしいと思うのかもしれません。

しかしGitでのこうした問題は、目の前にある症状や自分の意図をその背景にあるグラフの操作モデルに正しく落とし込めていないことにだいたい起因します。少しマニュアルを読んだ上で自分がどのようにオブジェクトグラフを制御したいのか考えれば、Gitの操作法はおおよそ自明です。

マニュアルを読んで基本的操作を覚えるには1日もかかりません。理論的基礎が分かっている人ならば、「これはマークル木」「DAG」「オブジェクトストレージ」というだけの説明で背後のモデルを理解するのに1時間掛かりません。しかし、その理論的基礎をしっかり理解するにはより多くの時間を要し、それこそがそれらの学科が初期にやってい

Gitとは、アドホックに作られた最悪のコマンド体系と、Linuxカーネル開発の経験に基づいて設計され多くの適用例に裏付けられた版管理に対する優れた洞察と、マークル木をベースとした洗練されたデータ設計の組み合わせです。その鍵となる概念こそは、情報工学や計算機科学を専門とする学科が初期段階でしっかりと教えているものではありませんか。

Gitの習得に躓く人や、何か少し複雑な操作をしたりエラーを解決しようとしたりした際に手に負えなくなる例は世に珍しくはありません。そしてこうした問題を体系的理解によらず解決しようとするなら雑多な経験知が要求されるので、なるほどそのような経験は実務以前に積んでほしいと思うのかもしれません。

しかしGitでのこうした問題は、目の前にある症状や自分の意図をその背景にあるグラフの操作モデルに正しく落とし込めていないことにだいたい起因します。少しマニュアルを読んだ上で自分がどのようにオブジェクトグラフを制御したいのか考えれば、Gitの操作法はおおよそ自明です。

マニュアルを読んで基本的操作を覚えるには1日もかかりません。理論的基礎が分かっている人ならば、「これはマークル木」「DAG」「オブジェクトストレージ」というだけの説明で背後のモデルを理解するのに1時間掛かりません。しかし、その理論的基礎をしっかり理解するにはより多くの時間を要し、それこそがそれらの学科が初期にやっていることのはずです。

欲を言えば版管理の重要性を体感したりいくつかのワークフローを実践したりしていてほしいですが、これは実務でないと限界もありますしOJTでも十分でしょう。

ですから、現代的な開発プロセスにおけるGitの重要性は否定しませんが、一般に情報工学科はまさにそれに対してやるべきことをやっていると理解しています。

Quora Userさんのプロフィール写真

Webの記事とか見ているとGitばかりが目につくのでそう思うのかもしれません。しかし、別に世の中の全ての企業がGitを使いこなしているわけでもありませんよ。例えば、自分のいた会社も(部署にもよるでしょうが)Gitを使ったことない同僚は多いかと。それはレベルが低いだけだろ!と言われればごもっともとは思いますが、世の中そんなものです。

また、個人的には大学は教えてもらうところではなくて自分で学ぶところだと思ってます。
バージョン管理ツールというものがどういうものかをアカデミックに学ぶため、その手段としてGitを実際に使うというならよいと思います。しかし、そこをすっ飛ばしてGitという個別のツールの使い方を学ぶのは大学のやることなのかな?と感じます。
例えば過去の経緯からSVNを使っているところもまだまだあるかもしれません。あるいは、Windows系ならVSSとか(さすがに少数派?)。それらも全て大学で教えますか?
会社ではインシデント管理システムとか入れているところも多いですが、それらも全部大学で教えますか?なんならERPとかパッケージもやらないといけないかもしれませんね。
今の情報工学部でプログラミング言語として何をやっているのかわかりませんが、今時の主流で言えばPython、Java、C++、C#など全て大学で教えますか?GoとSwiftとRustもやったほうがいいですか?

そういう個

Webの記事とか見ているとGitばかりが目につくのでそう思うのかもしれません。しかし、別に世の中の全ての企業がGitを使いこなしているわけでもありませんよ。例えば、自分のいた会社も(部署にもよるでしょうが)Gitを使ったことない同僚は多いかと。それはレベルが低いだけだろ!と言われればごもっともとは思いますが、世の中そんなものです。

また、個人的には大学は教えてもらうところではなくて自分で学ぶところだと思ってます。
バージョン管理ツールというものがどういうものかをアカデミックに学ぶため、その手段としてGitを実際に使うというならよいと思います。しかし、そこをすっ飛ばしてGitという個別のツールの使い方を学ぶのは大学のやることなのかな?と感じます。
例えば過去の経緯からSVNを使っているところもまだまだあるかもしれません。あるいは、Windows系ならVSSとか(さすがに少数派?)。それらも全て大学で教えますか?
会社ではインシデント管理システムとか入れているところも多いですが、それらも全部大学で教えますか?なんならERPとかパッケージもやらないといけないかもしれませんね。
今の情報工学部でプログラミング言語として何をやっているのかわかりませんが、今時の主流で言えばPython、Java、C++、C#など全て大学で教えますか?GoとSwiftとRustもやったほうがいいですか?

そういう個別対応じゃなくて、もっと俯瞰的、大局的に基礎をちゃんと時間をかけて学んで欲しいと自分は思います。そういう考えはもう古いのかもしれません。大学をもっと職業訓練校化すべきという意見も多いようですから。

後半の質問ついては、他回答にもありますがそんなこと期待する人は多くないでしょう。もちろん、余裕のない現場では猫の手も借りたいので、そういう人が来てくれれば短期的には喜ばしいことでしょう。だからと言って、大学で実用的な技術をもっと教えろ、とは思いません。そういう主張の方々も多いようですが。

入社前とかに事前に必要な技術とかを質問して自習してきてくれる新入社員がいたら、それはまた嬉しいでしょう。でも、それがマストだと思ってる人はそんなにいないと思います。そりゃ、欲しいかと言われれば欲しいと言いますけどね。新入社員にそこまで期待している会社があるなら、そこは相当ブラックなところではないかと。

本当に欲しいのは即戦力として知識や技術を詰め込まれた人じゃなくて、ちゃんと基礎を押さえて応用、実践できる人、と個人的には思います。

Jun Mukaiさんのプロフィール写真

そうですね、バージョン管理という考え方とそのシステム、分散バージョン管理というもの、といったあたりは教えてほしい気がします。私が学部生だったころ、バージョン管理システムなんてものは全く教わった記憶がありません。なんかの科目の教科書の片隅のコラムで目にしただけだったような。

gitというツールの使い方は知っている必要はないと思います。gitそのものは複雑ですが、そこまで精通している必要はなく、基本的な使い方や考え方を教えれば「実務」というレベルで使えるようになるまでにはそれほどの時間はかからないでしょう。でもバージョン管理というものを知らないというのは困るかなぁと思うので。

学部生といっても研究室に所属すればそこで何らかのバージョン管理システムに触れる気はしますし、卒論を書く上で必要性を理解することはあるかもしれません。とはいえ教科として理論的な側面は科目として教えてもいいかなとは思いますね。DAGを扱う系の話としてもそれなりに興味深い話もあると思いますし。

Shiro Kawaiさんのプロフィール写真

SCCS → RCS → CVS → subversion (+ VSS, Perforce) → git と使ってきましたが、確かにgitの手前のギャップは他の移行よりも大きかったです。その理由は、背後にあるモデルが大きく変わったからです。

subversionまでは「履歴管理」ですが、gitは「パッチの有向グラフ」なんです。ただ、最初にこれだけ聞いてもわからないんじゃないかと思います。私はわかりませんでした。2000年代初めに分散バージョン管理システムのarchを設計していたTom Lordが「分散バージョン管理システムをちゃんと動かすには履歴管理でなくパッチの依存管理にしないとだめだ」と言ってて、でも私はパッチの管理って履歴管理と同じことじゃないの、と思ってたんですね。

gitを使い始めてしばらくはそれまでのチェックアウト/チェックイン/マージをgitのワークフローに当てはめようとして、なんだかよくわからないなあ、と思ってたんですがある時「ああ、単にパッチの有向グラフがあって、ブランチやタグはグラフのノードについたラベルにすぎないんだ」と気づいたらなぜgitのコマンド体系がああなっているのかすっきりわかりました。そこでやっとTom Lordが言ってた意味もわかったんです。

今はgitがとりわけ難しいとは思わないんですが、「有向グラフの操作だよ」というのを読んだり聞いたりするだけじゃ

SCCS → RCS → CVS → subversion (+ VSS, Perforce) → git と使ってきましたが、確かにgitの手前のギャップは他の移行よりも大きかったです。その理由は、背後にあるモデルが大きく変わったからです。

subversionまでは「履歴管理」ですが、gitは「パッチの有向グラフ」なんです。ただ、最初にこれだけ聞いてもわからないんじゃないかと思います。私はわかりませんでした。2000年代初めに分散バージョン管理システムのarchを設計していたTom Lordが「分散バージョン管理システムをちゃんと動かすには履歴管理でなくパッチの依存管理にしないとだめだ」と言ってて、でも私はパッチの管理って履歴管理と同じことじゃないの、と思ってたんですね。

gitを使い始めてしばらくはそれまでのチェックアウト/チェックイン/マージをgitのワークフローに当てはめようとして、なんだかよくわからないなあ、と思ってたんですがある時「ああ、単にパッチの有向グラフがあって、ブランチやタグはグラフのノードについたラベルにすぎないんだ」と気づいたらなぜgitのコマンド体系がああなっているのかすっきりわかりました。そこでやっとTom Lordが言ってた意味もわかったんです。

今はgitがとりわけ難しいとは思わないんですが、「有向グラフの操作だよ」というのを読んだり聞いたりするだけじゃなく、自分で操作して腑に落ちないと、とても取っつき辛いだろうと思います。敢えて言えば、履歴を記録しているのではなく、履歴を作っているのだ、という発想の転換でしょうか。

千葉 繁生さんのプロフィール写真

Subversionを10年近く利用してからGitに移行し、散々苦労しました。

その理由は、なまじSubversionと似ている用語があるにも関わらず、根本的な考え方が異なるからだと今は考えています。

いえ、私は分散リポジトリの話がしたいのではありません。それはMercurialやBitkeeperなども使っています。私は何度も同僚から、Gitが難しいのは分散リポジトリだからだと聞かされました。

違います。

Gitの最も大きな特徴だと私が感じるのは、その管理対象が伝統的なソースコード管理と異なる点です。

私が親しんできたSubversionは、ソースコードを変更してコミットすると、以前のバージョンからの差分をデータベースに保存します。これは合理的で自然な考えだと思います。巨大なシステムでも、バグ修正や機能変更は多くの場合ソースコードの一部を書き換えるだけで終わるからです。変更していない残りのソースコードまで保存するのは全くの無駄です。

しかしGitでは、全てのソースコードを保存します。私が数千行あるソースコードの中で2〜3行変えただけでも、Gitは全く新しい、元のファイルと2〜3行しか違いのない数千行のファイルを作成して保存します。これはデータ量の観点からは非常にナンセンスな、非合理的な動きに見えます。

これに何の意味があるのでしょうか?

それは、1つのコミット情報さえ有れば全てのソースコードが復

Subversionを10年近く利用してからGitに移行し、散々苦労しました。

その理由は、なまじSubversionと似ている用語があるにも関わらず、根本的な考え方が異なるからだと今は考えています。

いえ、私は分散リポジトリの話がしたいのではありません。それはMercurialやBitkeeperなども使っています。私は何度も同僚から、Gitが難しいのは分散リポジトリだからだと聞かされました。

違います。

Gitの最も大きな特徴だと私が感じるのは、その管理対象が伝統的なソースコード管理と異なる点です。

私が親しんできたSubversionは、ソースコードを変更してコミットすると、以前のバージョンからの差分をデータベースに保存します。これは合理的で自然な考えだと思います。巨大なシステムでも、バグ修正や機能変更は多くの場合ソースコードの一部を書き換えるだけで終わるからです。変更していない残りのソースコードまで保存するのは全くの無駄です。

しかしGitでは、全てのソースコードを保存します。私が数千行あるソースコードの中で2〜3行変えただけでも、Gitは全く新しい、元のファイルと2〜3行しか違いのない数千行のファイルを作成して保存します。これはデータ量の観点からは非常にナンセンスな、非合理的な動きに見えます。

これに何の意味があるのでしょうか?

それは、1つのコミット情報さえ有れば全てのソースコードが復元できると言う点にあると思います。個々のコミット履歴は自分だけで完全なソースコード一式を復元できるので、お互いに独立した、粗な関係を維持しています。

Subversionでは差分を管理し、あるコミット時点での完全なソースコードを得るには最初のコミットから全ての差分を適用するという考えでした。Gitはその逆で、完全なソースコードを管理し、変更差分を得るには直前のコミットと比較して得ています。発想がSubversionやMercurialとは真逆なのです。

全てのコミット履歴が自分だけで完全なソースコードを再現できる、コミット間の連結は単に変更差分を計算するだけ…となると、コミット履歴の操作は随分と自由になります。

私の作業ブランチのベースとなったmasterブランチに、同僚が不具合修正をコミットしたとします。私はrebaseにより、自分の作業開始があたかも同僚のコミットの後から始まったかのように操作することができます。

せっかく自分の修正をコミットしたのに、1ファイルだけコミットが漏れていることもあります。commit --amendで、私は先ほどのコミットに最初からそのファイルが含まれていたかのように操作できます。

関連した修正が連続するよう、コミットの順番を操作することもできます。

Subversionでは、コミット履歴は決して揺るがない不変の厳然たるまさに歴史そのものでした。しかしGitではその歴史を変えることができるようなデータ構造になっており、私も同僚も好きなタイミングで自由に各々の歴史を書き変えることができます。

それが良い場合もあるでしょうが、共通リポジトリの歴史を勝手に書き換えられるとトラブルの元になります。rebaseをすると、コミットメッセージは同じでも40桁のハッシュ値は変わりますよね。それは似てはいるけれども実は改変された新たな歴史であるからです。もしコマンドラインにrebase前のハッシュ値が残っていたら、checkoutしてみて下さい。まるで平行宇宙のように、以前のコミットが取得できるはずです。rebaseは新たな歴史を作るので、不用意に共通リポジトリで行ってしまうと、運の悪い同僚の誰かがそのまま平行宇宙から合流できなくなるかもしれません。

最後に、もう一度Gitのロゴを見てみてください。点が線で繋がれていると思います。これはGitが点=個々のコミット履歴を独立したデータとして扱っており、コミット間の関係は単にその前後関係でしかない、ということを表しているのだと思います。

大藤 健さんのプロフィール写真

あえて一石を投じてみます。

私は機械系の学科で流体力学をやった後、修士でとある総合電気メーカーに入りました。本当はタービンの開発をやるのが志望だったのですが、 私の就職した1980年代は半導体がちょうど日本の主力産業になる時代で、圧倒的に電子工学科の卒業生が足らず、そのため中央研究所内のシステムLSI関係の研究開発をやる研究所に配属されました。なんで俺が、と当時思いました。ところが、そのシステムLSI関係の研究所に背足された同期は、私以外には、数学、原子力、強電、化学などで、その中で本来の電子工学科の卒業生は東北大の修士のやつ一人だけでした。やれやれこれは困ったぞ、ということでそいつにリーダーをやらせ、先輩から言われたLSI設計やそのほかの基本的な電子回路の輪講を終業後毎日やっていました。多分当時の日本中の電気会社は同じような状況だったのだと思います。今考えると無茶苦茶です。でもそのうちみんな格好がついてきて、数学専攻だった奴らはLSI CADの研究開発に、その他の我々は映像、通信などそれぞれの分野での専門家に段々なっていきました。当時の半導体の研究所は、まさに今のダイバーシティ的な梁山泊的な雰囲気のところでした。その後日本の半導体はご存知のように一度世界を席巻していきますが(その後没落しますが)、とにかく一度天下をとったその時の馬力は、当時まるで違う背景の人間が集まっていたからこそ

あえて一石を投じてみます。

私は機械系の学科で流体力学をやった後、修士でとある総合電気メーカーに入りました。本当はタービンの開発をやるのが志望だったのですが、 私の就職した1980年代は半導体がちょうど日本の主力産業になる時代で、圧倒的に電子工学科の卒業生が足らず、そのため中央研究所内のシステムLSI関係の研究開発をやる研究所に配属されました。なんで俺が、と当時思いました。ところが、そのシステムLSI関係の研究所に背足された同期は、私以外には、数学、原子力、強電、化学などで、その中で本来の電子工学科の卒業生は東北大の修士のやつ一人だけでした。やれやれこれは困ったぞ、ということでそいつにリーダーをやらせ、先輩から言われたLSI設計やそのほかの基本的な電子回路の輪講を終業後毎日やっていました。多分当時の日本中の電気会社は同じような状況だったのだと思います。今考えると無茶苦茶です。でもそのうちみんな格好がついてきて、数学専攻だった奴らはLSI CADの研究開発に、その他の我々は映像、通信などそれぞれの分野での専門家に段々なっていきました。当時の半導体の研究所は、まさに今のダイバーシティ的な梁山泊的な雰囲気のところでした。その後日本の半導体はご存知のように一度世界を席巻していきますが(その後没落しますが)、とにかく一度天下をとったその時の馬力は、当時まるで違う背景の人間が集まっていたからこそだからという解釈もできるような気もします。

翻って、現在のIT業界の人手不足と情報工学科の関係を見るとき、同じ情報工学を学んだ学生が多量に産業界にいることが果たして将来の日本のIT産業の隆盛につながるか、という点に一考の価値があると思います。材料、機械、化学、電気、などの他分野の工学部の卒業生が、情報工学を再勉強しながら産業を引っ張っていくという方にレジリエンスがあるのでは、とも思います。

田崎 亮さんのプロフィール写真

Git誕生10周年を記念した開発者のリーナス・トーバルズ氏のインタビュー

(あちこちで言われている事ですが)リーナスの知識ベースが凡人と乖離している事が一因ではないかと思います。足りないものは自分で足せば良いと思っていた以上に、使う側と前提知識を共有していなかったと。

ユーザーがGitを通じてやりたい事とGitが実現している事が違うのが見えづらい上、CUIベースで概念をすぐに理解出来る人があまりいないのが要因ではないでしょうか。

また、GitHub等のホスティングサービスの機能とGitの機能の違いを理解しないまま、手順としてなぞってしまう為に、混乱してしまうのではないでしょうか。

そしてGit本体のインストール方法が、Windowsベースだと、Git for Windowsが一般的だと思うのですが、そのままだと使いづらい面が多く、SVN慣れした人ならTortoisegitと併用する事を勧めるのですが、結構あるパターンとして、GUI以外使わないようになってしまい、かえってGitの仕組みを知らなくなってしまう。Tortoisegitの吐いたコマンドを見ると、純粋にGitコマンド叩くのと違うオプションだったりして、理解するには、結局コマンドを覚えるほうが楽だと気づくのに時間がかかると。ホスティングサービスのツールだと、複雑すぎて、面食らうんじゃないでしょうか。(少なくとも私はそう思いました)

これ

Git誕生10周年を記念した開発者のリーナス・トーバルズ氏のインタビュー

(あちこちで言われている事ですが)リーナスの知識ベースが凡人と乖離している事が一因ではないかと思います。足りないものは自分で足せば良いと思っていた以上に、使う側と前提知識を共有していなかったと。

ユーザーがGitを通じてやりたい事とGitが実現している事が違うのが見えづらい上、CUIベースで概念をすぐに理解出来る人があまりいないのが要因ではないでしょうか。

また、GitHub等のホスティングサービスの機能とGitの機能の違いを理解しないまま、手順としてなぞってしまう為に、混乱してしまうのではないでしょうか。

そしてGit本体のインストール方法が、Windowsベースだと、Git for Windowsが一般的だと思うのですが、そのままだと使いづらい面が多く、SVN慣れした人ならTortoisegitと併用する事を勧めるのですが、結構あるパターンとして、GUI以外使わないようになってしまい、かえってGitの仕組みを知らなくなってしまう。Tortoisegitの吐いたコマンドを見ると、純粋にGitコマンド叩くのと違うオプションだったりして、理解するには、結局コマンドを覚えるほうが楽だと気づくのに時間がかかると。ホスティングサービスのツールだと、複雑すぎて、面食らうんじゃないでしょうか。(少なくとも私はそう思いました)

これも良く言われる事ですが通過儀礼がキツいので、SVNからの翻訳は最初だけにして、なるべく早くGitという文化を理解する事をお勧めするのですが、現世利益的に?実務を優先する為、SVN同様、「ソース」を「格納」する「手順」になってしまう為、なんでこんなにまどろっこしいの?となってしまうのかなと思います。

この辺りは語学に近いですね。SVNでいうところのブランチはGitのブランチには翻訳不能だって事になかなか気づかないと言うか。

まぁ慣れればどうってこともないです。


Gitを理解するにはローカルから始めるのが一番だと私は思っています。リーナスがGitを作った時のように。日々の作業をなるべくGitコマンドを駆使してやってみる。作る、コミットする、作りかける、スタッシュする、チェックアウトする、diffとってチェリーピックする。スタッシュ戻す、続きやる、コミットする、タグ付けするなどは、リモートを使わないという感覚を覚える。

それから次に、pull(fetch +merge)と、fetch —rebaseの違いを理解する。対応するのはpushだけで良いとか。

ステージング(git add )については、実際のところIDEのgitプラグインやtortoise gitなんかでも、チェックボックスだけだったりするので、後から覚えても良い気がしています。

forkとプルリクエストはホスティングサービスの機能なので、コードレビューの文化として、またOSS活動の知識として理解することが肝心だと思います。

出水田 昌昭さんのプロフィール写真

大学まで行って教えてもらわないとできないと言ってるのは草が生えるよ。

まあそもそも Git じゃないかもしれんし。

デファクトスタンダードであるとは言えど、単なる一例でしかない Git の使い方を教えても意味ないじゃん。

なんのためにバージョン管理するのか、Git とそれ以外でなにが違い、メリットやデメリットにどんな違いが生まれるのか。

それが情報工学として学ぶべきことじゃないんかの?

高校までの勉強と学問の違いを考えてみた方がいいと思うよ。

就職するときにそれが必要だと判断したなら、自分で学習してください。

追記

新卒で知ってたらそりゃあ一目置かれるかもしれんけど、そんなんスタートダッシュで頭ひとつ飛び出ただけでその後の成長次第で逆転されるなんてことはザラ。

新人さんに教えてくれと言われれば教えるし、新人研修があるなら普通は教えてもらえる。

それよりももっと情報を扱うことの本質を学校で学べることに意義があると思うよ。

そこは自分で学習するとめちゃくちゃ時間かかるから。

Quora Userさんのプロフィール写真

gitを教えている大学はたくさんあります。例えば東京大学工学部電子情報工学科の下記の実験では明確にgitの習熟を目的のひとつにしています。

この実験はユーザインタフェースの研究を行うための基礎的技術・経験を積んでもらうことも目的としています.このため,

インタフェースデザインにおける重要なヒューリスティックスの理解と知識の習得,

ユーザインタフェースのデザイン・開発プロセスの体験,

インタラクティブなシステム開発におけるクイックプロトタイピングの実践,

ソースコード管理システムであるgitとGithubの習熟,

を達成できるように授業が設計されています.

https://yatani.jp/teaching/doku.php?id=2021infovislab:start

京都大学情報学科計算機科学コースでもgitを教えています(なぜかハードウェアの演習で教えているのですが、計算機科学コースではこの演習は必修科目なので、これをスルーして卒業できる学生はほぼ居ないはずです)。

https://isle3hw.kuis.kyoto-u.ac.jp/2022HW3-git.pdf

他でも、課題のコード提出がGithubにリポジトリを作ってpushすることだったり、Github Pagesでレポートを提出したりすることが求められる大学は多いです。

上記のどちらも、gitの使い方を教えるというような教育ではなく、他の、より高度なことを実験・演習としてやる上で、当然使えるようになっておくべき

gitを教えている大学はたくさんあります。例えば東京大学工学部電子情報工学科の下記の実験では明確にgitの習熟を目的のひとつにしています。

この実験はユーザインタフェースの研究を行うための基礎的技術・経験を積んでもらうことも目的としています.このため,

インタフェースデザインにおける重要なヒューリスティックスの理解と知識の習得,

ユーザインタフェースのデザイン・開発プロセスの体験,

インタラクティブなシステム開発におけるクイックプロトタイピングの実践,

ソースコード管理システムであるgitとGithubの習熟,

を達成できるように授業が設計されています.

https://yatani.jp/teaching/doku.php?id=2021infovislab:start

京都大学情報学科計算機科学コースでもgitを教えています(なぜかハードウェアの演習で教えているのですが、計算機科学コースではこの演習は必修科目なので、これをスルーして卒業できる学生はほぼ居ないはずです)。

https://isle3hw.kuis.kyoto-u.ac.jp/2022HW3-git.pdf

他でも、課題のコード提出がGithubにリポジトリを作ってpushすることだったり、Github Pagesでレポートを提出したりすることが求められる大学は多いです。

上記のどちらも、gitの使い方を教えるというような教育ではなく、他の、より高度なことを実験・演習としてやる上で、当然使えるようになっておくべき道具としてgitの使い方を教えています。


さて、上記のような大学だと、3年生の時点でgitを使えるようになるわけです。彼らが4年生でソフトウェアに関する研究をバリバリやっている研究室に入り、修士2年間を過ごしたとすると、3年間はgitやGithubを日常的に使うような生活にどっぷり浸かることになります。

こういう学生生活を送ってきた人と同列に採用されて、同じような仕事をやっていくためには、そりゃgitの基本的な使い方については自分で勉強してキャッチアップすることが求められるのはしょうがないのかなと思います (もちろん他に得意分野があってgitを使うような作業を完全に他の人に任せれるようなスペシャルな人なら話は別です)

Quora Userさんのプロフィール写真

Gitの使い方なんて1日もあれば理解できますよ。そんなことよりもデータ構造とアルゴリズムなどの根幹の部分を大学でしっかりと習う方が大事です。

Quora Userさんのプロフィール写真

今は小中高でも授業で扱うが、私の頃はITの教科書なんてなかったんだ。勝手に自学して仕事として取り組んできた。誰にも教わっちゃいないさ。政府のシステムもみんな私が作ってきたし、これって実務じゃないとでも (・・?

慶應義塾には自我作古という言葉があります。我よりいにしえをなす。先頭に立つ勇気あふれる気概です。世界初、史上初の業務を手掛けてきた。ITエンジニアってそういう職だ。できないのならルーチンワークの仕事に就けば?

Yukihiro Matsumotoさんのプロフィール写真

残念ながらシンプルで明快な答えは存在せず、「人による」としか言えません。

実務を通して独学で学べるかどうかはだいぶ本人の資質とやる気に依存します。私は実務だけを通じて学ぶことができた人を何人か知っていますが、あなたが学ぶことができるかはわかりません

大学でCSを教える学科に入学したとして、その中でどれだけのものを身につけるかどうかもまた本人の資質とやる気に依存します。大学に入学したから、あるいは卒業したからと言って、それだけで何かを保証してくれるわけではないのです(卒業してれば、最低限の単位を取る努力をしたことは保証されるかもしれませんが、それだけでCSの知識やスキルが卓越してるとは言い難いでしょう)。

が、あえて言うならば、プログラミングを職業にする場合、(CSに限らず)大学を卒業していてたほうがちょっとだけ成功確率が高まりそうな気がします。業界での高卒への門戸があまり広くないからです。

では、専門学校の場合はどうかというと、わたしの知っている範囲内では情報系と銘打っていてもサイエンスを教えているところはほとんどないと思います。スキルについては大学以上に個人差が大きいと言えるでしょう。ただ、就職については高卒よりも門戸が広そうです。積極的に斡旋もしてくれそうですし。

Quora Userさんのプロフィール写真

就職した先が、研究室が git でなかったら、困ってしまいますか?

ツールなんぞ、大学で教えてもらうような、内容ではない気がします。

ツール、バージョンが確定したら、即座に使えるようになって欲しい、

は無理にしても、「了解しました」で、覚える前提で居て欲しいですね。

「そんなライブラリ聞いたことありません」とか言われたら、

「調べろよ」と思いますかね。

開発にしても、統合開発環境はたくさんありますし、

新しいことばかりが、仕事で与えられると思いますか?

就職先のメーカーの古いオリジナルなんて、触らないで済むとも?

どうせ、10年も経てばガラリと変わっている可能性が大ですから、

もっと役に立つこと(基礎)を学んでほしいです。

コンピュータ歴、37年、触った言語は数えていませんよ。

Toru Watanabeさんのプロフィール写真

実務未経験の新人は役に立たないどころか足手まといです。

新人でも何かを任せてやらせないと成長しないので、新人の教育担当の人は任せられそうなのを見繕って切り出してやり方説明して質疑対応とフォローアップとそして最悪代わりにやり直しまで面倒みます。当然最初からその教育担当の人がやっちゃった方が明らかに早いんですよ。

そんな新人も1年後くらいにようやく足を引っ張らなくなり、2年後くらいには戦力になります。戦力にするために苦しいところを現場全員で協力し合って耐え凌ぐんですよ。

その2年でエンジニアとしてのスキルや作業速度アップだけでなく、作業全体の流れや各種ツール・バグトラッキングシステムやCIシステムなどの使い方、ドキュメントの書き方、他のメンバーとのコミュニケーションや進捗報告のやり方、ミーティングや議事録の作り方、各専門用語等の意味、要求分析フェーズで客に何を聞き何を確認すべきか、各工程にどの程度の工数がかかるかどんなリスク要因があるかの予測、といった事を学んでいきます。

Akira Hayashiさんのプロフィール写真

Git フローがとっつきにくいの、とてもわかります。

なんとなくですが、たくさんのカタカナ語が、Git 入門の壁を高くしているように思っています。

リラックスして、よくある仕事の流れと対比しながら、とらえてみてはどうでしょうか(下記は Git"Hub"フローです)。

  1. 課題を洗い出す: issue を作る
  2. 取り組む課題を選ぶ: issue にサインアップする
  3. 課題を解決するための仕事をする: commit する
  4. 経過を報告する: push する
  5. 承認者に提出する: pull request を作る
  6. 査読を受ける: request review する
  7. 受理される: approve される
  8. 課題を解決する: merge する

Git (GitHub)がいま以上に、知的労働者に普及するといいなと思っています。

大島 芳樹さんのプロフィール写真

私がとある情報科学科を卒業したのは25年以上前になりますが、コンピューターが使える実習室がほぼ24時間アクセス可能で、大学院生のタコ部屋がすぐ上の階にあってもうちょっと経験を積んだ先輩方が何をしているか様子を見ることができ、また話がしたければ気軽にできる、という環境でした。

今や50歳を目前にしたその同期グループの中で、現在でもプログラミング書きをメインの仕事としているのは、当時から実習室に常に顔を出していて、学校の課題として与えられたものだけではなく、その他興味の向くままに大学院生の先輩と話をしたり、プログラムを書いたりということを日常的に楽しみとしてやっていた人が多いように思います。

ですので、少なくとも私が行ったところでは「実践ができない」ということはなく、「やりたければいくらでもやったらよい」という感じではありました。大学に行って職業とすることを考えるのであれば、課題をやっているだけでは残念ながら足らず、それ以上のこともやらないといけないとは思います。大学の良いところはそこにより知識を持った人がおり、また同好の士として気軽に情報交換ができる人がいるということで、そのような環境を利用しない手はないと思います。

大学外でももちろんできるとは思いますが、ある程度の系統だった知識を持った人、あるいは持った人々との触れ合いが持つ効果については過小評価してはならないでしょう。独学でやろうとす

私がとある情報科学科を卒業したのは25年以上前になりますが、コンピューターが使える実習室がほぼ24時間アクセス可能で、大学院生のタコ部屋がすぐ上の階にあってもうちょっと経験を積んだ先輩方が何をしているか様子を見ることができ、また話がしたければ気軽にできる、という環境でした。

今や50歳を目前にしたその同期グループの中で、現在でもプログラミング書きをメインの仕事としているのは、当時から実習室に常に顔を出していて、学校の課題として与えられたものだけではなく、その他興味の向くままに大学院生の先輩と話をしたり、プログラムを書いたりということを日常的に楽しみとしてやっていた人が多いように思います。

ですので、少なくとも私が行ったところでは「実践ができない」ということはなく、「やりたければいくらでもやったらよい」という感じではありました。大学に行って職業とすることを考えるのであれば、課題をやっているだけでは残念ながら足らず、それ以上のこともやらないといけないとは思います。大学の良いところはそこにより知識を持った人がおり、また同好の士として気軽に情報交換ができる人がいるということで、そのような環境を利用しない手はないと思います。

大学外でももちろんできるとは思いますが、ある程度の系統だった知識を持った人、あるいは持った人々との触れ合いが持つ効果については過小評価してはならないでしょう。独学でやろうとすることの困難はプログラミングに限らず何にでも付きまといますし、では「実践」ということで業務べったりの開発をアルバイトのような感じで始めたとしても、長期的に向上し続けるためには「認知マップ」が十分広がらないことが多いのではないかとは思います。

ですので、「実践」と「幅広さの」両方を求めるべく、授業や課題もやり、そして自分で作りたいものを見つけてどんどん作ってみる、ということができる貴重な時間を得られる大学を有効活用するのが良いのではないかと思います。

M. Kawaさんのプロフィール写真

最近ですが、いろいろやってるみたいですよ。

ただ、いきなり全国的に一斉に情報系の学科の定員を増やしても、受験生が希望しなければ、競争倍率が下がったり、定員割れを起こしたりします。

また、学部、学科を新設したり、教員増を図ろうとしても、そもそも情報系を教えられる教員がいなかったりで、人材が確保できない問題が生じます。すでに教員不足が始まっています。

なので、単純に学科定員を増やせば、すべて解決にはならないです。

国の基金による理系学部設置等の支援は最長10年間、20億円程度まで
●理・工・農×「デジタル」「グリーン」分野への転換を促す●収容定員を増やさないスクラップアンドビルド方式を優遇●大学院レベルの機能強化による高度デジタル専門人材育成も支援
木下 藤八郎さんのプロフィール写真

大学で教えるほどのものとは思えません。いちいち教えなくても、それくらいできないと実務でも使えないと思います。管理者、メンテナーレベルだとそうでもないかも知れませんが、それでも大学でわざわざやることはないと思います。

Takao Shoさんのプロフィール写真

答えは、『 未経験でとってくれる会社の研修で勉強しながら働き、その会社で3-5年ぐらいしたら、働きながら勉強してある程度実力が付いたら転職』が正解の道です。

あるいは、『スクールや専門学校に勉強してから、卒業した!という新卒カードを使って、なおかつ未経験でとってくれる会社の研修で勉強しながら働き、その会社で3-5年ぐらいしたら、働きながら勉強してある程度実力が付いたら転職』

なども正解だと思います。

まずWebエンジニアなどIT業界に入る際、未経験の人が、いくらパソコンスクールに行こうが、専門学校にいって勉強しょうが、それは経験としてカウントできません。

経験としてカウントしていいのは、現場で仕事した時のみです。

授業料を払っているにもかかわらず、勉強してスキル?資格?を身につけたと言っても関わらず、業界では経験ありとならず未経験となります。

考えても見てください、スクールに行って色々な料理を作れるようになったが、生まれてこの方、客に料理を出したことの無く、スクールに行って調理師資格をとったからと言って、じぁ現場に放り込んでみょうかーって放り込んで、実際に仕事を出来るのかは、別問題な訳です。

特にIT業界は、この資格があれば仕事が出来る。このスキルを知っていれば現場で働ける。そういう類のものではありません。逆に言えば、この資格が無いと働けない。このスキルを持っていなけとれば働いては駄目という類で

答えは、『 未経験でとってくれる会社の研修で勉強しながら働き、その会社で3-5年ぐらいしたら、働きながら勉強してある程度実力が付いたら転職』が正解の道です。

あるいは、『スクールや専門学校に勉強してから、卒業した!という新卒カードを使って、なおかつ未経験でとってくれる会社の研修で勉強しながら働き、その会社で3-5年ぐらいしたら、働きながら勉強してある程度実力が付いたら転職』

なども正解だと思います。

まずWebエンジニアなどIT業界に入る際、未経験の人が、いくらパソコンスクールに行こうが、専門学校にいって勉強しょうが、それは経験としてカウントできません。

経験としてカウントしていいのは、現場で仕事した時のみです。

授業料を払っているにもかかわらず、勉強してスキル?資格?を身につけたと言っても関わらず、業界では経験ありとならず未経験となります。

考えても見てください、スクールに行って色々な料理を作れるようになったが、生まれてこの方、客に料理を出したことの無く、スクールに行って調理師資格をとったからと言って、じぁ現場に放り込んでみょうかーって放り込んで、実際に仕事を出来るのかは、別問題な訳です。

特にIT業界は、この資格があれば仕事が出来る。このスキルを知っていれば現場で働ける。そういう類のものではありません。逆に言えば、この資格が無いと働けない。このスキルを持っていなけとれば働いては駄目という類でもないのです。

知ってない(素人)人より、知っている人がいいよね!という、未経験よりパソコンスクールや専門学校出た人がいいかもね?という優位性はありますが、入社したらそんなことは些細な差です。

考えても見てください、プログラムやWebエンジニアの素養の無い人が、人事総務の採用窓口になっていた所で、その人は専門的なことは分かりませんし、勿論、最終審査で社長が出てきたとしても、Webエンジニアの素養として、貴方をどうこうは見れません。

その人の受け答えや、考え方、仕事の意気込みから、会社の風土にあうかあわないか、一緒に働きたいかどうかしか見てないのです。

実践の現場に試用期間に放り込んで、実際の仕事で、そして使ってみて耐えれるか、やれるかでしかないからです。

経験も無く採用してくれる会社があるのなら、業界の入り口としては入ったほうがいいです。

ただ先輩が手取り足取り色々ちゃんと教えてくれるとか、制度が整っているとか、そういうのは期待しないほうがいいです。

普通ならコストが高くても経験者ありで雇います。大手企業であれば、教育にコストを入れているケースもあり未経験で雇う可能性もありますが、その場合は大学の新卒のみかもしれません。

要は、業界未経験でもOKというケースは、それほど手が足りないケースで、お金も出せない場合の会社が多いです。

つまり給料の安く仕事利の多い会社(要はブラック体質)かもしれない訳ですから。。

しかしその会社で職務経歴書(履歴書ではない)を充実できるようにしてください。また仕事に関わるエピソードを充実できるようにしてください。

仕事でお金貰いながら勉強できる状態で実績もつくれる会社なので、多少は眼をつぶる必要があります。

もしかしたら納期や見積もりが矛盾して苦労したり、見積もりしなおしたり、納期の調整を行ってみたり、無茶振りで一人でやれっていわれたりして、なんとかやって行くうちに一人でWebエンジニアの仕事ができるようになれば、

今度は、良い職場環境を求めて転職することになります。実績=職務経歴書を携えてね。

こんな案件を見積もりして、自分でこういことやって、納期までに仕事を終えましたとか。。。それを何人月で何日で終えましたとかです。

こういう実績って、捏造も出来ますし、結局な所で面接官が、人事総務や社長など技術のすりあわせが出来ない人が多いと思いますので、

仮採用で試用期間させてみて・・・というパターンになります。はいったら実力を示してください。

中野 武雄さんのプロフィール写真

最近思うようになったんですが(Quora の影響も多分にあります)、「この教科は使わない」って言ってる人って、だいたいその教科の内容をちゃんと理解してませんよね?

理解してないなら使わない(使えない)のは当たり前ですね。そういう人の影響で、勉強する前から「将来使わないから」という判断をしてしまうのは実に残念なこと(←BNBR 的語句選択 )だと思います。

ある考え方を本当に理解すると、おそらくその人にとっては世の中の見え方が変わります。それだけでも学びの報酬としては十分だと思いますけどねえ。

あ、実学も「ちゃんと理解」すればもちろん役に立つでしょう。でもそういう人は、だいたい半可通のままパターンマッチだけさせてる場合が多いんじゃないかな、と思います。そういう人はたぶん近いうちに AI 様に駆逐されちゃうんじゃないかと思います(言いすぎ)。

Shunichi Araiさんのプロフィール写真

伝統的な大企業に行くと配属は会社任せになる傾向があるでしょう。メンバーシップ型雇用と言って、その会社の正社員であることを重視し、正社員にいろいろな経験を積ませて、全員を上級管理職候補として扱うからです。

でもそのような会社でも理系修士で技術者として採用されれば、基本的には技術者としての仕事が中心になるかと思います。技術者や研究者は、そのまま技術職や研究職の管理職などへ出世していくのが中心になると思います。

先端的な企業では、技術者であれ、マーケティングであれ、専門性が重視され、同じ職種を継続して続けていくことが前提となります。

しかし大学で学んだことが評価されるのは理工学系だけです。

たとえば経営学部でマーケティングを学んだから、マーケティングの仕事に有利かというと、たぶんそうは思ってもらえないと思います。所詮、大学の授業はおままごと程度でしょ、と思われてしまう可能性が高いです。それだけ日本の大学は信頼されていません。

Quora Userさんのプロフィール写真

たぶん新卒にそんなん期待してない気がするなあ。

必要なら教えてくれるっしょ。

とりあえず、積極的に取り組む気概があればいいんじゃね?

あとは、仕事に拒否反応が出ないくらいの下地ですかね。

しらんけど。

Takaaki Naganoyaさんのプロフィール写真

いま高校生ということは、1年生から3年生まで幅があるわけですが、4年制の大学に進むと仮定して、あと5〜7年後の時点の出来事を、見ず知らずの人間に未来予測をしてほしいと言っているわけですね。

それは、無理ですよ〜。2025年の状況を占うなんてできませんって。1年後だってわからないのに。

一応、自分の関心のあるジャンルについては、こんな風に(↑)予測はしてきたんですが、コンピュータの世界もSteve Jobsというわかりやすい人間が亡くなってから、1年後の姿が「読み」にくくなってきました。進化のスピードが落ちたエリアと、日々進化している分野が入れ替わりつつあるのだろう、とは感じています。

プログラミングについては、まったくやっていないよりは、何かやっておいたほうがいいということは言えます。ただ、趣味として行うプログラムと、仕事で行うプログラムは別物です(自分で作りたくもないプログラムを組む必要があるので、取り組み方が全然違うと思いますよ)。

また、うまく就職できていたとしても、職場との折り合いがつかなくてやめてしまっているかもしれませんし、ひとことに「エンジニア」といっても職種はさまざまです。

5〜8年後の心配をするよりは、「いましかできないこと」をやっておいたほうが建設的だと思いませんか?

まず、学校の勉強はやっておきましょうよ。そして、友達といろいろ話をしましょう

部活をされているかどうかはこ

いま高校生ということは、1年生から3年生まで幅があるわけですが、4年制の大学に進むと仮定して、あと5〜7年後の時点の出来事を、見ず知らずの人間に未来予測をしてほしいと言っているわけですね。

それは、無理ですよ〜。2025年の状況を占うなんてできませんって。1年後だってわからないのに。

一応、自分の関心のあるジャンルについては、こんな風に(↑)予測はしてきたんですが、コンピュータの世界もSteve Jobsというわかりやすい人間が亡くなってから、1年後の姿が「読み」にくくなってきました。進化のスピードが落ちたエリアと、日々進化している分野が入れ替わりつつあるのだろう、とは感じています。

プログラミングについては、まったくやっていないよりは、何かやっておいたほうがいいということは言えます。ただ、趣味として行うプログラムと、仕事で行うプログラムは別物です(自分で作りたくもないプログラムを組む必要があるので、取り組み方が全然違うと思いますよ)。

また、うまく就職できていたとしても、職場との折り合いがつかなくてやめてしまっているかもしれませんし、ひとことに「エンジニア」といっても職種はさまざまです。

5〜8年後の心配をするよりは、「いましかできないこと」をやっておいたほうが建設的だと思いませんか?

まず、学校の勉強はやっておきましょうよ。そして、友達といろいろ話をしましょう

部活をされているかどうかはこの一言ではわかりませんが、体力づくりはしておきましょう。

そうした活動の中で、自分はどういう人間かを知る努力をしましょう。

「自分のことは自分が一番よくわかっている」なんて言葉がありますが、自分のことが自分で一番よくわからないはずです。他人は「どうして?」と聞けば答えてくれますが、自分は聞いても答えてくれません。

自分にはどういう癖があって、どういうものの考え方をして、どういうことが好きで、どういうことが嫌いなのか。記憶力はいいほうか? よくないほうか? 短期的な記憶力と長期的な記憶力で差はないか? 自分が関心をもっていることは何か? 関心を持っていることに対して自分でアクションを起こせるのか、他人からのアクションを待ってしまうほうか?

高校時代は人間観察のためのものすごく貴重なチャンスなんです。一生のうちで、こんなに能力差が小さい集団にいられる機会なんて、もうないんです。

まわりの同級生がどういう人なのか、何が得意で、何が不得意なのか。自分よりも成績のいい人間が、どういう努力をしてどんなことに関心があって、その人が行なっている日常的な習慣をいくつか取り入れたら自分も同じレベルに並べるんじゃないかといった、試行錯誤を行えるまたとない時期なんです。

そうしていろいろ努力を行なっていけば、1年後にはいま予想もできなかった「自分」に出会えるはずです。そういう努力のほうが建設的だと思いますよ!

Tanino Kenichiさんのプロフィール写真

gitはちょっと特殊なので、はっきり言えば大学では不要です。

何が特殊かといえば、gitはLinuxのkernel修正用に特化している部分があります。

企業で使う部分とちょっと特殊なkernelとの部分とを分離して理解出来る能力があれば、大学レベルでgitコマンド自体を教える必要があるとはあまり思えません。

そんなことより情報工学を学んでいただければ、と思います。

なぜ本質的にgitが必要だと思っていて、その必要性をどう解消し、自らのビジネスにするか。

なんて考えられる新人がいると思ってません(苦笑)。

実務では、githubを知らなければ教育します。現場で足りなければ、現場の人が都度OJTします。

実際に、gitは業務では簡易的に使ってます。何も難しいところはありません。

そうでない職場は、、私は分かりません。

Hantani Sadahikoさんのプロフィール写真

転職を考えるときに履歴書に書けます。取っておいて損はないでしょう。

何しろ国が認定しているわけですから。

私は初級シスアドと二種と一種を持ってます。今でいう所のITパスポートと基本と応用ですね。

俺の実力は国が認めてるんだぜ!となんか自信がつきます😊

転職を考えるときに履歴書に書けます。取っておいて損はないでしょう。

何しろ国が認定しているわけですから。

私は初級シスアドと二種と一種を持ってます。今でいう所のITパスポートと基本と応用ですね。

俺の実力は国が認めてるんだぜ!となんか自信がつきます😊

Saito Suehiroさんのプロフィール写真

Git を使っている職場では、Git が使えない人は、嫌がれるでしょうね。そっと勉強したら大丈夫です。

安富 伸浩さんのプロフィール写真

科学(サイエンス)で学ぶのは広い視野を身につけることであり、実務の研鑽は特定の技能の精度を高めること、とカバーしている範囲や方向性が大きく違います。

このため、同じようなやり方で製品を作り続けるなら実務をやった方が有利だし、アプローチを変え製品の変革を遂げたいなら系統的に学ぶ科学の方が有利でしょう。長い目で見て、どのように解決したいかで適切な手法は変わります。

一口にエンジニアと言っても、一般化へ向かう科学者的な方向と、個別のものを上手く作る職人的な方向は同時に存在します。結局の所、どちらの方向性が効果を現すかは状況次第なのです。

個人的には、大所の視点と現場の技能は両輪だからどちらも疎かにするべきではないと思っています。大変だけど偏らず両方頑張るのが良いです。

Chiyuki Edoさんのプロフィール写真

単純な定員については文科省が認可しないから。つまり大学の定員は厳しく決められているからです。

ただし他の学部学科の定員を減らしたり廃止したりして情報系の学部学科を創設したり定員を増やす例はいくらでもあります。

しかし本格的な定員増は、高校生の理系離れを食い止めてからでないとできないでしょう。数学をろくに学んでいない学生を受け入れても、専門が情報工学の学生を育てることは困難ですので。

Ikeda Yositakaさんのプロフィール写真

そもそも、大学の情報工学科は情報工学を学ぶ学部であり、プログラミングを学ぶための学部ではないのです。必須単位表を見れば明白でしょう。

プログラミングの実践は学外でやるのが基本だと思います。大学ではプログラミングよりも「情報工学」を学ぶのに集中しましょう。プログラミングにおいてそれは強みになるはずです。

私の母校の情報工学科の科目系統図を載せておきます

そもそも、大学の情報工学科は情報工学を学ぶ学部であり、プログラミングを学ぶための学部ではないのです。必須単位表を見れば明白でしょう。

プログラミングの実践は学外でやるのが基本だと思います。大学ではプログラミングよりも「情報工学」を学ぶのに集中しましょう。プログラミングにおいてそれは強みになるはずです。

私の母校の情報工学科の科目系統図を載せておきます

Akihiro Itoさんのプロフィール写真

基本情報という名前が良くないと思ってます。

同レベルのセキュリティマネジメントは今どき転職で重宝されるのに、基本と言う名前だからか基本情報はどうも軽く見られがちです。

よって役に立てたいならセキュリティマネジメントをオススメします。割と簡単で圧倒的にウケが良よくて役に立ちますよ。

そんな事言うのはですね

安全確保支援士のウケが悪すぎるんだよ!!!!!

難しいのにセキュマネのほうが人事の反応いいのなんでだよ!!!!!

絶対セキュリティスペシャリストに戻したほうがいいよ!!!!

Itaruさんのプロフィール写真

楽しい人生を送りたければ、楽しい人生を送った人の話を聞けばよく、楽しくない人生を送りたければ、楽しくない人生を送った人の話を聞けば良さそうに思います。

「これをやったけど、役立たなかった。むだな努力をした。これは無駄だからやめたほうが良い。」

こんな調子で熱心に語る人は、どうも楽しくない人生を送った人が多いように、感じています。

「これは意外に役だった。むだだと思ったことが無駄でなかった。ラッキー、得しちゃった。役立たなくても面白かったからよし。」

このように、なんでも、役立った、面白い、と語る人は人生を楽しんでいる人が多いように思います。

なんでも面白がった方が楽しい人生送れそう。

それに、役立つ知識を学ぶのはやや危険かな。

もう、人工知能の時代なので、すごく役立つ知識は、google が人工知能化しちゃいますから、ただ同然で好きなだけ使えるようになります。人工知能のトレーニングはお金がかかるので、需要のあるところから開発されてコモディティ化しますから、役立つ知識より、こんな知識使わないよ、という知識の方が、人工知能時代には価値が残ります。

googleに普通の英語を読ませれば、普通の日本語に翻訳してくれる(需要があるから)。

茨城弁のギャル言葉を大阪のおばさん語には変換できません(需要が遥かに少ないから)。

あんまり役立つ知識は無価値になることは想定しておいた方が良いと思っています。

Quora Userさんのプロフィール写真

実際に働く事で得られるもの=経験w

厳密に言えば、未経験でも役に立たないわけではありませんが、エンジニアとしてのスペックはかなり低いと言わざる得ないですね。

私は13歳くらいからプログラムをはじめ、19歳くらいで最初のIT関係の会社の門を叩きました。実際まともに働きだしたのは23歳からです。

その最初の時、ソースコードの読解力は褒められましたが、読んでいてたまげました。「なんでこんな無駄なコードを書いてるの???」とwww

若い頃はねぇ。Z80のニモニックくらいは暗記しててダンプみただけでそらんじれたし、C等のコードを見ても当時は今みたいにハードスペック高くないからリソースを大事に使うコードを重宝されていた。のに。

業務のコードはその上に保全性というものがあり、青天の霹靂と言える常識の差がありました。

そんなの常識じゃん?!なんてのは通用しません。

これに慣れるのに数年かかりましたね。

趣味で10年プログラムし続けてても、現場に出れば全然違います。さらに趣味とは違うリリース形態をはじめとするエンジニアにまつわる作業というものが沢山ありますがそれを全然知りません。

あらゆる意味で素人です。

役にたたないとまでは言いませんが、まぁ。なんだ。勉強してくれ。くらいは言うかもしれませんねww

あなたの返答は公開されません
読む価値のある回答でしたか?
この情報はQuoraがページ上の回答を並べ替えるのに役立ちます。
そう思わない
そう思う
池田 義幸さんのプロフィール写真

有名大学のCSで、実務で役に立つようなテクニックや技術ばかりを学べると思わないほうがいいですよ。

CSってコンピューター・サイエンス(計算機科学)のことですよね?

だったら学ぶのはまず離散数学や論理回路やデジタル回路の基礎、計算機科学の基礎です。

Dラッチって何?JKフリップフロップって何?RSフリップフロップで両方の入力をオンにしたらどうしていけないのか量子論の面から説明して。Equivalence relationが成り立たないものの例を挙げてみて。コーシー分布の期待値を求めようとしてみて。Quicksortのスードコードを書いて、その欠点を指摘して。フィボナッチ数列を計算するこの再帰アルゴリズムの[math]\mathit{O}[/math](複雑性)を求めて。このFPGAとXilinxのアプリを使ってCPUを作って。Turing machineのモデルを使ってhalting problemを証明して。Journaling file systemを説明して。。。等々。

これらがエンジニア(飽くまでも一般的なソフトウェア・エンジニア)として、求められる設計書やコードを書くのにどれだけ「直接的」に役に立つかは謎です。

もちろん大学でも年次が上がってくれば実践的なコードを書いたり、OSやコンパイラーを作るプロジェクトをやったりしますが、それでも現場で毎日大小問わずコードを書いている現役エンジニアと比べた時、どちらが即

有名大学のCSで、実務で役に立つようなテクニックや技術ばかりを学べると思わないほうがいいですよ。

CSってコンピューター・サイエンス(計算機科学)のことですよね?

だったら学ぶのはまず離散数学や論理回路やデジタル回路の基礎、計算機科学の基礎です。

Dラッチって何?JKフリップフロップって何?RSフリップフロップで両方の入力をオンにしたらどうしていけないのか量子論の面から説明して。Equivalence relationが成り立たないものの例を挙げてみて。コーシー分布の期待値を求めようとしてみて。Quicksortのスードコードを書いて、その欠点を指摘して。フィボナッチ数列を計算するこの再帰アルゴリズムの[math]\mathit{O}[/math](複雑性)を求めて。このFPGAとXilinxのアプリを使ってCPUを作って。Turing machineのモデルを使ってhalting problemを証明して。Journaling file systemを説明して。。。等々。

これらがエンジニア(飽くまでも一般的なソフトウェア・エンジニア)として、求められる設計書やコードを書くのにどれだけ「直接的」に役に立つかは謎です。

もちろん大学でも年次が上がってくれば実践的なコードを書いたり、OSやコンパイラーを作るプロジェクトをやったりしますが、それでも現場で毎日大小問わずコードを書いている現役エンジニアと比べた時、どちらが即戦力として見られるかは何となく分かるんじゃないかと思います。

ただし、、ただし、コンピューターや「計算」の基礎を、OSやデータベースや計算複雑性の基礎を、知っているのと知らないのとでは、書いたコードの質や効率に差が出たり、与えられた課題を理解してコードにできるかどうかの能力に違いがでてきたりはするかもしれません。

もちろん、それはあなたがどういう方面のどういうエンジニアを目指そうとしているかに大きく依存します。

OSの開発に携わりたいのなら有名大学で学べることは思いっきり学んでおかないと、後でめちゃめちゃ苦労するか、そもそもその方面のエンジニアになれないでしょう。

逆にPHPやCSSを専らの武器にしてWordPressの保守、開発を行っていくのなら大学で学ぶことは決して無駄とは言いませんが、その時間を現場で実践でコードをたくさん書いている人のほうが向いているかと思います。

何かを差別しているわけではありませんが、漠然と「エンジニアとしての実力」と言われても、回答を得られる前にまず質問攻めに遭うんじゃないでしょうか。

何をするソフトウェア・エンジニアになりたいの?エンジニアになって何がしたいの?そもそもどうしてエンジニアになりたいと思ったの?エンジニアとしてやっていける資質ってなんだと考えてます?

スタンフォードとか実務でとかいう前に、できるだけ現場(エンジニアとしての職種)を広く、できるだけ深く研究して、自分のやりたいこと、なりたいものと比較し、ある程度の方向性を見定めてからこういう質問をしたほうが実りが大きいと思いますよ。

Shunichi Araiさんのプロフィール写真

なれます。

が、「データサイエンティストや機械学習エンジニア」を最初から目指すのはちょっと絞り込みすぎなので、広い意味でソフトウェアエンジニアを目指しておけばいいと思います。

修士までいってComputer Scienceをしっかり学び、プログラミングや英語をしっかり鍛えれば、Googleでも入れますよ。そしたら年収数千万円ですよ。

西谷 健夫さんのプロフィール写真

日本のこれまでの企業は、大学で専門を活かすというより、入社後に教育して育てるという傾向にあります。特に文系は大学で学んだことに直接関係ないところに配属になる場合が多いようです。

理系の場合、特に大学院修了の場合には、ある程度専門性を考慮して、工学部なら設計とか技術開発部門などに配属されることが多いと思います。学部卒だと現場のエンジニアとかある程度学んだことが活かせるとは思いますが、営業職などに配属されることもあるようです。

まずは自分がなりたい職業を考えて、それにはどのような学部へ進学したらよいかを見てみましょう。あくまでも必要条件的であって、その学部・専攻を出たからといって必ずその職業につけるわけではないところは認識しておいてください。

将来の仕事・資格を調べる【スタディサプリ 進路】

あなたの返答は公開されません
読む価値のある回答でしたか?
この情報はQuoraがページ上の回答を並べ替えるのに役立ちます。
そう思わない
そう思う
Jeepさんのプロフィール写真

大学生にとって必要な知識って何でしょうかね?

IT系インターンで実務的スキルを蓄積する事ですか? それとも、大学で学べる専門科目をより深く理解する事でしょうか?

そして、言う所の「実力」というのは何を以て実力とするのか不明です。もしプログラミングスキルを「実力」とするなら大学など行かずに専門学校でもそのスキルを得る事は十分可能だと思いますが。

阿部 誠さんのプロフィール写真

必要な知識ではありますが最重要かと言われたら疑問ですねー。

ただ就職後に覚えれば良いという考えもどうかなと。

転職後に即戦力が求められるならばgit程度の使い方で、作業が止まるようだと、ちょっと嫌な顔をされるかもです。

なので、「gitは個人開発で触ってますので仕事でも問題なく使えると思います」と回答できるようにしておいたほうがよいかとおもいます。

そして、gitというかgithubの使い方をちゃんと覚えておいたほうが良いかと思います。

なれるとめっちゃ便利ですよ。コードレビューとかgithubなしでやりたくないです。

Koike Yasushiさんのプロフィール写真

いくらでも可能ですが、ココでそんなことを訊く前にやることがあるでしょう。

まず、起業にプログラミングが必要かどうかも分析せず、

とりあえずプログラミングと考えているようですが、

会社は存続するためにまず利益を出さないといけません。

プログラミングはあくまで利益を出すための手段・道具であり、

どのように利益を生み続ける会社を経営していくかという前提がすっ飛んでいます。

それと老婆心ですが、同学年で起業を考えている人はもちろんゼロではなく、

それこそあなたがココで質問をしている段階でもう起業に向けビジョンを立てているでしょう。

調べたらいくらでも情報はあります。とにかく動いてみましょう。

Quora Userさんのプロフィール写真

一番いいのは「今の会社でwebエンジニアになること」です。そうすれば給料は少なくとも維持できますし、いざエンジニア知識が無くても知見が生かせます。

まず一歩目として、自分の遂行業務に関連するシステム部門に異動してください。事業会社の場合、システム系部門はそこまで人気が無いことが多いので、希望も通りやすいことが多いでしょう。例えば営業であれば営業支援システムを作っているシステム部署、経理であれば勘定系システムを作っている部署などです。システム部門から見ても業務を知っているエンジニアは貴重なので、いわゆるPMOスキルや要件定義スキルがなくても重宝されるはずです。その間にシステム開発の基礎を学び、できれば自分でもソースを見たりしてください。

そのシステム部門に馴染んだら、今度は容易にwebシステムの開発部署にも異動できるでしょう。ここで今までと同じ給料をもらいながら、勉強しつつ分からなければ周囲に聞きながら仕事をすれば良いのです。

未経験の分野に飛び込むときには、一足飛びでいくと割と危険です。同じ会社内であれば知見も生きますし、給料は保障されるのでまずは社内で移ることをお勧めします。

Miya Kazuoさんのプロフィール写真

いいえ。CSのベースをちゃんと身につけたエンジニアの方が実力が最終的に上になります。 コードたくさん書くことと、原理原則を知ることは別の話です。

原理原則も理解しててコードもたくさん書いてる人が、実力があるエンジニアに多いです。

鈴木 亜紀彦さんのプロフィール写真

よほどベンチャーでいきなり実戦投入でなければ問題ないと思います。

まあ実戦投入されても問題ないですよ。そんなに期待されてないので。

Saito Makotoさんのプロフィール写真

私もネット情報、書籍など色々当たったのですが、結局「若葉ちゃんと学ぶGit使い方入門」が良かったです。類書との一番の違いは、SourceTree というアプリで説明しつつも、ちゃんとコマンドならこうする、中で git がこう動く、という原理説明もされている所でしょうか。

自分の理解が、この本の時にブレイクスルーしたのか、この本が良かったのかはわかりませんが…
ご参考までに。

佐藤ねいとさんのプロフィール写真

そんなんすぐ覚えられるじゃん

Baba Masanoriさんのプロフィール写真

git を学校で教えて欲しいと思うような人は大学ではなく専門学校やアビバのような塾にいくのではないでしょうか。

. KappaZZさんのプロフィール写真

大学の情報工学科はgitを教えませんが、それで実務ができるのでしょうか?

Gitを使うバージョン管理専門要員を雇うのであればダメでしょう。でも普通の企業はそういう人を求めているわけではないのです

Gitは優れたバージョン管理システムのひとつですがそれだけです