【経験談】マジで初心者にはJavaをオススメできない3つの理由

  • このエントリーをはてなブックマークに追加
  • Pocket

こんにちは。タクマ™ [@suwaru_blog] です。

Java で Web プログラミングを勉強して、エンジニアとして稼ぐぞ!

というあなた、ちょっと待ってください!本当に Java でよいか調べてみてください。
僕は 29 才のときに Java の職業訓練に通って (紆余曲折を経て) Web エンジニアになりました。

Java を選んだ理由は特にありませんでした。
プログラミング言語とかよくわからず、ハロワで適当に応募… (これが良くなかった)

今にして思えば、

あのとき Java にしなければ、もっと早く開発経験が積めたな…
ノマド的な働き方を実現したいとなると、かなり遠回りな選択だったな…

と少なからず思う部分があります。

今回、Web 開発で Java をオススメしない理由を、体験談も踏まえて書こうと思います。

Java をオススメしない 3 つの理由

僕がプログラミング初学者に Java をオススメしない理由は 3 つです。

  1. Java はプログラミング初心者にとって敷居が高い
  2. 労働環境があまり良くない (ことが多い)
  3. トレンド技術が身につきにくいので後々苦労する

それでは解説していきます。

(注釈) Java が悪いのではなく、取り巻く労働環境が良くないのでは…という論旨です。
Java で努力している人の気分を害するかもしれません。ご了承ください。

免責うったので全力でディスります!

そもそも Java と JavaScript は違うという話から

この記事を見ている方は、おそらくプログラミング初心者が多いと思います。
その前提に立って「Java と JavaScript は違うものだよ」という話を軽くしておきます。

Web 系の Java は他のプログラミング言語と替えが効く

Java はサーバという離れた場所でデータを作って、あなたの Web ブラウザにそのデータを渡します。
(たとえば GoogleChrome とか Safari とか)

これは必ず Java じゃないといけないということはありません。
PHP や Ruby, Python といった他のプログラミング言語でも簡単に実現できます。

こういった種類のプログラミング言語で開発することを「バックエンド開発」と呼びます。

JavaScript は避けて通れない

JavaScript は主にあなたの Web ブラウザの中に住むプログラミング言語です。
サーバとデータのやりとりしたり、画面のアニメーションを作ったりできます。

現状 Web ブラウザでこういった処理を担うのは JavaScript 一択です。
Web 系のエンジニアを目指すなら JavaScript は必須と思って勉強してください。

JavaScript で開発することを「フロントエンド開発」と呼びます。

【余談】バックエンド開発とフロントエンド開発、どっちがオススメなの?

今から勉強を始めるなら、あなたが興味がある方でいいと思います。

しかし、現場に入るとバックエンドかフロントエンドか担当が分かれることもありますが、
分かれないこともあります。ゆくゆくは両方とも分かっておいた方がいいです。

得意・不得意あるかもしれないけど、中堅以上になると両方できるエンジニアは多いです。

Java はプログラミング初心者にとって敷居が高い

Java は初心者にとって勉強しづらく、オワコンという話をします。

Java の特徴

  • Java は Web 以外の世界にも生息しています
    • Java Virtual Machine というものが入っていればどこでも動きます
    • デスクトップアプリ、Android アプリ、家電、昔のガラケー…
  • 過去に空前の Java ブームがありました
    • 日本中に Java のシステムがばらまかれたので、現在もその運用・保守の案件は多いです
    • そういった需要があるので Java の職業訓練は応募すると入りやすくはあります
  • 初心者にとって Java の文法は結構むずかしい
    • 記述が長くて覚えることが多い
    • 早い段階で「オブジェクト指向」という概念を理解できないと話にならない
  • Web で動かすまでに設定することが多い
    • 慣れるまで自分の PC にサーバを立てて動作確認するのも大変
    • レンタルサーバで Java を動かせるところが少ない
      • VPS というものはありますが知識が必要です…
      • 流行りのクラウドでも Java 環境を構築できますが、これも初心者には敷居が高め

