Happy New Year 2012年

Happy New Year 2011

ということで、あけましておめでとうございます。


31日から実家に帰り、姉の子供のお守りをしながら、テレビを見ながら2012年を迎えました。

毎年思うんやけど、ダウンタウンの笑ってはいけないを見ても特に面白くないと感じるんやけど。。。
天丼ネタがそんなに好きじゃないのかな?


まぁ、それは置いといて2012年は

成長

の年にします。


それはもういろんな意味で。


自分の技術力もそうですし、人間的にも30を前にいろいろと変わりたいところがあるし。

そうやねんな。
今年29やねんな。

最後の20代の年です。


ということで今年の目標を3つ考えました。

  1. 日常会話ぐらいの英語をしゃべれるようになる。
  2. Mac Book Air を買う。
  3. コーヒーをおいしいと思えるようになる。

です!!

なんやそれ!!

って思うかもしれませんけど、意外と大きなことですよ。
自分にとって。


今年もいろんな勉強会に参加していろんな人に出会って多くの刺激を得たいと思います。
また、自分も誰かに刺激を与えられるような存在になりたいと思います。


ということで2012年もよろしくお願いいたします。

今年もたくさんのイイことがみなさんにありますように。

2012年を前に最後に書きたかったこと。

もうすぐ2011年が終わりますね。

今年は自分にとってどんな年だったかと言うと

変化!!

の年でした。

転職もそうでしたが、今年はいろんな人に出会って、そこでたくさんの刺激を受け、そのたびに自分が変わっていきました。
ほんとに良い1年でした。

2012年はそれらを糧として

成長!!

の年にします。

来年のことや目標については来年また書きます。

っでなぜ今日は何を書きたかったかというと。。。
2011年は自分にとってはすごく良い年だったんですが、そうではない人もいました。
それを今日は書きたかったんです。

少し残念な話です。

今年あるひょんなきっかけで知り合った若いプログラマがいました。
自分もまだまだ若いんですけどね。

彼はとてもやる気があり、技術に対する向上心も見習うべきところがありました。


そんな彼が。。。。



IT業界を去るという決断をしたようです。



ほんとに残念です。




彼の所属する組織は絵に書いたようなソフトウェア現場で、

残業、休日出勤は当たり前、納期前は当たり前のように会社に泊まり込んで仕事をするという環境でした。

また、プロジェクトリーダーはやることが山積みでプロジェクトの管理や部下の管理どころではない。

プロジェクトマネージャーは会社にはほとんどおらず、何をしているかよく分からない。
進捗が遅れていることを知るとメールで罵声を飛ばすだけ・・・

そんな中、チケット駆動開発や自動テスト、自動ビルドなどプロジェクトの改善を提案して何とかしようとしていたのですが、現場の人たちはそれに対して聞く耳を持ってくれなかったようです。

今はやることが山積みでそんなことできない!!
それをして効果があるのか!?

って。

聞いてて涙がでそうになりました。

そんな現状が嫌になったらしく、また転職するにしても今の自分の技術では未熟すぎるので実家に帰り別の仕事をすると決めたようでした。

彼に初めて会ったのが春でこの話を聞いたのが今年の夏でした。
その時に自分は転職活動をしていました。

自分も彼ほどではなかったけど転職前は良く似た組織で、同じようなことをやろうとしていました。でも、根強い文化を変えるのは大変で、そのことをあきらめ転職をすることにしました。
(もちろん転職にはいろいろと理由はありました。)

そんな自分の口から「がんばれ!!」なんて言えなくて、彼の話を聞いてうなずいてあげることしかできませんでした。

それもあり、彼がIT業界を離れてしまった原因の一つが自分にもあったんじゃないかなって思っています。

彼に会うのが1年早かったら何か彼のためにしてあげられたかもしれないし、一緒に頑張ってあげることもできたかもしれないって。。。

優秀で未来あるプログラマをこの業界の人間が追い出してしましました。

何を考えてるんだIT業界!!

