- - PR -
Javaのエンジニアを目指すには
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2002-06-30 20:42
"JAVAエンジニア"の定義について私個人の見解を書きます。
現状、とくにサーバーサイドにおいてJAVA標準のAPIのみで開発が行われることは ほとんどなくて、何らかのフレームワークが使用されています。 JAVAを開発言語として企業内で開発を行っている技術者でもそのレベルはまちまちで ピンからキリまでいるので"JAVAプログラマ"という言葉で一括りにするのはどうかとも 思います。 他人の書いたプログラムを真似るだけの、中身を理解しているか怪しい人 基本はわかっているが、フレームワークをただなんとなく使って開発している人 フレームワークの挙動をわかっていて、中身はわからないが使いこなしている人 JAVAの仕様を理解していて、フレームワークの中身まで(類推して)深く理解している人 JAVAの仕様を理解していて、フレームワークを自力開発できるレベルの人 ※オープンソース製のフレームワークではソースが提供されますが、商用のフレーム ワークでソースが提供されることは希です。 等そのレベルは様々です。 "JAVAの仕様を理解していて、フレームワークの中身まで(類推して)深く理解している人" 以上のレベルであれば、"JAVAエンジニア"と呼んでもいいのではないかと思います。 個人的には"JAVAエンジニア"という響きに魅力を感じます(笑)。 JAVAエンジニアの定義というよりは、企業内での開発に支障のない最低限のJAVAの開発 レベルについて訊かれているような気がするので、それについて書きます。 JAVAの基本的な概念についてはひととおりおぼろげながらでも理解している必要が あります。クラスやオブジェクト、基本構文、例外等についてはきちんと理解して、 実践できる必要があります。継承や多態性については実務を通して深く理解していけば いいと思います(多態性については実務に携わっていても理解しづらいような気がしま す)。 基本的なクラス群(文字列型、基本データ型、可変長配列等)や型の相互変換については ひととおり扱える必要があります。ここらへんは基礎なので、リファレンスなしで すらすらと書けないとだめです。 JAVAに限らないのですが、日経ソフトウェア最新号の"バグを出さない開発技法"に書かれ ているようなことについてはきちんと理解して、実践できる必要があります。 日経ソフトウェアの記事は企業で開発を何年も行ってきた経験者が執筆していて、 初心者向けの記事も多く、非常に明解でわかりやすいので、これから企業内で開発を 行っていこうとする人には非常に有益であると思います。 ※私は日経ソフトウェア編集部の回し者ではありません(笑) クライアントサイドでもサーバーサイドでも必要とされる共通の基礎をきっちりと 固めてからクライアントサイドやサーバーサイド特有の部分を積み上げることをお勧め します。 クライアントサイドやサーバーサイド特有の部分についてはなんらかのフレームワーク やクラス群が既に用意されていると思うので、実務に携わるようになってから勉強しても 遅くはないと思います。理解して使えるほうがいいのは自明です。 "JAVAあるいは一つの言語にこだわるのはどうも"という意見があったので、それに対する 私個人の見解も書きます。 "好きこそ物の上手馴れ"という言葉が示すように"好きでもないものを無理矢理やり 続けた"としても、ものにはなりません。 私自身、"あまり好きでない"VBで開発を行っていたときには深く掘り下げようと言う 気が全く起こらず"エンジニアとしての成長がストップ"していたような気がします。 "漠然と好き"では困りますが"本当に好き"であれば、好きな言語に携わるほうが ものにはなると思います。 1つの言語を極めれば、他の言語が必要になった場合でも即座に即戦力のレベルに 達することが可能であると思います。 反対に"複数の言語を同時進行で勉強する"のは"どっちつかずの中途半端な状態" になることが多いので、やめておいたほうがいいと思います。 [ メッセージ編集済み 編集者: asip 編集日時 2002-06-30 23:23 ] | ||||
|
投稿日時: 2002-06-30 23:12
「Javaエンジニア」別の見方
友人達と話をしてたのですが、"Java Engineer"というのはJavaテクノロジーを開発する人のことではないかと言われました。例えば、JVMや、Javaコンパイラ、Java APIやフレームワークなどなどを開発する技術者がJavaエンジニアではないかと。彼にとって、Javaを使って開発する人はJavaプログラマか、Javaを使いこなせるエンジニアだそうです。ふぅむ、英語圏では違う認識をするようです。 | ||||
|
投稿日時: 2002-06-30 23:55
JAVAエンジニアとは...
問い掛けられたのは言葉の定義のようで言葉の定義でないような... | ||||
|
投稿日時: 2002-07-01 15:54
asipさんこんにちわ。藤村です。詳細な意見ありがとうございました。
私としてはとても参考になりました。 なるほど。「Javaエンジニア」っていう語感、Driveさんも含めて“潜在的に”あこがれに近いものを感じていらっしゃるようですよね。 それから、日経ソフトウエア誌は参考になりますか。編集長の柳田さんは顔見知りの間柄ですから、このスレッドのリンクを送っておきます。多分喜びますよ。
内容のないレスでした。 _________________ アイティメディアの藤村からでした。 | ||||
|
投稿日時: 2002-07-01 17:10
藤村さん,こんにちは
お誘いいただきました,日経ソフトウエア柳田です。 asipさん,おほめいただき恐縮です。 ところで,“Javaエンジニア”とは,の話ですが H2さんが >Cプログラマってよく聞くけど、Cエンジニアってあまり聞かない。なんでだろう? と書かれているのは,いいところを突いているように思いました。 いまJavaの仕事というと,Webがからんでサーバー側でなにかする, ということが多いかと思います。 つまり,Javaの文法や「バグを出さない記法」をわかっているだけでは足りなくて WebプログラミングやDBアクセスなどもひっくるめた知識が求められるので 「Javaプログラマ」ではなく「Javaエンジニア」という言い方が されることが多いのではないでしょうか。 (もちろん,こういったことはJavaでコードを書くかどうかと 本来は関係ないことですが) そういう意味では以前COBOLプログラマやBASICプログラマになることより 現在Javaエンジニアになる(Javaエンジニアとして他者に認めてもらう)ことは しきいが高くなっているんだと思います。 | ||||
|
投稿日時: 2002-07-02 00:10
なるほど、納得しました。もしかしたらJavaが組み込み系などの多彩な分野で有名なことも、「憧れ」としてのステータスをあげてるのかもしれないですね。 > いいところを突いているように思いました。 褒めていただけて嬉しいです。 | ||||
|
投稿日時: 2002-07-02 00:31
藤村です。このスレッド、ずいぶん豪勢になってきましたねぇ。
豆蔵の萩本さんに加えて、日経ソフトウエアの名物編集長柳田さんの登場とは。 これまで触れられてこなかったWeb系システムへの親和性の部分が指摘されました。 これも「Javaができるヤツ」という意味に含まれてきますよね。確かにね。
_________________ アイティメディアの藤村からでした。 | ||||
|
投稿日時: 2002-07-05 15:57
うーん、だんだん内容が深くなっていきますね。
Javaエンジニア、という言葉の話が出てきたので、発言します。 私はフリーの技術屋ですが、専門学校でも"専門学校らしくない現場Java"を 教えています。(雇われ講師ですが…脱落者続出かも…。 (^^;;;) 10年ほど前の大規模プロジェクト(COBOLです…)、といわれるものに携わった立場から 見ると、 Javaは、他の言語に比べ、サーバはもちろん、ミドルウェアの仕組み、ネットワークの 仕組みを知る必要がある言語ですね。 (もちろん、トレースの解析ができるレベルまで、とは言いませんが…。) また、MVCモデルについては、まだオブジェクト指向での設計をしていない頃でしたが ミッション・クリティカルな大規模システムでは、有無を言わさず、今のMVCモデルと 同様な設計になっていました。 設計者・上流工程を押さえる人間としてはフレームワーク理解とオブジェクト指向の理解、 先ほど述べたミドルウェア、ネットワークの内部的な仕組み… それらが無い状態でJavaを扱う事は"結構キケン"と思っています。 折も折、間違った設計でプログラマがOracleを扱った知人のプロジェクトでは、相当な 障害が出て苦しんでいました。(クエリの組み方とDB構造、レスポンスのせめぎ合いです。) プロのエンジニアと言う時に(話は大きくなるかもしれませんが)、できれば自分の技術 レベルを自問して、その社会的な責任をぜひ考えて欲しいと思う私です…。 そういう意味で、大量に"即席エンジニア"を輩出するような方法は取れないなぁ、と。 ここでも社会的な責任を感じる私です。 …プログラマ養成、やSE向け講習なら世間様に許していただけるかもしれませんが。 補足になりますが、そういう意味では、言語がカバーするスケールが他言語とは 違ってJavaは守備範囲が広いです。(例えばCOBOLの頃と比較すると、完全にミドルウェアを 食ってます。) 最近のサーバの汎用機化傾向も一緒に考慮すると、各自の技術レベルに応じて、 プログラマ、設計者を配置する必要があり、コントロールやマネジメントが必要になる、 それを要求する言語だよなぁ…とつくづく思います。 ちょっと大袈裟でしたか??? | ||||
