Javaエンジニアに求められる事
Javaを用いた開発プロジェクトは、以下の理由から大規模プロジェクトである事が多く、1人で全てを担う事は事はまず無いと言っていいでしょう。
0から1人で全てを行うのではなく、チームで分担して数多くのバッチ処理や画面の開発、業務ロジックの実装などを手分けして実施しますが、人によって全くテイストの違うコードはバグを生みやすく、プロジェクト全体としてもある程度の型にはめた実装が必要になってきます。
Javaは、実行する際にアプリケーションサーバ(Tomcat,GlassFish等)が必要な言語になります。
そのため、Webサーバ+アプリケーションサーバの構成は必須となり、他の言語よりもコストがかかります。
ただ、Webサーバとアプリケーションサーバの責務がカッチリ分かれているため堅牢なシステムを構築可能と言えます。
その為、サーバコストに予算を投資できる規模が大きいプロジェクトである傾向が強いです。
ではJavaエンジニアに本当に必要な事とは何か?
間違いなく言えるのが、「コードリーディング能力」に他なりません。
人のコードを正しく読めないと、誰かのコードを参考にする事もできず自分勝手なコードをただひたすら実装し、ソースコードレビューに耐えられないものとなってしまいます。
負債を入れてしまうと、その先で大きなリスクとなりうる為、負債を入れない為にも人のコードはきちんと読んで理解できる実力が必要不可欠になります。
筆者は駆け出しの時に下記の書籍を何十回も読んで良いコードと悪いコードの違いから理解していきました。
フレームワークを使い倒す
Javaのフレームワークが何個あるか知ってますか?
消滅してしまったものもありますが、20〜30は存在します。
筆者はSpring、Struts、SAStruts、CFramework、PlayFramework、Seesaa2等を利用した経験がありますが、導入後の使い勝手はどれも大差ありませんでした。
SpringやSeesaa2等はアノテーションを独自拡張してコード量を減らせたり、
SpringBoot等は導入時にコマンドベースでWebアプリケーションやバッチ、
APIのテンプレートが自動生成出来たり、ORマッパーが初回から梱包されていたりと、
それぞれにメリットは存在します。
昨今の流行りもありますが、今後も踏まえるとSpringBootをしっかり使い倒すようになる事をお勧めします。
パフォーマンスを意識する
エンジニアはただコーディングができれば良いというものではありません。
なるべく処理の時間が短くなる(レスポンスタイムを少なくする)事を考えたいです。
大手の有名なシステムを開発する場合は、同一時間帯に自分が書いたコードが大量に流れることもあり得ます。
筆者は最低限以下のことに注意をする事をお勧めします。


コメント