って誰に言ったらいいかもわからない言葉を叫びたくなります。


たぶんこのようなことは山ほどあると思うし、この出来事は氷山の一角なのかもしれません。
でもこれを氷山の一角として見て見ぬふりをしていいのかとも思います。

ただ自分には何もできませんが。。。


でも最近よく思うんです。
今この業界は大きく構図を変えようとしています。

昔は大手IT企業が案件受注していました。
それはソフトウェア開発には資金力やリソースがないと難しかったからだと思います。それを持っているのは大手企業です。

そして開発を工程に分け、ソフトウェアを分業化しそれを関連会社、アウトソーシング、オフショアなどをして開発をしていました。
そして業界全体として仕事とお金が回るという仕組みになっていたんだと思います。
なので、上流工程やそれを管理するマネージメント力などが問われて、それをキャリアアップとしているような気がします。
(浅はかな知識で言ってるので間違っていたらすいません)

批判するような言い方をしていますが、そんなことは全然なく、これも素晴らしいビジネスモデルであり、大成功している企業もあります。
なので、これを批判しているつもりも、間違っているというつもりもありません。

しかし、これが絶対的な方程式であるという認識は間違っていると思っています。

そして、今はこの構図が大きく変わろうとしているんじゃないかと思っています。

前はハードウェアとかの環境面において何百万もするようなものが、今は月数千円から数万円出せば十分すぎるものが手に入ります。
しかもその導入は数か月かかっていたものが数秒で終わります。
(自分もそれを体験して驚きました。)

また開発に関しても開発環境やフレームワークは無料でオープンソースなものが多く、しかもその生産性はメチャメチャ高いです。
リソースを使って開発を並列化しスピードを上げるというコストのかかることをしなくても良いのです。

ほんとにありえないようなことがこの業界で今起こっているんです。


こうなるとIT業界のビジネスモデルが大きく変わります。
そうなると開発組織、現場も変わらないといけません。
それが近代ソフトウェア開発なんだと思っています。

それに対応するとなると彼のいっているような工程の自動化やチケット駆動のような改善というのは忙しいからしないというものにしてはいけないと思います。

きっとこの改革ができないソフトウェア現場は生き残れるかどうかわかりません。

だって、システム開発するのに数千万円必要で導入が数か月後になりますっていう会社と来月から導入可能で月々数万円ですっていう企業がでてきます。

どちらを選びますか?

後者が品質的に問題なくメジャーになればこれが常識になるでしょう。

そうなるのに10年はかからないと思っています。
すでにそんなサービスはどんどん世に出ているからです。

自分のまわりを見渡してもそうじゃないですか?
ほとんどが無料でシステムが使えてませんか?

よく言われますけど、生き残れるものは、強いものでも、頭の良いものでもなく、変化しつづけるものだといわれます。

そういった変化が起きている今になんとかしようとしている人たちをこの業界から追い出してよいのか?
むしろそういった人たちを今後は育てていきIT業界を変えていかないといけないんじゃないか?

ここがヘンだよIT業界!!

まぁ、すごく個人的な意見ですし、いろいろな批判もあると思いますが、自分は真剣にこう思っています。

そして、そんな時代に挑戦をしたかったから転職ということを選択しました。


すいません。話がだいぶそれてますね。





彼にはもう会うことはないだろうし、会っても何を言っていいのかわかりません。
でも、彼のようなプログラマがプログラミングを嫌いになってほしくないし、すぐには無理だろうけど必ず報われてほしいと思っています。
それには大変な努力とやる気が必要だと思います。

そのためにも自分は「プログラミングは面白い!!」ってことを言い続けたいし、何年たっても現場でプログラミングをしていたいと思っています。

もうすぐ来るであろう大きなIT業界の改革の波にのまれるこもないように自分も今はひたすら勉強です。



ではではさよなら2011年

もう一度身につけたい変態で学ぶオブジェクト指向

コンニチハ!
変態アドベントカレンダーです。

