私はまだIT業界で働いたことがありません。
そして、今まで情報系の専門学校や教育機関に身を置いたこともありません。
高校は普通科・文系で卒業し、大学は四年生経済学部2回生で中途退学しました。
しかし、夢はシステムエンジニアです。
将来的にはpythonを扱う仕事で開発をしたいと考えています。
ただ、最初に学ぶ入り口としてJavaがいいかなと思い
これからIT業界で働くために独学の勉強をし、始めてから1年が経ちますが
Java Programmer I (silver)を取得することができたので
数ヶ月後にIT職への転職予定をしております。
ただ、転職先はPHPの仕事みたいなので、PHPの勉強を始めております。
仕事に就いたら、国家資格の情報セキュリティスペシャリストの取得を目指し
仕事と並行して勉強しようと考えています。
IT業界での仕事はどういうものなのか
これから知ることになるかとは思いますが
どういう仕事なのかを仕事が始まる前に聞いてみたいと思い、この場をお借りしました。
勝手ながら、ご意見をいただけるとありがたいです。
私は未経験・未知識なので、この業界で働き始める人たちのスキルレベルや
必要最低限の知識、業界の厳しさ、仕事の難しさなど全くわかりません。
しょうもない質問ですが、よろしければ、どなたかお答えいただければと思います。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/27 15:41
回答6件
0
###総論
私はこのteratailで500回以上、回答してきました。
すると、何回も同じような質問を繰り返している人を見かけます。
一方で、一を聞けば十を知り、メキメキ上達していく人もいるでしょう。
さて、伸びていく人とそうでない人は、何が違うのか?
知るべきことはなんですか?
- 技術的資産を貯めること、
- 技術的負債を溜めないこと。
結論から言うと、技術的資産を貯める方向に行く人が、技術的に伸びていきます。
しかしいったい、何が資産で、何が負債なのか? 以下、説明していきましょう。
###仕様の理解
- 資産 → コードが基づくべき仕様を理解して、正しく動かす
- 負債 → 意味が分からないまま、コピペのツギハギで動かす
解説:エラーはコードの文法に違反しているものですが、
バグは仕様とコードの差から生じます。
だから、仕様とコードを対応させる必要があります。
最近普及してきたDDDなども、コードをドメインの言葉に合わせていく技法です。
仕様の理解には、自分の専門分野の知識、業務知識が大事です。
典型的なのはたとえば、会計の知識や統計の知識とかがそうです。
また、仕様を理解する点において、英語と数学は大きな武器です。
たとえば流行の機械学習でも、このふたつが理解する武器になるでしょう。
英語と数学は、最新のプログラム言語やフレームワーク(FW)よりも、
陳腐化が確実に遅いです。おそらく一生使える技術でしょう。
一方、言語やFWはひどいときには、流行した来年には、もうオワコンになっている。
だから、言語やFWの学習だけで力を使い果たさず、英語と数学を細く長く学びましょう。
###コードを読む
- 資産 → 他人が書いたコードを読み、良い要素があればマネしていく
- 負債 → 書いたら書きっぱなし。自分のコードですらまともに読み返さない
解説:プログラムは書くより読む方が難しいので、読む技術が重要です。
ただ、実用的なプログラムは、読むには、規模が大きすぎたり、複雑過ぎたりします。
そこで、キレイなコードが書いてある本を、何度も読み返すと良いです。
たとえば、とくにJavaなら、ファウラーの『リファクタリング』がオススメ本。
「リファクタリング」は読んで書き直すことだから、読む技術の訓練に良いです。
この『リファクタリング』を最近読み直したら、実装の書き方にとどまらず、
設計的にもドメインモデリングしていることに気づき、あらためて感心しました。
OOPで書くとどういうコードになるのか、という良いサンプルでもあります。
また、Javaでは、「デザインパターン」の本も良いと思います。
###変更を容易に
- 資産 → テストを書くなどして、プログラム全体を使いやすくしていく
- 負債 → その場しのぎの修正を繰り返し、全体が分からなくなっていく
解説:テスト、ロギング、例外処理、UML、ドキュメント……などを書く。
これらは手間は掛かりますが、プログラムを使いやすく、資産化していきます。
一方、動けばいいやと場当たり的な修正を繰り返すだけだと、
だんだん全体の構造が不透明になっていきます。
たとえば、IF文やFor文のネストが深くなっていくとかです。
とくに長期間に渡って保守すると、一回一回は一行の修正とかでも、
何年も経つにつれて、手に負えない技術的負債になっていきます。
変更が大変で、ちょっといじると、すぐ動かなくなってしまい、
とても触りたくない、負の遺産になります。これを維持するのは苦しい。
なるべく早く捨てたい、次に押しつけたい、トランプの「ババ抜き」になってしまいます。
ここで、詳細は省きますが、正しくオブジェクト指向で書くと、変更容易になります。
関数型も筋の良いプログラミングですが、
今回のようにPHPとJavaが前提なら、基本的にOOPが向きます。
OOPの話をすると長くなるので詳細は省きますが、ここでは一点だけ、
スモールオブジェクトで構成すると、テストが容易になる、ということに触れておきます。
逆に、深くネストしたIF文やFor文は、テストしにくいのは自明でしょう。
###結論
- 意味が分からないまま、コピペのツギハギで動かす
- 書いたら書きっぱなし。自分のコードですらまともに読み返さない
- その場しのぎの修正を繰り返し、全体が分からなくなっていく
まとめると上記が、典型的な技術的負債を溜め込むアンチパターンです。
逆に今回、技術的資産にした方は、どれもイニシャルコストが高いものです。
英語や数学が典型的ですが、学習コストが掛かります。オブジェクト指向も難しい。
初期コストが高いと避けがちなので、ずっと身につかないままという場合も多い。
だから、**「継続は力なり」**で、筋の良いやり方がたとえ難しくても、
たとえ忙しくてできない期間があっても、細く長く続けて学んでいくことが重要になります。
一日や二日では効果を実感できなくても、一年や二年も経つと大差になります。
結論をまとめると、「急がば回れ」、**「ウサギとカメ」**です。昔からの真理。
投稿2017/11/27 18:50
編集2017/11/27 21:12総合スコア5592
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/28 00:14 編集
0
ベストアンサー
夢はシステムエンジニアです
既に何人かの方が指摘されていますが、IT業界の仕事の中でもシステムエンジニアは特に日本語能力が必要です。
例えば、システムエンジニアの仕事の中に、ヒアリングというものがあります。システムの仕様をまとめる際に、お客様に質問をして、その回答をまとめ、仕様書を作成しますが、その質問のやりとりのことです。
その際、システムエンジニアの質問があいまいだと、お客様は困惑して回答できないか、あるいは勝手に自分の喋りたいことを喋るわけです。それでは仕様はまとまらないですよね。
実はあなたの質問自体がそうなっているのです。
第一パラグラフ: 自分の生い立ち、将来の夢
第二パラグラフ: 今まで勉強してきたこと、将来やりたいこと
第三パラグラフ: 下記
IT業界での仕事はどういうものなのか
これから知ることになるかとは思いますが
どういう仕事なのかを仕事が始まる前に聞いてみたいと思い、この場をお借りしました。
勝手ながら、ご意見をいただけるとありがたいです。
第四パラグラフ: 挨拶
こうしてみると、質問文らしきものは、第三パラグラフの「IT業界での仕事はどういうものなのかこれから知ることになるかとは思いますがどういう仕事なのかを仕事が始まる前に聞いてみたい」という箇所で、つまり、「IT業界はどういうものか聞いてみたい」という質問と思われます。
でも、回答者は、勉強の仕方や、あなたに足りないものの指摘をしていますよね。つまり、IT業界での仕事についての回答は得られていないわけです。それは、あなたの質問の日本語文章が悪いからです。
このように、他のIT技術よりも、日本語こそが重要なのです。仮にシステムエンジニアではない、もっと別の職種を目指すのであれば、システムエンジニアよりは日本語能力が重要でない職種もあります。でも、その職種につくならば、技術面で他の方よりも抜きん出る必要がありますよ。
将来セキュリティエンジニアを目指しているようにも感じましたが、セキュリティエンジニアも日本語能力が重要です。もし、その理由が知りたければ、別途質問して下さい。
エンジニアはリタイアするまでずっと勉強し続ける必要があります。teratailで質問するのも勉強なのです。なので、システムエンジニアになったつもりで、明確な質問をするようにしましょう。それが私からのアドバイスです。
投稿2017/11/27 21:55
編集2017/11/27 21:56総合スコア11701
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/28 00:02
0
質問文で長々と書いてますが、必要な事を過不足なく伝えるために、まず日本語と英語を勉強してくださいな。
投稿2017/11/27 15:16
編集2017/11/27 15:18総合スコア5846
0
JAVAとかPHPとかいろいろ書いておられますが、どのプログラミング言語を勉強するか拘るのはあまり意味がないですね。仕事の内容次第でどの言語を使うべきかは変わってくるし、今はやりの言語が3年後もトレンディである保証はどこにもないですから。プログラミング言語よりも自然言語のスキルの方を磨いておくべきです。英語はすぐにも必要ですよ。将来的になどと悠長なことを言っているようでは先が思いやられます。
それから、IT業界といったって色々ですよね。銀行の会計システムを作る部署と製薬会社向けに遺伝子解析システムを作る部署では求められる知識は大きく違うはずです。ITそのものより、それを応用する先についての理解を深めることが重要ではないでしょうか。
投稿2017/11/27 16:02
総合スコア13669
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/28 00:22
0
頑張って欲しいですね。IT業かまた、未経験ですが、会社選び時に真面目でお願いします。
ブラックの入社してしまうと、仕事より体が壊れますから、後,再就職も難しいです。
入社前に、会社文化・自分何年働くか・自分何が実現したいか・この会社自分会うか・・詳しく確認してね。
投稿2017/11/27 15:09
総合スコア66
0
数学の中の論理学と統計学ではないかと。
プログラムを作るのに論理学が必要で、世界の仕組みを理解するのに統計学が
あるとそう困らないと思います。
投稿2017/11/27 14:33
総合スコア891
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/27 15:53 編集
2017/11/28 10:06
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。