No Programming, No Life

プログラミング関連の話題や雑記

Re:あなたの履歴書を向こう5年間戦えるものにするために--今後必要な開発者スキル10選

あなたの履歴書を向こう5年間戦えるものにするために--今後必要な開発者スキル10選 - builder

上記記事で紹介されているスキル10選について、私の現状がどうなってるのかメモってみる。

1: 「ビッグスリー」の1つを学ぶ(.NET、JavaPHP

ほとんどの開発者は少なくとも開発システムのビッグスリー、すなわち.NET(VB.NETあるいはC#)、JavaPHPのうち少なくとも1つを近い将来に知っておく必要がある。

こいつに関しては、Javaをメインで知ってるのでよしとするか。
一応.NETも知ってるといえば知ってるが、本格的に開発したことはナイ。どうも食わず嫌い。

2: リッチインターネットアプリケーション(RIA)

RIAってのはRich Internet Applicationsのことですね。*1
HTMLよりももっとリッチなGUI環境をウェブ上で提供するのが目的ってことでいいのでしょうか。
記事によるとFlashFlexAIRJavaFxSilverlightHTML5 なんてキーワードが見受けられました。
JavaFxは時間があったらちょっと触ってみたいなぁと思っていたところです。

3: ウェブ開発

向こう5年間で成功するには、JavaScriptCSS、HTMLを学んでおくのがいいだろう。

これは関してはスキルとしては良さそうなんですが、最近どれも触ってないし、知識がさび付いてきてるな。

4: ウェブサービス

RESTかSOAPか?JSONXMLか?選択肢や答えはプロジェクトによって変わるが、開発者でありながら(あるいはウェブアプリケーションを作ろうとして)、ウェブサービスを利用せず、ウェブサービスを作ることもせずにいることは、だんだん難しくなってきている。

この辺が最先端分野ですかねぇ。
REST、SOAPJSONXML
データをどうやって受け渡すか、どうやって連携させるか。

5: ソフトスキル

この項、言いたいことがよくわからなかったんですが、コミュニケーションスキルを磨けってことでしょうか?

6: 動的プログラミング言語、あるいは関数プログラミング言語を1つ習得する

RubyPython、F#、Groovyといった言語は主流とは言えないが、それらの言語のアイデアは主流だ。例えば、Microsoftの.NET のLINQシステムは、関数プログラミング技術の直接的な子孫だ。RubyPythonはどちらも、RailsフレームワークSilverlight のおかげで、一部の領域ではかなり流行している。これらの言語の1つを学んでおくことには、履歴書の体裁をよくする以上の意味がある。あなたの視野を広げてくれるのだ。私が会ったことのある一流の開発者はみな、新しい考え方を学ぶために、動的プログラミング言語関数プログラミング言語を少なくとも1つ学ぶことを勧めており、私の個人的な経験からも、これは確かに有効だと自信を持って言える。

ちょうど私は今ココな感じ。Groovyを中心に関数プログラミング言語をサクっと楽しみながら習得したいなと思っている。

7: アジャイル開発手法

アジャイル開発の背後にあるアイデアは、定義もよくなり、表現もよくなった。多くの開発会社はアジャイルを導入しているか、アジャイル開発の概念実証実験を行っている。アジャイル開発はプロジェクトの失敗に対する特効薬とは言えないが、確かに多くのプロジェクトでその位置を確保している。アジャイル開発環境についての理解と、アジャイルを利用して成功した業績がある開発者に対する需要は、今後数年間でますます高まるだろう。

これもぜひアジャイりたいんですけどね、なかなかこちらではまだ決められないもので。

8: 専門知識

価値のある形で貢献できるということを意味している。アジャイル開発では、「今からなら、この機能は比較的簡単に追加することができて、これには大きな価値があります」あるいは「その要件は、ログからわかっている利用パターンには合いませんね」と言える開発者は非常に重宝される。

って指摘できるように専門知識を身につけなさいってことでしょうか。

9: 開発の「衛生学」

開発者は、ソースコード管理環境にコードをチェックイン、チェックアウトする方法や、テスト環境を構築するためにVMシステムを使う方法以上のことを知る必要がある。開発者は、確実にチームと適切な協力を行うのに必要な、衛生状態を保つための厳格な習慣を持つ必要がある。個人のUSBメモリに何でも入れておいたり、作業項目に対応する変更履歴を文書化しないような「コードカウボーイ」は、伝統的な手法をとる開発会社では歓迎されないし、チームメンバー間の緊密な協力関係に依存しているアジャイル開発環境では、さらに嫌われる。

コードカウボーイってなんでしょう?と思って調べてみた。

コードカーボーイの本能は静止不可能。大抵は凄いプログラマで、通常の2〜3倍の速度でコードが書ける。ただ、テストやチェックが大嫌い。

コードカウボーイのコードはスパゲッティ状態。生成速度に対して最適化した書き方をしたから。

コードカウボーイを締め切りが最重要であるプロジェクトに放り込めば、プロジェクトは期限内に終わる。コードカウボーイは忍者のうるさいバージョンであり、目の前にあるものをなぎ倒しながら突進していく。

403 Forbidden

なるほどね。ここで言っている「衛生学」っていうのは、開発はチームプレイでやれってことを言いたいのかな。

10: モバイル開発

1990年代の終わりに、ウェブ開発は主流として認められるようになり、多くの分野で従来のデスクトップアプリケーションを隅に追いやり始めた。2008年には、モバイル開発が軌道に乗り始めており、次の5年間にはますます重要なものになるだろう。

市場としては熱いでしょうね。

私的まとめ

  • 食わず嫌いの.NETなども暇を見て試してみる。
  • JavaFxも暇を見て試してみる。
  • 動的言語の勉強を続行する(Groovyを中心に関数型言語へ)。
  • 仕事環境はこちらで決められない部分が今のところあるのでウェブ開発とかRIA系とかやりたいよ!というのをさりげなく醸し出しておく。もちろん言われたらいつでもできるように準備しておく。

とりあえず、思ったのはこんなもんかな。

*1:こっちのリアじゃない。