http://atnd.org/events/22020

アドベントカレンダーとは、クリスマスまでに毎日日替わりで窓を開けていくカレンダーのこと。
それにちなんで、日替わりでblogエントリを書くのがアドベントカレンダーです。

オブジェクト指向

ってよく聞きますし、実際のところ何がすごいの??
って思ったりしてる人も多いでしょう。

抽象クラスって何よ!?
インタフェースとかどうやって使う?

とか

そういう初心者向けアーンドもう一度学びたい人達に変態を例に説明してみましょう。

うだうだですけど、最後まで読んでいただければ幸いです。。。

まず、オブジェクト指向は何が嬉しいのか?ってところですけど、

処理を共通化し、生産性をあげる!!

ということではありません。

もちろんそういう一面もありますが、これぐらいならオブジェクト指向を使わなくても十分できます。

では、オブジェクト指向は何を可能にしてくれるのか?

それは

変化に強いプログラムにしてくれる

ということです。

これを変態を使って説明してみましょう。

そう

変化に強い変態

を作ってみましょう


これが社会に出てきたらもう無敵ですね。


まず簡単なユースケースを考えてみます。

変態が女子高生のスカートをめくる

こんな感じです。

ではこれをもとに実装してみましょう。

____________________________________________________________________________________________________

まず「変態クラス」と「女子高生のスカートをめくる」メソッドがでてきます。

class 変態 {

  スカートをめくる(女子高生){
    女子高生.スカートがめくられた();
  }
}

次に「女子高生クラス」を作り「スカートをめくられた」というメソッドを作ります

class 女子高生{
  スカートがめくられた() {
    printf("きゃーーーー!!");
  }
}


____________________________________________________________________________________________________

ってかんじでしょうか?

これで、「変態が女子高生のスカートをめくる」というユースケースの実装ができます。

でも、変態ですよ?
この変態ぶりが女子高生だけでおさまるとは限りません。
もしかしたら女子大生に手を出すかもしれません。

では次のユースケースを足しましょう。

変態が女子大生のスカートをめくる

____________________________________________________________________________________________________

新たに「女子大生クラス」が追加されます。

class 女子大生{
  女子大生#スカートがめくられた() {
    printf("いやーーー!!");
  }
}

そして、変態クラスに女子大生用のメソッドを追加します。

class 変態 {
  スカートをめくる(女子高生){
    女子高生.スカートがめくられた();
  }

  スカートをめくる(女子大生){
    女子大生.スカートがめくられた();
  }
}

____________________________________________________________________________________________________

って感じでしょう。

でも、中にはロリコンな変態もいます。
女子中学生に手を出すかもしれません。
なので、次のユースケースを足しましょう。

変態が女子中学生のスカートをめくる

____________________________________________________________________________________________________

新たに「女子中学生クラス」が追加されます。

class 女子中学生{
  スカートがめくられた() {
    printf("おまわりさんこっちです。");
  }
}

そして、変態クラスに女子中学生用のメソッドを追加します。

class 変態 {
  スカートをめくる(女子高生){
    女子高生.スカートがめくられた();
  }

  スカートをめくる(女子大生){
    女子大生.スカートがめくられた();
  }

  スカートをめくる(女子中学生){
    女子中学生.スカートがめくられた();
  }
}

____________________________________________________________________________________________________

変態さんの欲望はまだまだかもしれませんが、ここでここまでした実装の内容を振り返ってみましょう。

まず、
「変態クラス」ができ
「変態クラスにスカートをめくる(女子高生)メソッド」つくり
「女子高生クラス」ができ、
「女子高生クラスにスカートがめくられた()メソッド」をつくりました

次に
「女子大生クラス」ができ
「女子大生クラスにスカートがめくられた()メソッド」をつくりました
「変態クラスにスカートをめくる(女子大生)メソッド」つくり

そして、
「女子中学生クラス」ができ
「女子中学生クラスにスカートがめくられた()メソッド」をつくりました
「変態クラスにスカートをめくる(女子中学生)メソッド」つくり