これ読んだだけで「うっ…」となる人は無理せず PHP などを選びましょう。

初心者の Java の挫折率 60 % 以上

僕のときの Java の職業訓練は 30 人ぐらいのクラスでした。

卒業制作は 12 人を中心に回しました。
残る 12 人は出来る範囲でのサポート、あとの 6 人は知らぬ間に消えていました…

今となっては卒業制作のメンバーもほとんど開発をやっていなくて、
開発している人も PHP とか Ruby に鞍替えしてました。

(注釈) あくまで僕のケースなので参考程度に留めておいてください。

バグを見つけやすいのが Java のメリット

散々 Java の悪口を書いていますが、メリットも当然あります。
いま一番人気がある Python というプログラミング言語と比較してみます。

Python は便利すぎて何しているのかわからない

Python は簡単な記述で複雑な処理をやってくれます。
裏側の処理を気にしなくていいのですが、理解が浅いと予期せぬ動作を招く…こともあります。

Java は書くのがめんどくさいけど全体把握しやすい

反して Java は記述ルールがしっかりしていて、正確に書く必要があります。
面倒くさいところでもありますが、結果としてエラーやバグを見つけやすいという恩恵があります。

Java でチャラついたゆるふわ系の現場は少ない

なので Java は大きなミスがあってはならないキッチリした現場に採用されがちです。
具体的にいうと Java は国家システム金融システム大規模システムによく使われます。

労働環境があまり良くない (ことが多い)

矢文が飛んできそうですが、Java は習得に苦労するわりに社畜になりやすいです。

僕が経験した Java 案件

※ あくまで一例です。でも Java で 3 案件やって全部こんな感じでした。

  • よくある日本のサラリーマン的な働き方
    • 朝早くに出勤 (顧客と会わないのに夏もスーツ)
    • 炎上案件では 8 時出社 24 時退社してました
  • マニアックで古い技術がいまだに動いている
    • 10 年以上動いているレガシーシステムの保守とかザラ
  • ビッグプロジェクトに下請け会社がたくさん入っていてピラミッド状態
    • ピラミッド末端はマージン抜かれまくって給料がめっちゃ安い
    • ピラミッド末端はスキル不要の雑務が多い

プログラマ派遣 (SES) をしている会社でこういう現場に飛ばされると、
会社に搾取されまくって不幸になるので僕はおすすめしません。

トレンド技術が身につきにくいので後々苦労する

これは実話ですが…

コンビニもない郊外の地下施設に幽閉されて、
何に使われるか分からない部品をプログラムしていた時期があります。

立場が末端すぎると、タスクが細分化・抽象化されすぎて、
自分が何をやらされているのか分からない…ってのはマジであります。

大手ベンダーの話

大規模なシステム開発には大体、大手ベンダーが絡んでいます。
大手ベンダーとは「日立製作所・富士通・NEC・NTT データ・日本 IBM」のことです。

職場以外で勉強できない Java フレームワーク

大手ベンダーは「独自の Java フレームワーク」を使っていることがあります。

それは一般公開されていないので Google 検索しても出てきません。
社内ドキュメントを読みつつ、実際に開発しながら使い方を学んでいきます。

そういったフレームワークは、そのベンダー内でしか使えない知識となるので注意してください。

現在は主流じゃないソフトウェア

僕の現場では例えば Knockout.js っていう JavaScript ライブラリだったり、
Seasar2 っていう Java のフレームワークを使っていました。

メモ帳はサクラエディタとか秀丸。チャットツールは IP Messaenger でした。
レガシーすぎます。。。

ずっとそのような現場にいるならいいですが、
これらを使いこなせるようになっても将来やりたい案件に繋がらないと思っていました。

保守的で生産性が低い現場

