- PR -

Java初心者の興味どころ

投稿者投稿内容
YOU@IT
ぬし
会議室デビュー日: 2002/03/29
投稿数: 284
お住まい・勤務地: 大阪
投稿日時: 2004-01-27 21:24

お世話様です。

少し気になっているのですが、Javaエンジニア(特に初心者の方)の
興味どころがすこしずれているような気がしています。

最近は本当にStrutsに関する話題が多いですが、ちょっと学習する
順番が違うような気がするんですよね。

昨今のJava...特にWeb開発では、Javaの言語的スキルも去ることながら
オブジェクト指向(OO)の知識、UML等のモデリング技法、開発プロセス...等、
非常に多くの事柄を同時並行的に学習しなければならなくなっている
と感じています。

さらに、これらの知識は独立しているわけではなく、互いに相互関連している
と思いますので、なおさら学習は難しいと思います。

私の場合は、
コード:

Java(非Web) : -----+--+-------------------------------->
| |
Java(Web) : +----------------------------------->
|
パターン : +-+--+--------------------------->
| |
OO : +-------+---------------------->
| |
フレームワーク : +--------------------------->
|
モデリング : +-+-------------------->
|
開発プロセス : +-------------------->


のような感じで学習してきました。
# 図がわかりにくくてすみません。あとカテゴリ分けも私の学習単位ですので
# 一般的な分類とは違っていると思います。

要は、Javaの基礎からはじめて、パターンを知り、そこからOOの有効性を実感し、
フレームワーク、それらを設計するスキル、開発プロセス...
と言う風に興味・学習の対象が広がってきたと言う事なんです。

さらに言えばこういった学習の"プロセス"を踏まなければ、その本質的な部分や
必要性を認識できないと思うので、やはり応用力が無いような状態になるのではと。

で、これ↑が正解と言うつもりは全くないですが、最近はいきなり
パターンやフレームワークから学習を始める方が多くて、それ以前の
基本的な土台ができあがっていないのではないか、と感じるのです。

# 例えば現場でも、スタックトレースの見方を知らずにWeb開発している
# エンジニアがいたりするわけで...どう学習したらそうなるのかと
# 疑問に思ったこともあります。

そうなっている原因として、私が思うには、

1.エンジニアの学習期間の短縮化
 ここ3〜4年でJava...特にWeb...の開発案件が爆発的に増えたと思うのですが、
 それにJavaエンジニアの数が追いつかない、と言うのは良く言われていました。
 最近ではエンジニアの数も増えて以前のようなことを聞くことも少なくなりましたが、
 逆に言えば、この短期間でエンジニアが相当数増えたわけですよね。

 そしてこの期間にJavaをはじめた人の場合、既に世間ではServlet/JSPが全盛期な
 わけで、Javaの言語的基礎を学ぶ時間がなく、いきなりServlet/JSPから入った
 人も少なくないと思います。

 # 私の場合はJavaを始めた頃はJ2SE1.2が出たばかりで、まだそれほど
 # J2EEは盛り上がっていませんでした(私が知らなかっただけかもしれませんが...)
 # ちょうどJavaが発展しはじめるのと同じ時期にJavaを始めたんですよね...
 # 今になって思えばいいタイミングでした。

 さらにこの1〜2年でデザインパターンやフレームワークと言った知識が求められる
 ようになってきて、今Javaをはじめる人は相当ハイレベルなところから学習を
 開始しているのではないか、と思います。

2.情報の種類
 最近のJavaに関連する情報の種類が、かなりハイレベルなことばかりになっている
 ように思います。

 書店に行っても本棚の目立つところにあるのは、Jakarta...Struts...Eclipse...と
 言った本ばかりですし、Webで公開されている情報もそれらに傾向しがちです。
 これから始めようとする人の目に付くのはそう言った情報が圧倒的に多いように思います。
 つまり、これから始めようとする人と、その時の情報の種類との格差が
 どんどん開いていっているような気がします。

 こうなってくると、それに至るまでのプロセスが無いので、何故それが必要なのかと
 言う動機付けが無かったり、そもそも何なのかと言う本質を知ることなく、
 使い方だけ覚えたり...という事になってくるように思います。

...です。
他にも色々あると思いますが、特に感じているのはこんなところです。