ここで、あることに気づきませんか?

スカートをめくる対象が増えたら変態クラスに手が入ります。
つまり、スカートをめくるという変態なことをするためには、一度、変態さんには改修が入らないといけません。
この変態さんは変化に強いでしょうか?

目の前に新たに「OLさん」がスカートをはいて現れたら、一度家に帰って、スカートをめくる練習をして
いざ本番に挑むといったことをしなければなりません。

これでは欲望丸出しな素晴らしい変態さんはできませんよね?

ではどうすればよいのか?

そもそも、相手を絞る必要なんてあるのか?
スカートをはいていればよいのではないか?

つまり
「変態がスカートをはいている人のスカートをめくる」

にすればよいのです。

対象が「スカートをはいている人」という対象になります。
変態とスカートをめくる相手のインタフェースはスカートをはいているになります。

「スカートをはいている人」インタフェースは「スカートがめくられた()」メソッドを持ちます。
メソッドの内容は実際にスカートをはく人に任せます。

____________________________________________________________________________________________________

interface スカートをはいている人{
  スカートがめくられた();
}

____________________________________________________________________________________________________

そして、変態クラスのメソッドは

____________________________________________________________________________________________________

class 変態 {
  スカートをめくる(スカートをはいている人){
    スカートをはいている人.スカートがめくられた();
  }
}

____________________________________________________________________________________________________

ということになります。
ずいぶんすっきりしましたよね?

そして、女子高生はスカートをはき、スカートがめくられた時の動作をそれぞれ実装します。

____________________________________________________________________________________________________

class 女子高生 implements スカートをはいている人 {
  スカートがめくられた() {
    printf("きゃーーーー!!");
  }
}

____________________________________________________________________________________________________

こうすることで何が嬉しくなったのでしょうか?

たとえばOLさんが登場したとします。
そして、OLクラスが作成され、「スカートをはいている人」をimplementsし、スカートがめくられた()を実装します。

こうするだけで、変態さんはOLのスカートをめくることができます。
変態さんに手が入ることはありません。

今後もそうです。
女子小学生が現れようが、熟女が現れようが変態さんにはメンテナンスは起きません。

これで、スカートをはいていれば誰でもスカートをめくってやれるスーパーな変態さんができました。

変化に強い変態さんの完成です。

現実世界でこんな人がいれば、間違いなく逮捕されてますけど。。。

つたない説明でごめんなさい。

最後までお付き合いいただきありがとうございます。

明日から新生活

本日が今の会社の最終出社日でした。

そして明日が次の会社の入社日です。

このことを言うといろんな人から「少しは休んだらエエのに」とか言われるんですけど、まぁ、間を置くのは微妙やし、必要としてくれる人がいるのであれば、その人のために働くのもいいのかなと思い、間は開けずに入社することにしています。

退職するにあたっていろんな思いがありましたが、今は迷うことなく、「キャリアアップ」が目的です。

正直「しんどい」からとか「嫌だ」とかという気持ちがあったことは否定しませんが、それでも、もっと良い環境を、もっと成長できる環境をというプラスの思いがあり、それが大きな原動力になっていると思います。

でもこんな思いを持てたのは、今の会社に入社したからだと思います。
人や環境に恵まれて、いろんなことに挑戦できて、尊敬できる先輩社員や上司がいれば、こんな思いは持てなかったと思います。

別に会社や組織がダメと言ってるわけではありません。
きちんと結果を出している会社だし、それを悪く言うつもりはなく、ビジネスとして運営できているということではすごい会社だと思います。
正直サラリーマンとして一生を働けるすばらしい会社です。

ですが、それでは自分の気持ちが満たされることはありませんでした。
難しい人間ですね。。。
自分というのは。。。

そのことについては後日触れることにしましょう。


そんなこんなで、明日から次の会社に入社します。
まだ、最初なんでいきなり業務に入ることはないでしょうけど、社風や文化などに触れることはできるのかなと思っています。

