Computer

エンジニア志望者、プログラミング初心者はPythonとJavaのどちらを学ぶべきか

近年はPython(パイソン)の人気が上昇を続けており、しかもPythonエンジニアは年収も高いといわれています。一方でプログラム言語別の求人数をみると、Javaがナンバーワンとなっています。今回は外資系のIT企業で主にJavaを使っている僕の個人的な考えをお伝えしようと思います。

PythonとJavaの長所と短所

まずはPythonとJavaの長所と短所をみていきましょう。

Pythonの長所

Pythonは非常に簡潔で読みやすい構文が特徴のスクリプト言語で、近年では機械学習や深層学習といったAIの分野で使われています。それ以外の分野でも、たとえばYouTubeやInstagramなど、Pythonで開発したウェブサイトも多数あります。

また手動でやると面倒なデータ加工やシステム管理の作業なんかもPythonでサッとスクリプトを書いて、面倒なコンパイルやビルドなしに実行することができます。

Pythonの短所

Pythonの簡潔さや習得の敷居の低さはメリットですが、それが逆に災いして、Pythonから別の言語への移行が難しくなるというデメリットもあります。例えば、Pythonのプログラミングしか知らない人がJavaに移行するのはちょっと苦痛かもしれません。

またPythonはインタープリタ型の言語のため速度ももJavaほど早くなく(昔はJavaイコール遅いだったのですが、最近はかなり早くなりました)、Javaほど幅広いデバイスをサポートしていない点もあります。

Javaの長所

一方でJavaは回りくどい構文でコードの量が多くなりがちな言語です。これのどこが長所かと思われるかもしれませんが、Javaは型にはまったコードになりやすく、それがかえって理解しやすかったりエラー検知したりというメリットになります。

Javaは、Androidアプリ、サーバーサイドをはじめ、幅広い分野で使われています。非常に成熟したコミュニティがあり、たいていの問題に対応するライブラリやフレームワーク、ドキュメントを無料で利用することができます。

Javaの短所

Androidアプリの開発の主流がKotlin(Javaベースの言語)になったりと、開発者がJava以外のモダンな言語を好む傾向もあり、Javaの人気が落ちる可能性もあります。

ラムダ式のように他の言語ではずっと前から使えたものがJavaでは長らく使えなかったりと、新機能の導入が遅いという点があります。

また、Javaの実行環境であるJVMはメモリを消費しがちなので、安価なレンタルサーバーなどで動かそうとするとハードウェアの制約に直面することもあります。

Pythonの給料が高いのはなぜか

Pythonエンジニアの年収が高いとよくいわれますが、実際にはどうなのでしょうか。

下の数字は、payscale.comから取得したアメリカのJava開発者とPython開発者の平均年収です。

Java開発者の平均年収は7万4000ドル

 

blank

一方Pythonは9万ドル

 

Javaの平均が7万4000ドル、Pythonが9万ドルと、Python開発者の年収が高いことがわかります。

これは機械学習、ディープラーニングといったAI分野の職種が年収を大きく引き上げていると考えられます。

ニュースでもシリコンバレーには年収5000万円以上のAIエンジニアがいるとか、日本でもNTTデータがAI技術者に年収3000万円の報酬を可能にする人事制度を新設したなんてニュースもありましたね。

しかしこれらはすべてAI関連技術の技術者の話であって、高額な報酬の大半はPythonスキルではなくAI関連技術の専門知識に対して払われているといえます。

機械学習の分野は完全な理数系の世界で、数学の素養や思考力が強く求められます。すでにあるライブラリを呼び出すくらいならばなんとかなりますが、データ収集の手法、学習アルゴリズムの選択と評価、最適化、そして既存のシステムへの応用までを考えて開発するとなると、数学の専門知識に加えてコンピュータサイエンスの知識、プログラミング能力、システム設計などのすべてが求めらます。

このすべてができる人材であれば、大企業の役員以上の年収をもらうのも当然だろうなと思います。

しかし逆にいえば、同じPythonであってもAI技術がないウェブの開発者にはここまでのバブリーな待遇は期待できないでしょう。

こんな方にはPythonがオススメ

