今年中にプログラマ(中小ソフトハウスなど)への転職を目指してPHPの勉強をしています。
プログラマとして3,4年ほど経験を積んだ後はSierに転職してSE/PMとして働きたいと考えています。
PHPを勉強しているのは転職支援コンサルタントに「いま旬の言語です」と薦められたからですが、
いくつかの企業の求人を見ていると応募条件に「Javaを使った開発」が目立ちます。
将来的にSierで業務系開発SEとして働く事を考えている場合はPHPよりもJavaの習得の方が有利に
なるのでしょうか?
転職前(選考時)と転職成功後の観点から教えて下さい。
よろしくお願い致します。
Java, PHP の初期からの利用者として、またSIerとしての経験からご回答します。
業務系開発といっても幅広いので、まずは、その業務が BtoB(金融、製造など)なのか BtoC(小売、コンシューマ向けWebサービス)なのか絞ってください。両者はビジネスモデルが根本的に違うので、両方同時にこなせる SIer はほとんどありません。BtoC会社とBtoB会社が合併した場合は可能ですが、おそらく事業部は異なるために人事交流は少ないでしょう。
次に、今日の開発では、OSや言語が何であるかということより、どんなフレームワークが使えるかということが重要視されます。
マイクロソフト系であれば .NET、JavaであればEnterprise JavaBeans(EJB)など、PHPであればCakePHPなどがあります。
BtoBの場合、Javaで開発するケースが多いです。
これは、BtoB向けのJavaフレームワークが充実しているためです。
BtoCの場合、PHPやRubyが主流になっています。
これは、BtoC向けのWeb用フレームワークが充実しているためです。
コンサルタントがアドバイスする「いま旬の言語です」というのは的を射た言い方で、つまり、3,4年後には賞味期限が切れる可能性もあるということです。そうなったらPGとしては廃棄されます。
PGからSEにステップアップするには、OS、言語、フレームワークのトレンドにとらわれることなく、業務分析する力が求められます。そのためには、業務のプロである顧客と円滑なコミュニケーションを構築し、顧客からヒアリングする能力も必要です。
まずは、業務をUMLで表現できると良いでしょう。ただ、私は古い人間なので、業務フロー図で表現しています。ここから、使用するビジネスロジック(およびアルゴリズム)とデータ構造を導出するまでが、SEの大きな役割です。
技術的な入門書としては、ちょうど今月号の「日経ソフトウエア」にプログラミングの基本テクニックが特集されていますので、ぜひご一読ください。この雑誌は入門PG向けの特集記事が多いので、参考になると思います。
ええと,SEやPMというのをどう捉えてらっしゃるかによりますが,PHPしか経験がない「SE」「PM」を出してくる会社というのはお目にかかったことがないです(もし来たら帰ってもらいます).Javaのほうはあります.
もしまともにSEとしてシステム設計をしていくのであれば,設計のしっかりした言語(Javaも悪くないと思います)を先に経験したほうが良いと思います.
もちろん,人それぞれの選択ですから,あえてPHPからというのも否定しきれませんが,たとえば下記のURLの「追記」のあたりを一読してからでも遅くはないかと.
http://www.rubyist.net/~matz/20080126.html#p04
なお,選考時ですが「XXの勉強をしました」だけでは,どちらにしろ弱いような気がします.現在,ネットワークエンジニアをされているとのことで,その専門を絡めたプログラミングスキルのアピールの仕方を考えてみてはいかがでしょう.
ご回答ありがとうございます。
大変参考になりました。
業務系開発の場合、Javaの方が多い印象があります。
楽天などはRuby開発者のまつもとゆきひろさんをフェローにしてRubyを押してますね。
http://www.atmarkit.co.jp/news/200705/31/ruby.html
開発人数が少ない開発のときや
業務系じゃないWebの開発の場合に
PHPなどが多い印象があります。
と、言っても業界全体が見えるわけではないので印象でしかいえません。
言語的に言えばやはりJavaの方が大規模向けで業務向け
PHPは小さく早く作ると言った印象が個人的にはあります。
業界全体が見えるわけではないので印象でしかいえませんが、
ひとりのSEとして働いている情報の中ではこんな感じです。
個人的には質問者さんのなりたいものを考えると
Javaを勉強しておいたほうが無難に思います。
ご回答ありがとうございます。
追加質問があるのですが、業務系の場合はJavaEE(servlet,JSP)を使うのでしょうか?
その場合はJavaでウェブアプリケーションを作る練習をすれば良いのでしょうか?
Java Servletは、Javaを用いて、ウェブページのためのHTML文書などを動的に生成するサーバ上で動くプログラム、またはその仕様です。この機能を用いてショッピングサイトやオンラインバンキングなどをはじめとする多種多様な動的なWebサイトが構築されています。
PHPも特にサーバサイドで動作する Web アプリケーションの開発に適した言語です。
なのでWEB開発募集の場合です。
中小であれば、触ることはありますが。
開発といってもいろんな開発職があるので、4年間に培った中で習得された言語なり、ネットワーク技術を生かされる職種を選ばれた方がいいかと。
基本Javaは仕様しない職場はないと思うので無難かと思います。
C++は、最もよく利用される商用のプログラミング言語の1つです。その理解度があればC言語の派生がJAVAなのですんなり入っていけると思います。
ご回答ありがとうございます。
C++、perl、bashは少し触った事はあります。
Javaはコードを見ただけではチンプンカンブンだったので、OOPの基礎から勉強する事にします。
個人的意見をあげておくと,
http://local.joelonsoftware.com/mediawiki/index.php/Java%E3%82%B...
私のささやかな経験から言わせてもらうと、伝統的に大学のコンピュータサイエンスのカリキュラムで教えられているもので、多くの人がうまく理解できないものが2つあった: ポインタと再帰だ。
しかしポインタと再帰の明らかな重要性以上に重要なのは、これらの学習から得られる精神的な柔軟さと、これらを教えている授業からふるい落とされないために必要な精神的態度が、大きなシステムを構築する上で欠かせないということだ。ポインタと再帰には、ある種の推論力、抽象的思考力、そして何よりも問題を同時に複数の抽象レベルで見るという能力が要求される。そしてポインタと再帰を理解できる能力は、優れたプログラマになるための能力と直接的に相関している。
ご回答ありがとうございます。
ご紹介いただいたリンクも面白く読ませていただきました。
Java, PHP の初期からの利用者として、またSIerとしての経験からご回答します。
業務系開発といっても幅広いので、まずは、その業務が BtoB(金融、製造など)なのか BtoC(小売、コンシューマ向けWebサービス)なのか絞ってください。両者はビジネスモデルが根本的に違うので、両方同時にこなせる SIer はほとんどありません。BtoC会社とBtoB会社が合併した場合は可能ですが、おそらく事業部は異なるために人事交流は少ないでしょう。
次に、今日の開発では、OSや言語が何であるかということより、どんなフレームワークが使えるかということが重要視されます。
マイクロソフト系であれば .NET、JavaであればEnterprise JavaBeans(EJB)など、PHPであればCakePHPなどがあります。
BtoBの場合、Javaで開発するケースが多いです。
これは、BtoB向けのJavaフレームワークが充実しているためです。
BtoCの場合、PHPやRubyが主流になっています。
これは、BtoC向けのWeb用フレームワークが充実しているためです。
コンサルタントがアドバイスする「いま旬の言語です」というのは的を射た言い方で、つまり、3,4年後には賞味期限が切れる可能性もあるということです。そうなったらPGとしては廃棄されます。
PGからSEにステップアップするには、OS、言語、フレームワークのトレンドにとらわれることなく、業務分析する力が求められます。そのためには、業務のプロである顧客と円滑なコミュニケーションを構築し、顧客からヒアリングする能力も必要です。
まずは、業務をUMLで表現できると良いでしょう。ただ、私は古い人間なので、業務フロー図で表現しています。ここから、使用するビジネスロジック(およびアルゴリズム)とデータ構造を導出するまでが、SEの大きな役割です。
技術的な入門書としては、ちょうど今月号の「日経ソフトウエア」にプログラミングの基本テクニックが特集されていますので、ぜひご一読ください。この雑誌は入門PG向けの特集記事が多いので、参考になると思います。
大変参考になりました。
ご回答ありがとうございました。
>業務系開発SE
業務系なら、Javaをおさえておいたほうがよいです。
Webから基幹系まで幅広く使われています。
業務経験がない知識にかんしては参考程度で、有利にはなりえません。
ご回答ありがとうございました。
業務知識は全くないので、PGとして数年経験(業務知識、プログラミング)を積んだ後にSEへステップアップしようと考えています。
大変参考になりました。
ご回答ありがとうございました。