それが自分の求めていたものかどうかを触れることぐらいはできるのかなぁと。


まぁ、何はともあれ、自分の選んだ道はいいものにしたいじゃないですか!?

最良の選択はできなくとも、選んだ道を最高のものにすることはできると思ってます。

なんで、明日から自分のプログラマ人生第二弾の始まりです!!

続 28歳プログラマの生きる道

1カ月ほど前に書いたブログの続きです。

28歳は男のターニングポイントだということを書いたかと思います。

そして、28歳と6カ月ターニングポイントが来ました!!

私、10月末をもちまして退職することとなりました。
月初の部会議で発表があったのと、先日送別会を行っていただいたんでオープンにしました。


11月からは次の会社で仕事が始まります。

転職ということに関しては実は2年ほど前からずっと考えていたことで、今年の春過ぎから行動に移しました。

たぶん転職するということに関しては、多くを語る機会がないと思うので、このブログにて少し書きたいと思います。


大学を卒業して約5年間プログラマとしてソフトウェア開発をしてきました。

その5年の中で、プログラマとしての転機が3回訪れました。
その内2回はほぼ同じ時期に訪れた3年目の秋です。

仕事が大変だった時期にソフトウェア開発が嫌になっていた時です。
その時に2つのことを知りました。

1つは「アジャイル
もう1つは「まつもとゆきひろさん」

です。


ソフトウェア開発をする思いや熱意とプログラミングをする楽しさや感動といったことを取り戻した出来事でした。

その頃から、ソフトウェアの「技術」と「現場」にこだわるようになりました。

たぶんこの出会いがなかったら、今の自分は絶対にいません。
ソフトウェアが嫌になって別の仕事をしているか、あきらめて馬車馬のように働いているかです。

3回目の転機は今年です。

これもある方との出会いでした。
転職のきっかけとなった出来事でした。

その方の話を聞いて、「技術」と「現場」だけでなく、ソフトウェアの業界や今後を見据えるようになりました。

この業界は多くの問題を抱えていて、それに対するベストな答えはまだ出せていない。
その答えを見つけ出さない限り、ソフトウェアに関わる人たちはHappyになれないのではないか?

納品したソフトウェアに不具合があり、ちゃんと動かなかったり、大量のデータを登録する必要があり、なかなか保守まで手が回らなく使い物にならなくなったりして困るユーザー

受注したはいいが、納期や品質に苦しみ、残業や休日出勤、徹夜といった技術とは関係ない体力勝負となり、現場の雰囲気がどんどん悪くなるチーム

そんな中この世に生を受けたプログラム
動かない理由をOSやミドルウェアプログラミング言語の責任にして、技術が批判される。

人月計算
納期不変
品質低下
残業万歳

これらを何とかするためには、現場の改善では弱く、経営からの改革が必要なのではないかと考えるようになりました。

そういったことから、転職に描いたこと「技術」と「現場」と「ビジョン」でした。

でも、何もわかっていない現場のプログラマ絵空事に聞こえる内容でもあります。

本当にそんなことができるのか?
ただの理想だろ?
大人がいうことじゃないだろ?

っていう批判が聞こえてくるでしょう。

はっきり言って、転職によってこれらが満たされるとは思っていません。
むしろ悪くなることもあります。
そして、いろいろな大事なものを捨てないといけない覚悟が入りました。

でも、それらを捨ててでも、手に入れたい、挑戦したいことなのです。

業界の下っ端で働いているプログラマがはるか彼方にかすんで見えるあるかどうかもわからない理想のソフトウェア開発を夢を見ています。


そんな社会人5年目の秋の夜長です。


プログラマとしての考え方を変えさせられるようなできごとが3度もおきたということは本当に幸せなことです。

そしてこういった出来事は誰にでも起こるチャンスがあるんです。

ただ、残念なことにそれらに気づかずに日常が過ぎてしまっている人も少なくないんじゃないでしょうか?

