Javaは初心者のオススメしないプログラミング言語です。
私はなにも考えずに知らずにIT業界に入って、IT業界の末端で生きてみたのですが、その経験からの結論です。
これからIT業界で職業として、プログラマーやシステムエンジニアで働きたいと考えている人は、プログラミング言語の学習選択の参考にしてください。
目次
記事の対象読者
この記事で対象にしている読者について、まずは書いておきます。
- プログラミングが好きで好きでたまらないという人向けではないです
- プログラミングがけっこう楽しいという人向けです
- 生活するための手段として、比較的にプログラミングが楽しいから選ぶという人向けです
- コミュニケーション能力があんまりいらないからプログラマーやシステムエンジニアを選びたいという人向けです
- 高学歴や大企業勤めをしている人向けではありません
こういうと、身も蓋もないのですが、別に優秀じゃないし、情熱もあるわけじゃないけど……
楽しそうだからプログラミングをして生きていきたいなと考えている人向けの内容です。
つよつよエンジニアではなく、よわよわエンジニアとして生きていくことを考えている人向けの内容です。
上記に当てはまらない人は、読む必要がない内容になっています。
イメージが伝わるように概要を書いていますので、気になったことやわからないことがあったり、さらに詳しく正確な情報が知りたい人は自分で調べてみてください。
Java言語が日本において使用される分野
この記事では、プログラミング言語自体の優劣や仕様についてよりも、
自分が目指す、あるいは、働きたい労働環境で使用されている言語なのか、
という視点で書いていきます。
Javaのような汎用プログラミング言語は、色んな用途に使用することはできるのですが、
各プログラミング言語は、よく使用される場面・分野・状況が決まっています。
- JavaScriptやPHP、Rubyは、web分野
- KotolinやSwiftは、スマホ分野
- Cは組み込み分野
- Pythonは機械学習・AI分野
などのようによく使用される分野の傾向があります。
Javaはどの分野でよく使用されているのかというと、あえて言うなら基幹業務系分野で使用されています。
(組み込み系でも使用されているみたいですが……この記事では省きます)
Javaが使用される基幹業務系分野とは、どんな分野なのか?
Javaが使用される基幹業務系分野とは、どんな分野なのか?
簡単に説明すると、(大きな)会社が社内向けに開発しているシステムのことです。
販売管理システム・生産管理システム・顧客管理システム・会計管理システム、などなどです。
基幹業務系をJavaで作ったのだから、消費者向けのアプリ(システム)もそのままJavaということもよくあります。
なぜ、基幹業務系分野においてJavaがよく使用されるのか?
なぜ、基幹業務系分野においてJavaがよく使用されるようになったのか、正確なところを私は知りません。
勝手な推測も含んでいますが、調べた限りだと主に下記の理由によるものです。
- Javaの登場時期が1995年というIT化が進み出す時期だったこと
- サン・マイクロシステムズという有力会社がバックにいたこと
- 色んなOSやハードウェアで動かすことができる(マルチプラットフォーム、仮想マシン)ことやガベージコレクションなどの言語機能(開発機能)があったこと
だから、広く使われるようになっていきました。
まとめると、IT化の比較的早期に出現し、大きな会社が広めようして、当時はユニークで便利な機能を持っていた言語だったので、日本でも多くの企業で使われたのだと思います。
最近では、Javaが登場した当時とは違い、Javaのように便利な機能を持った言語は様々に登場し、名も知られています。
Javaよりも書きやすいと言われているプログラミング言語もあります。
Javaではなければいけない、効率が落ちるという状況は減りました。
それでも、なぜ日本の基幹業務系分野でJavaがよく使用されているのか?
それは、今までJavaで作られたシステムを、新しいプログラミング言語で書き直すことがとてつもなく困難だからです。
巨大な企業ほど、Javaで作られたシステムが大きいです。
もっと便利なプログラミング言語ができたからといって、簡単に乗り換えることができないのです。(部分的な機能を他の言語で書くということは普通に行われています)
また、Java言語を使用していても、致命的に不便というわけでもないですし、問題なく業務が行えているので、企業としては頑張ってまで乗り換えるメリットがないのです。
逆に言うと、最近できた企業や事業であれば、Java以外のプログラミング言語を採用する企業もあります。
結論を言うと、1990年代からあった企業の大きなシステムでJavaはよく使用されています。
学習をオススメしないプログラミング言語がJavaである理由
学習をオススメしないプログラミング言語がJavaである理由は3つになります。
- 担当工程が限定的になりがち
- プログラミングする人としては収入が上げづらい
- プライベートでプログラミングしづらく、役に立つことが少ない
担当工程が限定的になりがち
大規模開発では、大人数が参加することになります。
それゆえ、1人当たりが担当する作業工程は限定的になります。
企画・仕様要件(なにを作るか)を考えて、実装(プログラミング)もして、テストもしてという全体的な関わり方は、あまりできません。
大企業で務めていている人は、たいてい企画・仕様要件(なにを作るか)を考える部分のみを担当します。
下請けの企業・エンジニアは、たいていプログラミング・テストの部分のみを担当します。
プログラミングが楽しいから、プログラマーやシステムエンジニアを選んだ人にとっては、この働き方はつまらなくなります。
なぜなら、プログラミングで楽しい部分は、どんなのを作るのか考えて、プログラミングをする工程が楽しいからです。(そうじゃない人もいますが。テストでひたすらバグを探しまくるのが好きな人などもいますが…)
なので、企画・仕様要件だけを考えるのはつまらないですし、
プログラミング・テストだけをするのはつまらないのです。
決められた内容を渡されて、ただ言われたとおりにプログラミングするだけの仕事が何年も続くとなると飽きてくると思います。
仕事で通用するための基本的な文法などは、2,3年もあればなんとか一通りはできるようになるのです。
あとは、似たようなことをずっとプログラミングするだけの働き方は、プログラミングが楽しくて興味を持った人にとっては、退屈な働き方になると思います。
プログラミングする人としては収入が上げづらい
大規模開発で評価されるのは、プログラミングスキルだけというよりも、その業務内容の知識を持っているかどうかも見られることがあります。
企業の初期段階の開発に携われるチャンスがあるかどうかという話にもなるのですが…
(会社間のバランスなどが絡んできますし、一概に言える部分ではないので話半分に読んでください)
初期段階の開発であれば、大手企業はその分野の知識を持っている人を歓迎します。
また、初期の開発時期にこそ高度なプログラミングスキル(設計など含め)が求められることが多くなります。
業務知識もない状態だと、すでに重要な部分の開発はされており、簡単にできる内容のプログラミングをまかされる状況が多いです。そうすると、収入は高くないです。
業務知識を積み上げていない、かつ、簡単にできるプログラミングスキルしか持っていないようなエンジニアは、業界では評価されにくいし、収入も上がらないと思ってください。
基幹業務系の開発で、収入を増やそうと思うと、プログラミングをする人ではなく、企画・仕様要件をする人(いわゆる上流工程)やプロジェクト管理する人になる必要があります。
プログラミングをする人のまま、収入を増やすのは難しいです。
(ただし、このことは多かれ少なかれ、どのプログラミング言語でも言えることでもあります)
あくまで、全体的な傾向のことですが…
新しい企業・事業や小規模の開発の場合は、企画・仕様要件・プログラミング・テストを幅広く担当しやすいです。
高度なプログラミングスキルが求められる部分の開発に関われるチャンスも多くなります。
プロジェクトマネージャーとしてだけでなく、プレイングマネージャーのような働き方もしやすいです。
なので、プログラミングをそれなりに楽しみつつ、それなりの生活費を稼ぎたいという人はJavaはオススメしません。
プライベートで活用しづらい
家でプライベートでなにかを作ろうとしたときに、Javaは向いてません。
たとえば、家でちょっとした作業系ツールを作ろうとしたときに、手軽に作れて動かせるのは、コンパイル言語であるJavaではなく、JavaScriptやPHP,Ruby,Pythonといったスクリプト言語です。
また、Webアプリを作りたい、世の中に公開したいと思ったときに、Javaの場合は、共用レンタルサーバーでは動かすことができないので、VPSやクラウドサーバーになります。
手間もしくはお金が、スクリプト言語よりもかかることになります。
あと、スマホアプリを作りたいとなったら、今ではJavaではなくKotlinやDartの方がよいのではと思います。
なので、プライベートでもプログラミングをしたいという人には、Javaはオススメしません。
リモートワークがしづらい
一応、エンジニアならリモートワークで働けるのではないかと考えている人向けに、Javaはリモートワークがしづらいということも書いておきます。
Javaは大企業の基幹業務系で使われることが多いと書いたわけですが…
こうした企業はリスクを嫌がります。
情報流出などのセキュリティリスクを抱えるのを嫌がります。
また、リモートワークをしてもらうための、管理にコストをかけるのも嫌がります。
職場に集めて仕事をしてもらった方が、企業にとっては楽ということになります。
これから先の時代はわかりませんが、現状ではJavaにおけるリモートワークはしづらい状況です。
Javaの学習をオススメできる人
一応書いておきますが、Javaの学習をオススメできる人は、下記のような人になります。
- プログラミングは仕事のための手段と割り切れる人
- 何年でも似たような内容をプログラミングをするのを楽しめる人
- プログラミングだけではなく上流工程やプロジェクトマネージャーを目指す人(工程を分担している開発現場で、各工程をしっかり経験していきつつ自分の領域を広げていくことも可能です)
- どんな場所でも活躍でき、上位数%にいける人
- ひとつの開発現場に長く居続けて、業務知識をつけていきたい人
- 家(プライベート)ではプログラミングしない人
こういう人なら、Javaでも何も問題ありません。
ネットでJavaをオススメしている記事を見かけるけど…理由は?
ネット上でJavaをオススメしている記事を見かけることもあるので、そのことについても書いておきます。
Javaは案件が多い
プログラミングスクールが書いている記事に多いかもしれませんが…
これはプログラミングスクールの仕事の紹介先に、大規模開発の案件があるからです。
大企業の開発では、プログラミングスキルがあまりない人を大量に必要とする開発スタイルです。
募集される人数も多く、仕事が紹介しやすいからです。
すべてとは言いませんが、プログラミングスクールの場合、企業に紹介さえできれば儲かるのです。
企業に紹介した後の、その人の長期的なキャリアプランやライフスタイルまで考慮して、記事を書いていない記事も多いのではないでしょうか。
この記事で書いてある働き方を見てイヤだなと思った人は、Java言語以外のプログラミング言語を選んだ方が幸せになれるのではないでしょうか。
Java言語以外のお仕事も世の中にはたくさんありますから、あえてJavaを選ぶ必要はありません。
プログラミングスクールが書いている記事に多いかもしれませんが…
これはプログラミングスクールの仕事の紹介先が、大規模開発の案件が多いからです。
大企業の開発では、プログラミングスキルがあまりない人を大量に必要とする開発スタイルです。
募集される人数は多く、仕事が紹介しやすいからです。
すべてとは言いませんが、プログラミングスクールの場合、企業に紹介さえできれば儲かるので、紹介した後のその人の長期的なキャリアプランやライフスタイルまで考慮して書かれていない記事も多いのではないでしょうか。
ただし、この記事で書いてある働き方を見てイヤだなと思った人は、Java言語以外のお仕事も世の中にはたくさんありますから、あえてJavaを選ぶ必要はありません。
Javaは文法を学ぶのに適している
Javaは静的型付けコンパイル言語だし、オブジェクト指向のプログラミングの書き方に慣れるのに良いという意見を書いてる記事もあるかと思いますが……
私としては、初学者があえて最初に学ぶ必要はないと思っています。
文法(やプログラミングパラダイム)なんてものは必要になったときに、その時々で、必要な部分だけを学んでいけばいいだけです。
最初は、自分のやりたい分野に必要なプログラミング言語の文法を学ぶのが、学習コスパが良いです。
Javaをオススメしないまとめ
この記事では、私がIT業界で見聞きした体験を元に書いています。
ある視点から見た場合、Javaはオススメできないプログラミング言語だということを書きました。
多種多様な状況をすべて書いたわけではないので、こんな視点もあるのだなと思ってもらえばいいかと思います。
これからプログラミング言語を学ぼうという人が、自分にとってはどのプログラミング言語を学ぶのがベストなのか考える参考になったら幸いです。