と、まとまりのない文章になってしまいましたが、Javaを取り巻く環境の発展は
めまぐるしくて、今から始めようとする人(私自信もまだまだですけど(^^:wink:は
本当にしっかり学習していかないと、単に表面的な部分に触れただけで
流行に流されて終わってしまうような気がするのですが...皆様はどのように感じておられますか?

# 図を治しました



[ メッセージ編集済み 編集者: YOU@IT 編集日時 2004-01-27 21:29 ]
ひでっぷ
会議室デビュー日: 2003/12/09
投稿数: 17
投稿日時: 2004-01-27 22:01
はじめまして。いつも会議室を覗くだけでしたが、まさしく呼ばれたような気がしましたので(笑)投稿をしようと思います。みなさんよろしくお願いします。

私は、現在の会社で、アセンブラ→組込C→VB→C++とやってきて
4月からは新しい会社に転職します。
転職先はJavaをメインに使用していますので、まさしくこれから何を勉強していくべきなのかが気になるところです。

さて、私なりの今までの興味どころですが、
会社に入って最初がボードの組込プログラムだったからかもしれませんが、JavaでもWEBより非WEB系に興味があります。
(VBやC++でしていた仕事もPCで機械を制御・・・って仕事がほとんどでしたね。)

また、言語にしばられるというのが非常に危険だと考えています。
(今の会社の他部署では旧VBしかできない技術者がなんと多いことか・・・)
設計がしっかりしていれば後はどの言語を使っても"それほど"大差はないとも考えますので、現在はOO及びそれを表記するためのUMLを勉強中です。
(これは今の環境C++でもOJTしていける技術ですからね。)
同じような理由でJavaに限らずOOPLならば有効であろうデザインパターンも徐々にですが勉強していきたいですね。

WEB(というか次の会社のシステムだとイントラネットでの使用がほとんどになると思いますが)は今まで経験なかったことですので、これから徐々に勉強していきたいと思います。

整理しますと
1.OO 2.UML 3.デザインパターン 3.Java(非WEB系) 4.Java(WEB)
ってところです。

文章がまとまってなくてすいません。
しかし、勉強したいこと(しなければいけないこと)が多くて気が遠くなりそうです(笑)






[ メッセージ編集済み 編集者: ひでっぷ 編集日時 2004-01-27 22:02 ]
未記入
ぬし
会議室デビュー日: 2002/03/28
投稿数: 255
投稿日時: 2004-01-27 23:33
>設計がしっかりしていれば後はどの言語を使っても"それほど"大差はないとも考えます
>ので、現在はOO及びそれを表記するためのUMLを勉強中です。
いや,全然違います.

似たような言語同士ならいざしらず,性質の異なる言語ではその設計やイディオムも
また異なったものになります.CとJavaを比べれば一目瞭然.RubyとJavaでも当然
異なるでしょうね.LISPになるとお手上げです.

>同じような理由でJavaに限らずOOPLならば有効であろうデザインパターンも徐々に
>ですが勉強していきたいですね。
デザインパターンは知っておいて損はないと思います.JavaだろうとRubyだろうと
通用する知識ではありますから.ただし,いくらなんでも非OO言語で使うのは
さすがに厳しいものがあるでしょう.
ひでっぷ
会議室デビュー日: 2003/12/09
投稿数: 17
投稿日時: 2004-01-28 00:01
悪夢を統べるものさん。さっそくのご返答ありがとうございます。

引用:

>設計がしっかりしていれば後はどの言語を使っても"それほど"大差はないとも考えます
>ので、現在はOO及びそれを表記するためのUMLを勉強中です。
いや,全然違います.

似たような言語同士ならいざしらず,性質の異なる言語ではその設計やイディオムも
また異なったものになります.CとJavaを比べれば一目瞭然.RubyとJavaでも当然
異なるでしょうね.LISPになるとお手上げです.



すいません。言葉たらずでした。OO言語を使うという前提であれば、という言葉が抜けていました。
でも、私が知ってるOO言語ってしょせんC++とJavaだけなんですよね・・・。
RubyやLISPを全く知らないので恐縮ですが、同じOO言語でもやはり設計は大きく変わるものでしょうか。

(旧VBでオブジェクト指向プログラミング(もどき?)をしていました。がC++をやったりオブジェクト指向というものを勉強していくうちに似て非なるものだということを痛感しました・・・。)

るぱん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 1370
投稿日時: 2004-01-28 09:41
るぱんです。

デザインパターンで一言。
旧VBの関数に関数のラッパー。。。極悪ですね。(笑)

[ メッセージ編集済み 編集者: るぱん 編集日時 2004-01-28 09:43 ]
びしばし
大ベテラン
会議室デビュー日: 2002/03/13
投稿数: 181
投稿日時: 2004-01-28 14:15
YOU@IT さんの言われる、「初心者がいきなり理想を追い求める」というのは何も Java プログラミングに限った話ではありませんね。
趣味のプログラマ(言語も何も知らない初心者)はよくゲームを作りたがります。

別の分野で「松井やイチローにあこがれて野球選手になろうとする」「ベッカムやロベカルにあこがれてサッカー選手になろうとする」という話であれば、自分の現在の実力から到達点への道のりがおぼろげにでも見える(まずは甲子園や国立を目指し、プロに入るとか)のでしょうが、
プログラムの世界ではそのような道しるべとなる情報が少ないせいか「何をやればいいかわからない」状態によく陥ってしまうようです。それでも「よくわからないけどなんとなくできてしまった」ということも多く、

># 例えば現場でも、スタックトレースの見方を知らずにWeb開発している
># エンジニアがいたりするわけで...どう学習したらそうなるのかと
># 疑問に思ったこともあります。

という現象が生じてしまうのだと思います。「草野球レベルのシロウトがメジャー級のプロと同じグラウンドで戦う」ようなものです。がそのレベル差を見分けることが難しく、えてして「とりあえず大丈夫そうだ」ということで草野球レベルでも採用されてしまうことがあるようです(具体的には言及しませんが...)。


私には「今の技術者全体のレベルを底上げさせるには」「有能な新人を作るには」という大それた問題のいい解決案が浮かびませんが、とりあえず自分の技術レベルを上げて低レベルの技術者との明確な違いを見せつけられるようにしたいと常々思っています。

ちなみに「要求レベルが年々(日々)高くなる」のはどこの分野でも言えることだと思っています。相対性理論は高校物理でも扱う事柄ですがアインシュタイン以前には当然カリキュラムになかったわけで... これは例えが極端ですか ? (^_^;
aw11
会議室デビュー日: 2003/05/16
投稿数: 3
お住まい・勤務地: 岐阜
投稿日時: 2004-01-28 14:20
引用:

YOU@ITさんの書き込み (2004-01-27 21:24) より:

最近は本当にStrutsに関する話題が多いですが、ちょっと学習する
順番が違うような気がするんですよね。



耳が痛いです。
C++(MFC),VB,Delphi,PHPで開発を行ってきて
突然Struts+CORBAで動くパッケージのカスタマイズをやることになってしまい
右往左往しています。

StrutsはPHPでMVC(ViewにSmarty)をやっていたのでわかるのですが
ServletだのEJBだのっていう話になると途端についていけなくなってしまいます。

本当は土台からの勉強が必要なのですが時間的な問題から
JavaのクラスをPHPから呼んでJSTLのC:importで表示させるという荒業で
逃げ回ってます。

YOU@ITさんは「Java(非Web)」から始めたということですが、
皆様はどこから始められたのでしょうか?また、どこから始めるべきでしょうか?
これからJavaへ移行するならこれは読んでおけ。っていう書籍なども
紹介いただければ幸いです。

#最近の初心者向けの書籍ってJava=JSPみたいな感じで単純なWebアプリが
#付属してるものが多い気がするのは私だけでしょうか?
ぽん
大ベテラン
会議室デビュー日: 2003/05/13
投稿数: 157
投稿日時: 2004-01-28 14:52
引用:

びしばしさんの書き込み (2004-01-28 14:15) より:

YOU@IT さんの言われる、「初心者がいきなり理想を追い求める」というのは何も Java プログラミングに限った話ではありませんね。
趣味のプログラマ(言語も何も知らない初心者)はよくゲームを作りたがります。


作りたがりますね、私もそうでした。
(一番初めは鬼ごっこ作ったな・・・)

引用:

別の分野で「松井やイチローにあこがれて野球選手になろうとする」「ベッカムやロベカルにあこがれてサッカー選手になろうとする」という話であれば、自分の現在の実力から到達点への道のりがおぼろげにでも見える(まずは甲子園や国立を目指し、プロに入るとか)のでしょうが、
プログラムの世界ではそのような道しるべとなる情報が少ないせいか「何をやればいいかわからない」状態によく陥ってしまうようです。それでも「よくわからないけどなんとなくできてしまった」ということも多く、


これは(きちんとした)指導者がいれば解決する問題だと思っています。
(現状では教えられる人がいない(少数)ですからね...)

引用:

># 例えば現場でも、スタックトレースの見方を知らずにWeb開発している
># エンジニアがいたりするわけで...どう学習したらそうなるのかと
># 疑問に思ったこともあります。
という現象が生じてしまうのだと思います。「草野球レベルのシロウトがメジャー級のプロと同じグラウンドで戦う」ようなものです。がそのレベル差を見分けることが難しく、えてして「とりあえず大丈夫そうだ」ということで草野球レベルでも採用されてしまうことがあるようです(具体的には言及しませんが...)。


ソースを見るとか技術的な話をするとかすれば分かると思うので、
採用担当の人の力量しだいだと思います。
(草野球の人に、草野球級かメジャー級かの判断が出来ないという事かと)

引用:

私には「今の技術者全体のレベルを底上げさせるには」「有能な新人を作るには」という大それた問題のいい解決案が浮かびませんが、とりあえず自分の技術レベルを上げて低レベルの技術者との明確な違いを見せつけられるようにしたいと常々思っています。


あらゆる所(現場・指導者・採用担当)を草野球級の人が占めている現状を変えていけば、
有能な新人を作る事が出来るかもしれませんね
(無理かな... )

[ メッセージ編集済み 編集者: ぽん 編集日時 2004-01-28 14:55 ]

スキルアップ/キャリアアップ(JOB@IT)