たぶん、そういったことが起きてもそれを受け入れるだけの器が自分に備わっていないとただの出来事として過ぎてしまうんじゃないのかなと思います。

自分には人に自慢できるような技術もなければ、経験もありません。
ただ1つあるとしたら、自分の弱さや出来なさを受け入れ現状に満足することなくいろいろなことを学び続けたということがあります。

そのおかげで「アジャイル」という単語が出てきても「ふ〜ん」って終わるんじゃなくて、踏み込んで勉強したりすることができました。

そして、いろんな世界を知ることができました。


そんなこんなで、2週間ぐらいで退職です。

自分が何をできるかわからないし、何もできないかもしれないけど、5年間働かせていただいた感謝を胸に残りの業務を行いましょうかね。

28歳プログラマの生きる道

2年前ぐらい前にほいっと買った本に「男のターニングポイントは28歳」と書いてありました。

なんか、結婚するのも転職するのも28歳が一つの基準になるらしいです。
どちらも人生を左右する一大イベントですもんね。

それで、ターニングポイントの28歳に向けて26歳から準備をしないといけないみたいなことが書いてあったような気がします。

そして、2年が経ち、4月に28歳になりました。

意外と普通に迎えたターニングポイントです。


でも、心に秘めている野望はあります。

やっぱり、プログラマとして技術の頂を目指したい!!
それが今思っている自分の夢です。

でも、技術の頂ってなんやねん!?

って思いますよね?
自分も思っています。

でも、最近思うことは、技術の頂はあるのではなく、目指すものだと!!

目指すためには何をしないといけないのかと考えると挑戦し続けないといけないんだと思います。

日々勉強したり、足を使って情報を集めたり、すごいプログラマの方たちとお会いして意見を交換したり、そしてそこで身に付けた知識や技術、得られた経験で挑戦をする。

それが、技術の頂を目指すために必要なことで、それをし続けることが自分のやりたいことなんだと。

そんな志をいつも胸に秘めています。
その一端を外に出してしまったら、変人扱いですよ。。。

でも、勉強会なんかに行くとその自分をさらけ出せるからものすごくうれしいです。

よくプログラマは勉強会に癒されに行くって言いますけど、その通りですね。
28歳にして自分もめでたく変人の仲間入りです。

変人っていうと気持ち悪いので、「本当のプログラマ」に変えましょう。

28歳にして自分もめでたく本当のプログラマの仲間入りです。

28歳に訪れた人生のターニングポイントの一つ目がこれでした。

二つめは近日公開予定です。

アリンコの野望 (Ant's Ambition)

本日から夏季休暇です。

遊ぶ予定あり〜の。
ゴルフの予定あり〜の。

で6日間ですが、予定をいれてそこそこ遊びで忙しい夏季休暇です。

でも、自分の時間も何時間かあるし、PCも来たことなんでこれを機会に何か作ってやろうかなと。

何を作るかは具体的に決まってないけど、何かしらのフレームワークを作ります。

開発コード

アリンコの野望 (Ant's Ambition)

です。

ミスチルのDanceDanceDanceって曲があるんですけど、それの仮タイトルが「ひよっこの武道館」やったらしいです。
いつかはこの曲で武道館ライブをして盛り上げようと思って命名したらしいです。

やから、それをまねて、今はアリンコほどの技術力しかないけど、それでも技術の高みを目指そうとしている弱小プログラマの思いです。


とりあえず、VMPlayerでLinuxをインストールして、そこにDBサーバーを立てて、ローカルやけどSubVersionとJenkinsをインストールして、開発環境でEclipse用意して、glassfishを入れようとしたけど、Tomcatに断念してって感じで準備はできました。

改めて自分で環境を1から作ると自分が何もわかってなかったことを感じますね。
そして、Google先生はすごいと思いました。

今からは梅田に行くんで、今日はこれまで。。

明日は、実家に帰るので夕方ぐらいからアリンコプロジェクト再開です。