エンジニアと言う特殊な才能をもっと活かせないものかと副業を考える方は多くいらっしゃいます。 副業をすることにより単純な収入アップはもちろんのこと、スキルアップをすることも出来ますので非常に有意義な時間となることでしょう。 […]
Javaエンジニア入門
私は現在、新卒3年目でWeb系の自社パッケージ開発の会社で働いております。
大学時代は数学を専攻しており、プログラミングはかじる程度でした。
今回はそんな私がシステム系の会社に入って実際にやっている事や感じた事を書きたいと思います。
【見出し①】not情報系学生からJavaシステムエンジニアへ
私は就活時に早々に内定を決めて、大学4年から内定者インターンとして働いておりました。
その時に初めてJavaを始めWeb系のHTML,CSS,javascript,SQLなどを触りました。
最初の頃は既存パッケージの簡単な不具合修正やら簡単な新規機能の追加などをおこなっておりました。
このタイミングの所感としては、簡単な修正だったということもあり、JavaにしてもCなどの言語とかとそこまで大差ないイメージでした。
基本的にはプログラミングの基本的な文法のものは大差ないです。
プログラミング未経験の方はSEの世界に来る前に簡単なプログラムを書いてみるといいと思います。
しばらくして大学4年の秋頃に少し大きめの新機能追加の案件をいただき、要件定義や画面設計を合わせて行うようになりました。
この案件は当時私と同じ代で内定者バイトに来ていた方と二人でのプロジェクトでした。
機能としてはとあるシートに情報を入力する際に関連するシートも同時に登録できるように簡単なフォームを表示させ、一括で登録できるようにするというものでした。
その頃になってくるとだんだんとクラスを意識する必要が出てきて、やっとオブジェクト指向っぽいようなものになってきました。
この頃からのJavaに対するイメージとして静的型付け言語+オブジェクト指向と言うイメージがすごくあります。
実際に部品としての独立性や再利用性に関してすごく意識する必要があり、それは学生の頃に個人的にプログラミングしていた時とは大きな違いに感じました。
スクリプト言語をメインでおこなっている方からするとこの静的型付けと言うのがわずらわしく感じる部分があるかと思います。
それに関してはどちらの方が好きかと言う好みもあるかと思いますが、最初に型を決める事によって他の人との認識齟齬やコーディングのミスを減らせるようになるのかなと思います。
実際に入社して冬頃からプロジェクトリーダーをまかされるようになり、
要件定義や詳細なクラス設計をよく行うようになり、会議や他の部署の方と話す機会が圧倒的に増えました。
また、プロジェクトで難しい問題にぶち当たった時のトラブルシューター的なとこも担うようになりました。
この際に感じたのは良くも悪くもJavaに関する情報やツールはたくさんあると言う事です。
実際にあてになるものとならないものがありますが、JavaDoc(Javaの公式ドキュメント)を始め、エラーを検索するとだいたい似たようなことをしようとしている人の記事を見つけることが出来ます。
実際に私もプロジェクト内で解決できる人が誰もいない時にその原因を検索していった結果ネット上で同じ問題に苦しんでいるケースを見つけたことも多々あります。
また、パフォーマンスチューニングに関してもプロファイルできるものがJavaの開発ツールの中に組み込まれており、簡単にプロファイルすることができます。
【見出し②】仕事の環境
これは会社によるところが大きいと思います。
私のところは比較的若い人が多いですが、システム的には15年ほど拡張を続けているモンスターパッケージです。
プロジェクトは1プロジェクト1~6人程度で納期は短いものは1ヶ月、長いものでも4ヶ月程度のものが多いです。(時には1年規模のものもあります。)
定時は8:30-17:00ですが、見込み残業が2時間で、実際にはそれよりも多くなることの方が多いです。
ここに関しては最近危機感が高まってきたようで、色々な施策が打たれるようになってきました。
私のところは割と周りに聞きやすい環境のため、そこそこ明るいですが、他のシステム系の人の話を聴くと質問できる雰囲気でない会社もあるようなので、そこは会社を見てみるといいと思います。
【見出し③】仕事の感想
仕事をしてみて、実際に技術的な面で悩むことが多かったり、実際にはどのように書いた方がいいのか悩むことも多かったです。
特に特徴の違う言語をやっていてJavaに移ろうを言う方はその差に苦しんだり、今までの職場のフローと異なる環境になると言うところに戸惑うことが多いのかなと思います。
初めてエンジニアの世界に入る方にとってはプログラミングの基本を学ぶ上でJavaから入るのは悪くないと思います。実際にJavaで使われているオブジェクト指向という考え方は今のほとんどのプログラミング言語の礎になっている考え方であり、Javaはその中でもダントツで利用されている言語になります。
Javaのプロジェクトを経験したのちにPHPのプロジェクトにも参画しましたが、実際にあまり困るところもなく、同じような感覚でプログラミングできました。(そこまで深いところは触っていないからかもしれませんが。。。)