嘘のような本当の話。

  • インターネット接続禁止の現場がある (危ないから!)
    • 何もググれないので、困りごとは有識者に質問する
    • ツールは支給されたフォルダに入っているものだけ使う
  • 謎ルール、意見が多い (お上には従おう!)
    • 「Excel のカーソルは必ず一番左上にしてファイル保存しろ」
    • 「クラウドサービスは危険だ。けしからん」

こういうセキュリティガチガチの案件では PC やデータの持ち出しが厳しく制限されています。
将来「ノマドワーカーしてー!」な人には縁遠い環境です。

(注釈) あくまで(略

案件ガチャ

中上級のスキルがあれば、マトモな Java 案件もあります。(リモートワークもたまにある)
ですが、実務経験のないエンジニアはこういうヤバイ案件に放り込まれがちです。

特に Java は運ゲー要素が高く、これは「案件ガチャ」と揶揄されています。

テストの話

こういった現場の支払いは人月計算なので、あえて時間のかかるテストでお金儲けしています。

プログラミング出来ないオジサン・新人に試験計画書を作らせて、
Excel に画面のスクリーンショットをペタペタ貼らせるアホくさいテストをやっています。

僕はそれを見て、こんなところにずっと居てはダメだと本気で思いました。

やばそうな案件は断る (転職も検討した方がいい)

SES の会社にいると、営業担当がこのような案件を平気でとってくることがあります。

テスターでもいい、ドキュメント整理だけでもいいから人手が欲しいという案件です。
そんなところに入るとエンジニアとしての経験がまったく積めません!

僕は 1 年半ぐらい仕事としてプログラミングができなかったので、その会社を辞めました。
もっと早くに辞めるべきだったとすら思っています。

「そもそも SES ってなに?」と興味がある人はこちらの記事で解説しています。

最初から Java 以外やっていれば…

僕のその後の話ですが、1 年間ほど PHP を独学していたので難なく転職できました。
そしてようやくプログラミングで、私服でフレックスな働き方ができるようになりました。

職業訓練で Java を選ばなければ…営業担当の案件を断っていれば…

僕の過去はいまさら変わりませんが、ここまで読んでくれた皆さんは後悔しない選択をして下さい!

(追記) 営業担当も必死で頭を下げて案件をとってきたのに、
エンジニアにやりたくねーって言われてはムカつくだろうなって気持ちもわかります。
…しかし「エンジニアとしてのキャリア設計」だけは真剣に考えた方がいいですよ。

Android アプリ開発は比較的ゆるい案件が多い

Java では Android アプリを開発することもできます。
大手ベンダーが絡まないなら、スマホアプリ開発の方が自由な働き方ができる印象はあります。

少なくとも僕が今までに経験した現場はそうでした。スマホアプリ開発の Java はアリかもです。

でも今なら Kotlin があつい

最近は Kotlin というプログラミング言語で Android アプリを開発するのが流行っていますね。

案件数はまだ少なめですが Java に比べてシンプルに書けますし、
今後はこっちが主流になっていくので、僕なら Kotlin を選びますね。

「Java から Kotlin に移行したいんだけど」みたいな案件がとれると思います。

この記事のまとめ

  1. Java はプログラミング初心者にとって敷居が高い
  2. 労働環境があまり良くない
  3. トレンド技術が身につきにくいので後々苦労する

それより C 言語はどうなの?

ちなみに C 言語も難しいから僕はオススメしません。

プログラミングはじめるなら最初に C 言語やっとけ

と言う謎の勢力がいますが、優しい言語から体系的に学んでいった方がいいですよ。
速攻で挫折しては元も子もないので…

関連記事

お仕事ください!

僕が代表を務める 株式会社 EeeeG では Web 制作・システム開発・マーケティング相談を行っています。
なにかお困りごとがあれば、Twitter DM や Web サイトからお気軽にご相談ください。

カテゴリ「SES」の最新記事

最新記事

コメント

コメントを残す

*