【経験談】職業訓練でマジで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 はサーバという離れた場所でデータを作って、あなたのブラウザにそのデータを渡します。

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

JavaScript は避けて通れない

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

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

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

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

Java の特徴

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

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

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

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

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

今となっては卒業制作のメンバーもほとんど開発をやっていないようです。

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

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

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

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

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

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

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

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

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

労働環境があまり良くない

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

僕が経験した Java 案件

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

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

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

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

これは実話ですが…

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

大手ベンダーの話

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

家で勉強できないフレームワーク

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

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

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

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

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

こういうセキュリティガチガチの案件では PC やデータの持ち出しが厳しく制限されています。
将来、自宅やカフェで仕事をしたい人には縁遠い環境です。

(注釈) あくまで(略

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

とはいえ 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 言語やっとけ

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

関連記事

コメント

コメントを残す

*