すでに定年を過ぎていますが、Amazonで引き続き達人プログラマーを目指すことになりました。
このたび9月末日をもってオージス総研を退職し、10月よりアマゾンジャパン株式会社に入社しました。今後はSoftware Development Engineerとして、日本をはじめ世界各国のAmazonのモバイルWebアプリケーションの開発を担当することになる予定です。
およそ7年間にわたり、前職のオージス総研ではソフトウェアアーキテクトとして、SOAやEAといった全社的なシステムのアーキテクチャから、上流のモデリング、Java EEを使ったアプリケーションの開発など、技術者として様々な経験を積ませていただきました。私自身はこのブログでも何度も取り上げてきたように、モデリングやオブジェクト指向といった技術を用いて、実際の基幹業務システムの設計などに活用することで、高品質で保守性の高いシステムの構築に貢献したいという思いがありました。そのようなシステムを構築、維持するためには高品質なアーキテクチャの構築が必要不可欠であり、それが、結果としてお客様の業務を効率化させ、さらにビジネスの価値を向上させることにつながるという信念がありました。
中でも私としては大変運の良いことに、実際のアプリケーション開発の現場に入って、Java EE、Spring、Hibernateといった標準技術やOSSを利用し、実際に再利用可能なフレームワークを段階的に構築し、複数のプロジェクトにわたって適用するという経験もできました。フレームワークチームとアプリケーションチームが完全に分断された世界で仕事をするのではなく、限られたリソースのなかでアプリケーションの要件をもとにフレームワークを段階的に進化させることが必要でした。複雑な金融商品のドメインモデルを構築したり、大量のトランザクションを処理するための高速化の仕組みを考えたり、ビルド自動化の工夫をするということは、単に新しい技術を適用するということ以上にわくわくする体験でした。
また、以前に自分は恵まれた環境で仕事をさせてもらっていることに感謝しなくてはいけないと思う - 達人プログラマーを目指してでも書いたように、SIerの職場環境としては珍しく、技術について熱く語ることのできる仲間が周りにたくさんいるチームで、大変に恵まれた居心地のよい環境で仕事をさせていただくことができました。一緒に仕事をさせていただいた上司や同僚には本当に感謝の気持ちでいっぱいです。
そういう意味で、なかなか自分から積極的に転職を考えようという気持ちにはなれなかったのですが、やはり、既に37歳という自分の年齢のためか、一般にこの業界で35歳定年説と言われているように、最近は開発現場でバリバリコードを書くという仕事からはどうしても遠ざかってしまっているところがありました。もちろん、自分の体力の衰えということもありますが、私としてはまだまだ現役でプログラムを書いていきたいという気持ちがありました。新技術の吸収力や理解の速さといった面では若い人にはかなわないかもしれませんが、リファクタリングやモデリングの技術などは経験によって深まるものであると思うからです。
しかし、実際には年齢による能力の低下以上に、プログラミング作業の単価が業界の慣習から低く設定されているという事実があります。そのため、どうしてもアーキテクトや技術コンサルティングといった仕事をやらないと会社としては採算が合いません。技術の重要性に対する上司や同僚の理解があったにも関わらず、伝統的な人月に基づく受託開発を中心としたビジネスモデルで仕事をするSIerとしてはやむを得ないところであると思います。
そういう状況の中で、このブログのタイトルでもある「達人プログラマーを目指す」という自分の目標からどんどん遠ざかってしまっているのではないかという焦りや不安が常にありました。アーキテクトとしてパワーポイントやワードの説明資料を作成するのも広い意味でプログラミングの一種だと言って自分をごまかすこともできなくはないと思いますが、やはり、毎日IDEやエディタを起動してプログラミングスキルの向上や開発環境の改善に励みたいという思いがありました。
今回Amazonで応募したのはモバイルのWebアプリケーションを開発するソフトウェアディベロッパーとしてのポジションです。以下の記事の最後の部分で紹介されている、メイジャー・レイナー氏のチームに参加することになりました。
http://rikunabi-next.yahoo.co.jp/tech/docs/ct_s03600.jsp?p=001814&__r=1
Amazonはサービス企業のイメージがあるかもしれませんが、IT技術によって小売をサポートするという広い意味においてSI業界におけるユーザー系企業に近い立場であり、エンタープライズ開発の一種であると考えることもできると思います。今回AWSではなく、Amazon.comの本業である小売業を支えるアプリケーションの開発を行うポジションに応募したのは、エンタープライズアプリケーション開発者としての経験を少しでもいかしたいという自分のこだわりというところもありました。
Twitterでもちょうど日本人エンジニアを募集しているという話がありましたが(http://blog.jp.twitter.com/2011/09/10twitter.html)、最近は海外のIT企業が日本のマーケットに進出してきたということもあり、日本人プログラマーにも今後グローバルな環境で仕事をするチャンスが出てきたようですね。
ただし、日本で働くといっても、実際にほとんどの同僚が英語を話す外国人であり、日本の市場だけでなく、世界中をターゲットにした開発を行っています。詳しいことは書けませんが、面接はいわゆるシリコンバレー方式で、合計5時間くらいにわたって、同僚や上級のプログラマーからアルゴリズムやデータ構造など技術的な質問を英語で受け、心身ともにヘトヘトになりました。私の英語力の問題もありましたし、情報系の卒業でもなく、基礎的な計算機科学の勉強も不十分だったため、いきなりアルゴリズムに関するコードを書き下す問題にはなかなかてこずりました。
落ちても失うものは何もない、ダメでもともとという気持ちで応募したポジションですし、自分としてはこのチャンスを最大限に生かすべく、一日も早くAmazonのビジネスに技術力で貢献できる達人プログラマーの一員になることを目指して精いっぱい頑張っていきたいと考えています。
なお、ブログの方は今後もできる限り継続していきたいと思いますので、どうか引き続きよろしくお願いいたします。