現場で求められるJavaプログラマ力(前編)/エンジニア

Javaプログラマは、大きくはサーバサイドプログラマとAndroidスマートフォンアプリプログラマに分かれます。また、Javaは、Oracle社が管理しながらも、Javaコミュニティのものであるという、一種独特な環境です。
このような状況からJavaプログラマには、それぞれのプロジェクトの現場での対応力が求められます。
本記事では、実際のプロジェクトの現場でJavaプログラマに求められる能力について、記載いたします。多くの場合、Javaプログラマに限らず他の言語でも共通することです。Java独特の部分については、文中で明示します。

1. コミュニケーション能力

プロジェクトには、通常多くのアクタが存在します。Javaプログラマは、それらの人たちと良好な関係を保つべきです。近しい距離の人とは良好でも、他社の方に厳しく対応してしまってギクシャクする人もいます。Javaプログラマは、まずプロとして、冷静に良好な関係をアクタと維持するべきです。
Javaプログラマに必要なコミュニケーション能力

A) 対顧客能力

顧客は、費用を負担していただく方々ですので、常に「お客様」とお呼びするべきです。メールやドキュメントでは特に気をつけましょう。
Javaプログラマは、派遣の場合お客様の作業場で業務をこなし、請負の場合自社で開発し納品するのが通常です。いわゆるSEとしての立場です。
もう一つの形としては、Java製品を開発し、お客様に購入していただく場合です。いわゆる狭義の「プログラマ」です。例えば、某社のJava製Webアプリケーションサーバソフトウェアを社員として開発するプログラマです。

SEのJavaプログラマは、頻繁にお客様と接触します。通常は、情報システム部門の方です。少し大きなプロジェクトですと、統括部門(例えば親会社)の方と打ち合わせすることもあります。相手は、Javaに関しては素人かもしれませんし、転職したハイスキルJavaプログラマかもしれません。基本、Javaに関して初歩的なことで答えられないようでは務まりません。最低限、メカニズムやJavaプログラムの開発指針は理解しておきましょう。

もっとも重要なのは、トラブル時です。後述のトラブルシューティング能力を発揮して、原因を突き止めるますが、そのあと、その原因をつまびらかに論理的に説明する資料を作成し、実際にお客様に説明する、またはマネージャ(上司)に説明するのはJavaプログラマの責任です。
資料は、上司につくり直されることもありますが。原因がたとえ開発したプログラムではなく、フレームワークや他社製品、例えばJavaVMにあってもです。
障害が大きいほど、お客様の追求は厳しいので、論理的に、かつ証拠を持って説明できるようにしましょう。

B) 対サポート部門

例えば、Oracleのデータベース部門の技術サポート部署や、Webアプリケーションサーバの開発部門など、JavaSE/EE以外の製品のサポート部門のことです。

Javaプログラマは、これらの製品の提供する機能を利用し、顧客が求めるソリューションを構築します。SEの方は、それらの製品群の使い方をマニュアルや教育等で理解し、トラブル時には迅速に情報を集めて問い合わせる(エスカレーション)しなければなりません。

Javaに限らずですが、対サポート部門との関係は重要です。緊急の場合には、緊迫感を持って、かつ状況は正確にまとめる必要があります。Javaアプリケーションで起きる他製品とのトラブルの代表はデータベースでしょう。トランザクションがらみ多いです。一般的なログの収集という作業もそうですが、JDBCのようにJavaならではの部分もありますので、正確に情報をまとめましょう。

C) 対Oracle(Javaサポート部門)または代理店

困ったことにJavaSE/EEやJavaVMにもバグはあります。Oracleまたは代理店企業とJavaの技術サポート契約を結んでいる場合には、指定されたフォーマットに従い、問い合わせを行える知識を持ってください。指定された情報に漏れがあると、問い合わせ先からの回答が遅れる場合があります。

対サポート部門とのコミュニケーションの場合も同じですが、緊急性を相手に理解してもらうことは大変重要です。
Javaサーバサイドアプリケーションは、大規模システムでも利用されており、そこでトラブルが発生した場合には、即座の復旧と、迅速な原因究明が必要です。簡単な問題ではないと判断した場合には、上司、さらに上位の上司などを通じて、技術サポート契約の枠を超えた支援を依頼することも必要となります。その場合に一番事情を知り、説明するべきは、Javaプログラマですので、対人説明力をつけておきましょう。

2. トラブルシューティング能力

Javaプログラマに必要なトラブルシューティング能力
リリース(またはカットオフ)後であれば、超迅速に、開発中であれば優先順位をつけて、トラブルシュートを行います。
Javaの場合、まずOracleのJavaドキュメントにある” Java Platform, Standard Editionトラブルシューティング・ガイド”,
URL: https://docs.oracle.com/javase/jp/8/docs/technotes/guides/troubleshoot/
を読んでおきましょう。
開発したJavaアプリケーション及びJavaVMに関する問題であれば、ガイドの示す範囲で情報を採取することができます。

よくあるJavaアプリケーションのトラブルは、メモリリークとIOエラーです。メモリリークは、OutOfMemoryまで行かない場合もありますので、ロングランテスト等でリークの確認を怠らないようにしましょう。
他社のJava製品やデータベースを使用している場合には、最低限のログの見方を理解しておきましょう。必ずと言ってよいほど、「ログを送ってください」と言われますので。

トラブルが起きた時、すぐに原因がわからない場合には、原因の範囲を拡大して考えることが必要です。例えば、Javaアプリケーションが正常動作しない場合、Javaコンパイラにバグがあるとは普通思いませんが、実際に過去にあります。

次回、現場で求められるJavaプログラマ力(後編)ではのJavaプログラマに求められる3つの”力”をご紹介します。
お楽しみに!

キャリアの幅を広げるなら、改めてプログラミングを学ぶのも

キャリアの幅を広げることを考えたら、改めてプログラミングを学んでみるのもおすすめです。
せっかく学ぶのであれば、仕事に繋がるスキルを身につけられる方法を選ぶのがベターです。

独学で学ぶ方法もありますが、全く経験がない場合はつまづいてしまう人も多いものです。
仕事につなげたいと考えている場合には、仕事として使えるレベルのスキルに近づけなければなりません。
現役エンジニアが講師を務めるマンツーマンレッスンなら、わからないところは質問できるだけでなく、学習内容をチェックしてもらえるため効率的にプログラミングを学ぶことができます。

仕事をしながら学ぶとなると、時間の確保が難しいですが、オンライン講座ならば通学の必要がなく、仕事をしながらでも隙間時間で進めやすい内容になっています。

そのカリキュラムの内容と教師のスキルで定評のある「コードキャンプ」が、ITビジネスマッチングを運営する「アサインナビ」と共同で開発したプログラムなら、無駄なくプログラミングを学べると評判です。
この共同プログラムは、98,000円という低価格でマンツーマンレッスンが受けられます。

▼▼詳しくはこちら▼▼



日本最大級のITビジネスコミュニティ アサインナビ