というわけで、こんな方にはPythonがオススメです。

  • とりあえずプログラミングに手を出しておきたい人(Python自体は学習が容易なため)
  • 世界のあり方を変えるAI技術に単純にワクワクする人
  • 数学的なものに抵抗感がない人
  • 年収が高い花形エンジニアを目指したい人

ちなみに僕は機械学習に関してはまったくの門外漢です…僕とAIとの付き合いといえば、前にAI関連の仕事に就いた友人から話を聞き、興味本位でこの本を買ったことくらいのものです。

 

「この本は二冊目以降に読むといいよ」というアドバイスも聞き入れずにこの本を購入したのですが…案の定挫折してしまいました。Pythonのコーディングには問題なかったのですが、あちこちに出てくる数式と数学的思考についていけず負けてしまいました。

でもこれこそコンピュータの計算能力が真価を発揮する領域だと思いましたし、選ばれた人にしか使いこなせない技術は単純にカッコいいと思いました。AIはもはやバズワードではなく将来は今以上に普及する技術なので、数学的なものにそこまで抵抗感がない人は学ぶ価値があると思います。

ただ、やるならば独学でやらない方がいいかもしれません。僕みたいに挫折する可能性が上がってしまうので…

最初はスクールとかコースでわからないことを聞きながら基礎を固めた方が挫折率も下げられるし時間効率もいいと思います。もちろん初期投資はかかりますが、中途半端に独学して挫折するよりは、トータルではその方がペイすると思います。

今はオンラインで勉強できるスクールもあるので気になった方はチェックしてみてください。

こんな方にはJavaがオススメ

一方でこんな方にはJavaをオススメしたいと思います。

  • 企業のシステム構築や保守など手堅く稼げるスキルを身につけたい人
  • 覚えたスキルを長く使って活かしたい人
  • 本格派のオブジェクト指向言語をマスターしたい人

普通のソフトウェア開発者であればJavaの方が求人も多く、しかも大企業や金融機関でのシステム開発も多いため、収入面でも伸びしろはあるかもしれません。シニア開発者、シニアアーキテクトと、エンジニアの専門職のまま高給を手にするキャリアパスもあると思います。

さらにJavaをマスターしたら、別の言語の習得は比較的スムーズにできるようになりますし、サーバーサイドの開発に携わるとネットワークやデータベース、セキュリティといった幅広い分野の知識も身につくので、Java以外のウェブ開発の仕事に移行する時にも役立ちます。

また数が多いJavaの求人を選択肢に入れつつ、ノマドなど柔軟な働き方を求めてウェブ開発のフリーランスをやったりとマルチスキルでつぶしが効くエンジニアとして自分のライフスタイルを模索することも十分現実的です。

とはいえ、Javaの難点は最初のとっかかりの悪さにあります。Javaはなんでもできる上にフレームワークの種類も豊富すぎて、逆にどこから手をつけたらいいか分からなくなってしまいます。

僕はJavaを仕事中に独学で覚えたのですが(それまではJavaScriptっぽいものをいじったりしていました)、仕事の必要に迫られて勉強していたので、知識はかなり偏っていたのと、知識不足のために恥もかきましたし、ミスをリカバリーするために相当な時間を費やしました。

Javaは書籍やオンラインで無料でアクセスできるリソースも豊富ですが、効果的な教材や課題を取捨選択するのは初学者のうちは困難です。そのため、Javaに関しても初期段階ではヘルプを受けつつ一歩ずつ前に進めるプログラミングスクールなどの利用を検討するといいかもしれません。

blank
Javaがオワコンではなく学ぶ価値がある8つの理由

Javaというプログラミング言語は常に人気ランキングの上位にいるのに、IT業界で働いている人から 「いまさらJavaなんてやめた方がいいよ」 なんて意見を耳にしたかもしれません。 僕は外資系のIT企業 ...

続きを見る

blank
最速でJavaエンジニアになるためのロードマップ

以前、Javaはまだまだ学ぶ価値があるプログラミング言語だと申し上げました。 しかしどこから手をつけたらわからないという方も多いと思うので、今回は僕自身の経験に基づいた、最速でJavaのエンジニアにな ...

続きを見る

-Computer

Copyright© dawaan , 2020 All Rights Reserved.