2009年12月23日水曜日

就職活動インタビュー反省記録 イントロ

数回に渡って10月から12月まで行ってきた6社とのインタビューの反省をつづろうと思います。これは、将来同じ過ちを繰り返さないようにするための自分への戒めでもあります。

インタビューをした会社を時系列順通りに並べると、Salesforce.com、Google、Facebook、Yahoo、Microsoft、Admob となります。この6社とのインタビューのケースを独断で以下3つのカテゴリに分類。

明らかに失敗だったと自分で(インタビュー中、もしくは後に)分かったケース
Salesforce.com、Yahoo

質問の回答に時間がかかり、おそらく落とされただろうと感じ実際に落とされたケース
Admob、Google

エンジニアからみたら全く見込みがないはずなのになぜかリクルータが私のレジメに目をつけたケース
Facebook、Microsoft


と、分類わけしたところで、あとは時系列にいきたいと思います。
次回は、Salesforce.com とのインタビュー反省記。

2009年12月20日日曜日

ジョブオファーをいただきました

昨日、Ohio にあるソフトウェア会社からジョブオファーをいただきました。Ohio の Youngstown という街にあり今年で創立12年になります。社員数は20人弱という小さな会社ですが、仕事の量は多く一人で設計、実装、テストと幅広くやることになるので、非常に楽しみです。

あと、数件インタビューが残っており、その結果で新天地が決まります。友人には「来年の1月から3ヶ月間泊めてあげるから Bay Area まで来て就職活動続けなよ」と言われましたが、正直、今手元にあるオファーを引き延ばして(あるいは、白紙にもなりかねない)そこまでする勇気が今はありません。

H1Bも出るので、卒業後は米国でソフトウェアエンジニアとして働くことになります。その Ohio の会社に決まれば、住むところは Boardman という郊外の田舎街になると思うので、友人を招待するにはちょっと不向きな場所になりそうです :P

このジョブオファーをいただく前に、インタビューをしてリジェクトされた会社は、Salesforce.com、Google、Facebook、Yahoo、Admob、Microsoft の6社で、大企業相手(Admobは他の5社のような大企業ではないと思いますが、先月Googleに買収されて今も急成長を続けている会社です)にインタビューをする大変さが身にしみて分かったのでこれはいい経験だったと思います。

次回以降のエントリーでは反省もかねて、それぞれの会社でどんなインタビュー質問が飛んできて、自分がどんな受け答えをしたかについて振り返りたいと思います。

(追記)
あ、今期のクラスはちゃんと単位とれてました。Machine Learning は期末で A- の成績がつき、中間で B- がついて絶対死んだと思ってた Ph.D の Algorithms in the Real World でも期末で B がきたのでまずまず。

無事卒業です!

2009年11月21日土曜日

Studio Project Poster Session 終了!

本日11月20日(金)、15か月間に渡って続いたプロジェクトの締めくくりにあたるポスターセッションが無事に終了しました。8分間で5人全員プレゼンするというやや忙しい感じのものになりましたが、全員が参加できたのでよい形にまとまったと思います。

プレゼン全体を以下の5つに分けて各人ワンパート担当しました(私は最初の Overview & Problem Definition を担当)。
  • Overview & Problem Definition

  • Architecture & Design

  • Implementation & Quality

  • Status Evaluation

  • Process
ポスターを見ているとこれまでの15か月間のことが走馬灯のように頭を駆け巡ってきます。大変なときもありましたが最後まで駆け抜けることができました。

あとは、Machine Learning と Algorithms in the Real World の単位をしっかりとれば卒業できます。


就職活動は今のところ on site で1件蹴られ、phone interview で2件蹴られ、まだオファーはありませんが、これから6社とインタビューがあるのでまた頑張っていきます!

2009年11月4日水曜日

Phone Interview ってむずかしい

今日は某ソフトウェア会社2社と phone interview を各社1セッションずつやりました。
Phone interview なのでインタビュー中に「コードを書いてくれ」といわれたときは、オンラインドキュメント(interviewer とドキュメントをシェアします)にコードを書きます。
大変だったのは「speak as you go」で、考えてることを口に出しながらコードを書いてくれと。
首をかたむけて携帯電話を耳と肩に挟んで、考えてることを口に出しながらコードを書く。とてもじっくり考えられるような状況ではありませんでした(-_-;
やってみると感じがつかめると思いますが、考えてることを口に出すと考えられんのです。
なんとかひらめきでコードはかけましたが、途中で何をつぶやいたかまったく覚えてないです。
あー、うまくいったんだろうか・・・

考えてることは Twitter に書くとかじゃだめなのかなあ。

2009年10月30日金曜日

ジョブオファー来たかな?と思いきや・・・

今月は、サンフランシスコにある某ソフトウェア会社の面接の準備とコースワークのジャグリングにてんてこ舞いで日記をあまり更新できていませんでした。

その会社は Technical Opportunities Conference 2009 の直後にコンタクトしてきてくれて、10月2日に CMU のキャンパスで1時間ほどの技術面接を行いました。みごとそれにパスすることができたので、10月23日にサンフランシスコでオンサイトの面接に来てほしいといわれました。当日は4時間30分の技術面接で、自分ではかなりよいできかなと思ったのですが、今日残念ながら direct に fit するポジションがないとのことでリジェクトされてしまいました。うーん、最後の最後まで突っ切ってオファーをもらうというのはなかなか大変なことですね。

まだこれからインタビューを受けるソフトウェア会社が数社残っているので、気をとりなおして頑張っていきたいと思います。Never Give Up!


▲インタビュー当日、一緒にオンサイトに呼ばれたMSE の友人と

2009年10月13日火曜日

宿題と格闘中。。。

色々立て込んでいて、日記を更新できていなくてすみません。

今は、Algorithms in the Real World の宿題と格闘しています。

CD プレーヤー や DVD プレーヤーにも使われている誤り訂正符号 (Error Correcting Codes) というトピックを勉強中です。基礎になっている数学はガロア体という概念だそうで。うーん、まだこの日記で説明できるほど理解してません・・・

でも、実世界で適用されている数学ってなんだかクールですよね。

2009年9月30日水曜日

数学ガール/ゲーデルの不完全性定理

の表紙が公開されました。



無料プレゼントは外れてしまいましたが、来月発売なのでもうすぐ読めますね。みなさんも興味があれば買ってみてはいかがでしょう?

2009年9月27日日曜日

ゲイツ・ヒルマン・センターが正式にオープン

もうすでに友人が詳細を載せていますが、ゲイツ氏の来校にともなって、ゲイツ・ヒルマン・センターが正式にオープンしました!早めに登録したおかげでゲイツ氏の生のスピーチを聞くことができ、非常に運がよかったです。


▲ 正式オープンの瞬間

2009年9月23日水曜日

Technical Opportunities Conference 2009

ちょうど一週間前、CMU キャンパス内でジョブフェアが行われました。このイベントは主に技術職に的を絞ったジョブフェアで、Computer Science の学生を対象にリクルートしていた会社は138ありました。





この日にできたことは簡単な自己PRと履歴書渡し。写真に載っている会社を含めて、10社ほどまわりました。ひたすら、60秒程度で自分のコマーシャルをして、履歴書を提出し、次の hiring process をメモする、の繰り返し。人が多すぎて、とにかく限られた時間しか使えませんでした。各人の本格的な能力審査はインタビューで行われるようです。

Amazon のブースでは、自分のバックグラウンドをひととおり説明した後、その場でアルゴリズムのクイズを解くように言われました。私に出された問題はコレです。
『どうやって文字列を逆転させますか?たとえば "abcd" という文字列があったら、どのように "dcba" に変換しますか?言語はなんでもいいですよ。』

どの会社のインタビューでも、アルゴリズムとデータ構造の知識はほぼ間違いなく問われます。また、複雑な問題にたいして、その場で解答を疑似コードで示すことも求められます。インタビューにむけて、会社情報を収集することはもちろん、問題解決能力も磨いておかないといけないので、毎日少しずつ準備をしているところです。

インタビューは、10月から11月にかけて頻繁に行われる予定です。

2009年9月15日火曜日

『数学ガール/ゲーデルの不完全性定理』無料プレゼント

に応募しました。しないわけにはいきません。
1作目、2作目両方ともピッツバーグに持ってきてるくらいのファンですから。

結城先生から返信もいただけて嬉しかったです。
なんだかそれで十分満足したので、本のほうはもう当選しなくてもいいかなぁなんてw

2009年9月11日金曜日

CMU Intramural Sports

MSE の同期の友人のブログにもある通り、昨日学内のテニスの試合に出てきました。
4人ひとチームで、シングルス2本にダブルス1本の団体戦です。

結果は、ダブルスが負け、シングルスも1本負け、トータルで1勝2敗でした。
私はその友人とダブルスで出ましたがひどいショットを量産してしまいました。
ポーチにでた瞬間、脳内ではクールなショットを放っているんですが、実際に打った球はベースラインのはるか後方へ・・・あぁ、学部生のときと違う orz

この学内の試合は、トーナメント方式ではなく、総当たりのようなので、負けてもまだ試合はあります。次こそは勝ってみせるぞー

2009年9月4日金曜日

MSE 最後のセメスター

8月24日から秋学期が始まりました。卒業に向けての今学期の ToDo は以下のとおりです。

[Software Development Studio IV]
16か月間にわたるStudioプロジェクト最後の締めくくりです。リフレクションペーパー、ポスターセッションと二つの提出物があります。

リフレクションペーパーでは、あるトピックに基づいて自分のこれまでの活動を振り返り、それを分析し、ペーパーにまとめます。ペーパーのトピックは自分で選び、メンターの先生から許可をもらいます。例えば、ソフトウェア工学関係の論文で発表されている内容は自分の今回の経験に当てはまるかどうか(例:要求分析の段階で混入された間違いを正すのは、コーディングの段階で混入された間違いを正すのよりも時間がかかる)、もしも同じプロジェクトをやり直すとしたら次はこの方法論を取り入れる、e.t.c. ペーパーの提出は、10月の終わりころとなっています。

ポスターセッションでは、チームのこれまでの活動を全員で振り、すべてのデータを明らかにします。例えば、ソフトウェアプロセスは各フェーズで何に従ったか、プロジェクトのトータル時間はどれくらいだったか、バグの総数はいくつかだったか。この夏に入ってきた 新しい MSE 生にプロジェクトのゴールを見せて、彼らに指針を示すという意味合いもあります。このセッションは学期の最後に行われる予定です。


[Machine Learning]
春学期の終わりに宣言したとおり、機械学習をとっています。CMU の CS に来たらぜひ履修しておけ、なんて言葉を聞くくらい人気のあるコースです。確率・統計の本は自分で読んでたりしていましたが、機械学習はまだ学んだことがなかったので、この授業はとても楽しみにしていました。ベイズの定理 & MATLAB まみれになりながら、15時間かかっておととい最初の課題を提出しました。コースの最後には、期末試験のかわりにプロジェクトがあり、ポスターセッションもあります。絶対 Tom Mitchell の Machine Learning が教科書に指定されるだろうと思って、夏休みの間ずっとそれを読んでたのに、Bishop の Pattern Recognition and Machine Learning が指定されて涙目。でも、これで違う本も読めるから嬉しいといえば嬉しい。


[Algorithms in the Real World]
CS Department の Ph.D 生のためのアルゴリズムのコースで、タフなコースになっています。春学期にとった Design & Analysis of Algorithms がこのコースを履修するうえで必須になっていたので、ちょうどよかったです。CS Department の Ph.D 生の immigration セッションが終わるまでこの授業は行われず、来週の火曜日に正式にスタートします。この授業でも数式まみれになれるのでいいですね!


[Job Hunting]
死活問題。卒業後に仕事を始めるので、卒業前に employer を見つけてなんとか雇っていただきたいところです。レジメは更新できたのであとは会社情報を集めつつ、今から本格的に始めていきたいと思います。狙うは開発職。今のところ、マネージャーやコンサルティングの仕事は探していません。


ブログを始めてあっという間に一年になりました。
MSE 卒業後はまた違ったトピックでこのブログは続けていきます。

2009年8月16日日曜日

映画「サマーウォーズ」を観てきました

夏セメスターと秋セメスターの間には2週間の休みがあり、先週から日本に帰ってきてその休暇を過ごしています。先生の推薦状も大学に提出したので、今日は結城先生の日記にも書いてあった映画「サマーウォーズ」を家族と観てきました。

あちこちで見られるレビューの通り、とても後味の良い作品でした。デジタルネットワークの世界 OZ 上で起こった問題を家族とともに解決していくという、この時世に合うテーマを描いていました。長野県の上田市というところを舞台に、のんびりとした雰囲気で始まるこの物語は、OZ でハッキング機能をもった人工知能が登場するところから流れが変わります。

この映画、実は CMU と少しだけ関わりがあります。

話が進むにつれ、その人工知能の開発元が明らかにされます。”ピッツバーグのロボット研究所から、開発中の実験用ハッキング AI が脱走したらしい”と。思わずコレには反応してしまいました。あれ?もしかして Robotics Institute かななんて思ったりもしました。そして、最後にその開発元の大学のキャンパスがライブ中継のニュースに出てきたのでよく見てみると・・・Carnegie Mellon University って書いてあるじゃないですか!間違いでなければその背景はおそらく Baker Hall か College of Fine Arts、もしくは University Center。まさか久しぶりに見たアニメーションの映画で CMU が出てくるとは・・・ビックリでした :)

2009年8月6日木曜日

受け入れテスト終了、そして学期末プレゼンへ

おとといの8月4日の正午に二度目の受け入れテストを行い、クライアントに無事製品を納品することができました。製品の出来にクライアントも非常に満足しており、今学期はよい成績を修められそうです。

もうすぐ、MSE プログラムが始まって一年になるのでプロジェクトのリフレクションもかねて、別のエントリーでこれまでの経緯を書こうと思います。

明日の7日は、学期末プレゼンテーションで、今回また発表者の一人になりました。今、今学期のリフレクションをスライドに載せているところです。ソフトウェアプロセスにどう従ったか、機能要件の数は安定していたか、リスクマネジメントはどのように行ったか、そしてそれらがチームの目的達成にどう貢献したか、などなど。

話したいことは山ほどありますが、時間内におさめなければならないので、焦点を絞るのがなかなか難しそうです。

2009年7月30日木曜日

技術制約とアーキテクチャドライバー その3(完)

今回でこのお話は終わりです。

その朝チームメンバーの一人がもってきた打開策とは、「公開されてる JUnit のソースを読めば、使いたい API がすぐにわかるよ!」というものでした。
そういえば、まつもとゆきひろ氏はコードリーディングの秘訣として次のような点を挙げていました。
わたしが過去にどのようなソースコードの読み方をしてきたのかを振り返ってみると、プログラミング能力の向上を目指したコードの読み方のヒントがあるかもしれません。

 まず1つは、「全体を読もうとしない」ことです。ソースコードには「物語」はないので、全体を通して読む必要はありません。面白そうなところをつまみ食いして、先人の知恵を学べばそれで十分です。

 もう1つは、「目的を持って読む」ことです。何かを学ぼうと思ってソースコードを読めば、効果的に読解して知識を得ることができます。

この観点から JUnit のソースを読むという行為は非常に理にかなっているといえます。すべてのメソッドは testXXX() の形で名前が与えられているため、何をしようとしているのか、その目的が一目瞭然です。さらに、個々の testXXX() はおよそ10~20行程度だったので、巨大なコードの海を泳ぐことなく、目的を達成するために必要な一連のメソッド呼び出しを理解することができました。

もしも、ドキュメントがない、JavaDoc が入手不可能、Google Code の検索に引っかからない、というような状況で巨大なコードベースの中から、ある目的を達成するための一連の API 呼び出しを探し出さねばならなくなった場合、JUnit のソースが公開されていないかいちど確認してみてはどうでしょう?プロダクトのソースコード中のコメントを読むよりもずっと役に立つかもしれません。私のチームは少なくともそのケースが当てはまり、おかげで実装を無事にすすめることができました。

今週の金曜日にクライアントとともに受け入れテストをして、通れば正式に納品となります。そして、来週の金曜日は毎学期恒例の EOSP です!

夏セメスター、本当にあっという間です。

2009年7月17日金曜日

推薦状を書くことになりました

名前は伏せますが、このたび知り合いの先生が teaching professor に昇進されるかもしれないということで、その推薦状を書くことになりました。
Dear Yuki:
The School of Computer Science at Carnegie Mellon University is considering the promotion of ******** from Associate Teaching Professor to Teaching Professor and he has given your name as a reference.

CMU の先生は、標準、教育、研究の3 つのトラックにわかれ、標準トラックの先生は授業を受けもちながら、研究を行っているそうです。tenure の先生の大部分は標準トラックだそうですが、教育トラックの先生にも tenure をもつ方がいらっしゃるとのこと。

昇進を通すか否かの判断に生徒の意見も取り入れるあたりは、フェアでとてもよい仕組みだと感じました。大学側に強い印象を残す推薦状を書こうと思います。

2009年7月3日金曜日

私を支えてくれる方たちへ

2004年に MSE を卒業されたEさんが先日 cave にいらっしゃいました。

私が 2006 年に MSE に入りたいと決意してからというもの、E さんには本当に全面的にバックアップしていただきました。2006年には Tony 先生を紹介してくださり、2007年には出願の進み具合をみていただいたり、日本にいらっしゃった Tony 先生と話をする時間を設けてくださったりしました。Tony 先生や E さんと初めてお会いしてからもう 3 年の月日が経ったとは・・・早いものですね。

2009年6月29日月曜日

ピッツバーグに戻ってきました

友人の結婚式の後、両親と一週間過ごし、先日土曜日にピッツバーグに戻ってきました。

東部標準時の金曜日に戻ってくるはずが、悪天候でフライトがキャンセルになり、デトロイトで一泊するハメに。Northwest からホテルのクーポンをもらうも、そのホテルは電気が通ってないとか、わりとドタバタな日を送っていました。

ですが無事に帰ってこれたことですし、夏セメスター残り半分、ギアを入れ直して頑張りましょうか!

2009年6月21日日曜日

友人の結婚式に出席しました

友人の結婚式に出席するため、日本時間の19日に帰国しました。今学期のノルマである、プロジェクトとひとつの選択科目はリモートで作業ができますが、地理的に分散された開発 (geographically distributed software development) では、コミュニケーションを face-to-face ほどスムーズに行えないという問題や時差があるという問題から、どうしても開発効率が落ちます。それでも帰国を許可してくださった先生、チームメンバーのみんなには感謝しています。



結婚式は赤坂の乃木神社で執り行われました。お二人とも和の服がよく似合っていてとても素敵な式でした。

2006年、CMUで私が今後の進路について迷っていたときに、お二人は親身になって相談にのってくださいました。何度もメールで新郎 T さんを呼び出してしまいましたが、いやな顔ひとつならさずにいつも丁寧に対応してくれました。新婦 Y さんもお会いするたびに、いつも我が事のように私の進路を気にかけてくれていました。そして、2006年の最後に私がピッツバーグを去る際、空港まで送っていただいて、そこで別れの握手をして以来お二人と会うことができなかったので、昨日は2年半ぶりにお会いすることができてとても嬉しかったです。

お二人ともご自分たちが苦しい状況にいるときほど、周りのひとに対して優しくできる本当に強い芯をもった方たちで、私が目指したい人間像そのものです。うちに秘めた優しさに加え、表面ににじみ出ている普段の優しさも、とても温かく感じます。

披露宴の後にまたお二人と握手をしましたが、今度の握手には別れのようなものは感じませんでした。アメリカで新しい生活をスタートされるお二人にまたいつか会うための、再会を約束する握手です。

Tさん、Yさん、本当におめでとうございました。

2009年6月18日木曜日

Coldplay がやってきた

5月30日(土)に ライブ に行ってきました。




じつは、このライブに行くまで Coldplay の名前を聞いたことなかったんです。
「Coldplay 来るんだってよ!」って言われたときも、「なにそれ?氷かアイスを投げ合う遊びかなんか?」なんて答えてしまうほどの間抜けぶり。

ライブ後に CD ももらえました。聞く人を自然と引き込む歌声と曲がたまらなくカッコよかったです。これから少しずつ彼らの曲を聞いてみようと思います。

2009年6月17日水曜日

技術制約とアーキテクチャドライバー その2

アーキテクチャドライバーに登場する4種類の要素は、それぞれ次のように定義されています。
  • ビジネス制約&技術制約
  • 設計段階以前にすでに決められている束縛条件
  • ハイレベル機能要件
  • システムが実行すべき大まかな機能
  • 品質特性要件
  • 可用性、パフォーマンス、セキュリティといったシステムが保持すべき特性

2009年5月28日木曜日

技術制約とアーキテクチャドライバー

今、私がかかわっている studio project で非常に困難なのが技術制約 (technical constraints)の対処です。技術制約とはなにかを説明する前に、今回はソフトウェアアーキテクチャに登場するアーキテクチャドライバーという概念を導入するところまでお話をしてみようと思います。

2009年5月22日金曜日

夏セメスタースタート!

一週間の休みが終わり、またここ cave に戻ってきました。
MSE 生は夏休みもインターンもなく、8月頭のプロダクトリリースに向けひたすら studio プロジェクトです。というわけで今期はこんな感じです。

2009年5月14日木曜日

すべては数字で語れる?

前回の投稿から数学ネタつながりで、留学前からハマってたドラマ Numb3rs を紹介します。



2005年からアメリカで放送されており、数学を武器に事件を解決するドラマ。私はテレビがないのでリアルタイムで今どこまで放映されているかわかりませんが、オフィシャルサイトではシーズン5のいくつかのエピソードがフルで見られます。

本ドラマの主人公は、FBI 特別捜査官である兄ドン・エプスと CalSci の数学の教授である弟チャーリー・エプス。弟チャーリーがさまざまな数式を駆使して、現場で戦う兄ドンの捜査を手助けします。シーズン1のエピソード1は、連続レイプ魔の13人目の被害者が死体で発見されるところから始まり、チャーリーは過去の被害者が襲われた現場をもとに犯人の居場所を確率で割り出そうとします。ちょうどスプリンクラーから撒かれた水の落下地点をたよりに、スプリンクラーの場所を逆探知するように。

このドラマの特筆すべき点は、カリフォルニア工科大学 (Caltech)の Gary Lorden 教授を数学のコンサルタントに迎えて番組づくりをしているところだと私は思います。劇中の黒板に登場する数式もしっかりチェックされているとか。もちろん数式や犯罪捜査以外にも、スリルやサスペンス、兄弟愛・家族愛などのヒューマンドラマが多くちりばめられているので、各エピソードで扱われる理論を知らずとも十分楽しめるのでお勧めです。パラマウントから日本版の DVD も出るみたいです!

数学ガールに比べると Numb3rs はずっと硬派な感じです。ただ、どちらも数学をテーマにして話をふくらませているところが、私は素晴らしいと思います。Everything is numbers^^




追記:
  • CalSci のモデルになっているのは Caltech
  • 兄弟の父親アラン・エプスを演じるのは、96年公開の映画インデペンデンスデイでも主人公デイビットの父親を演じたジャド・ハーシュさん
  • 直感に反するモンティホール問題

2009年5月12日火曜日

数学ガール最新刊!!

結城浩の最新刊『数学ガール/ゲーデルの不完全性定理』をアナウンスいたします。

ちなみに、 第1巻はオイラー(Euler)、 第2巻はフェルマー(Fermat)、そして、第3巻はゲーデル(Goedel)が登場。つまり、 E→F→G という順番になるわけですね。
やばい、これは楽しみすぎる。
なんだか小飼弾氏のリクエスト通りになってますね。
結城先生、G の次の H も考えてたりして。でも H って誰だ?・・・ヒルベルト(Hilbert)?

2009年5月9日土曜日

春セメスター、本当に終了!!

消耗の激しい1週間でした。
本番にむけて入念な準備をしないといけないものばかりだったので、しんどいのなんの。

2009年5月1日金曜日

春セメスター全クラス終了! Except・・・

今日で Analysis、Architecture、そして Algorithms と全てのクラスが終了しましたー
ちょっと感想をば。

[Analysis]
セオリーオンパレードのクラスかと思っていましたが、そうではありませんでした。ボードゲームのフレームワークをデザイン、インスペクション、実装したのち、テストケースを書いて、テストの実装と、開発フェーズの結構な部分をカバーしていてかなり実践的。加えて Hoare Logic、Static Analysis、Protocol Checking といったテストツールの基礎になっている理論も考慮されていて面白かったです。理論と実践、よくバランスがとれていました。

[Architecture]
課題が重かった・・・課題のたびに「これはプログラミングのクラスじゃないよー。アーキテクチャのトレードオフ分析に重点を置くんだよー。」って書いてあるんですけど、プログラミングに結構な時間をもっていかれました。あと、4人の TA の採点基準に結構なばらつきがあったため、クラス評価が若干低めでした。でも、この授業で学んだことはずっとこのあと自分の中で生きていくような気がします。スタイル、パターン、品質特性、品質特性のトレードオフ、アーキテクチャ評価など。どれも一朝一夕で身につくものではないけれど、卒業後も常にこれらのことを意識して開発していくのとそうでないのとでは、5年後、10年後、ソフトウェアエンジニアとしての能力の伸びが大きく変わってくる気がします。まだ、ぼんやりとしかいえないけど。

[Algorithms]
今学期個人的にベストのクラス。日本の大学時代まともに先生の説明を聞かず自学自習して苦労していたので、ソート、ハッシュ、動的計画法、グラフ理論、ネットワークフロー、P、NP など、このクラスを通して改めて学び直せたことがとても嬉しいです。このクラスに刺激されて、最後の秋セメスターには Machine Learning と Algorithms in the Real World というクラスをとります。めちゃくちゃ楽しみだー



最後のクラスでは、 Fair division and cake cutting をというトピックを取り扱いました。Cake cutting にちなんで授業の最後に Whole Foods のケーキを生徒にふるまう、ユーモアたっぷりな Manuel Blum 教授。


さて、来週は final の週なので期末試験と期末プレゼンが待ってます。やっぱり結構なプレッシャーで、とくに Studio Project の end of semester presentation と Algorithms の final exam が同じ日にスケジュールされてるあたりなんか、かなりいい感じ。

2009年4月22日水曜日

Spring Carnival

に先週末行ってきました。
普段は駐車場になっている場所に、即席のアトラクションがたくさんできてました。
ぷち絶叫系もあったので喜んで乗ったのですが、まぁ酔うこと酔うこと。
だいぶひ弱な体になりました。


(チームのみんなと)


(チームメイトの旦那さんと)

先週末は土日もミーティングだったので、みんなでいい息抜きができました。
今期のこり3週間、頑張るとしますか。

2009年4月10日金曜日

雪見

2007年にMSE生だったTさんのミクシィ日記に、4月に雪が降ったと書いてありました。
まっさかぁとか思ってたら、ほんとうに降ったよ><
もっと春に仕事させてあげてください。



友人はワシントンDCに花見に行ったようですが、相当時間がかかったみたいですね。
でも、家の外に出て少し歩けば桜の花が目に飛び込んでくる日本と違って、それだけ喜びもひとしおなのかな?

ここ最近のコースワークは、Analysisのレポート、Architectureの3回目のプロジェクト、Algorithmsのquiz、Studioのタスク、といっぱいいっぱいもいいところでした。
Spring breakでチャージした燃料もすっかり底をついて、どんどんマイナス値が大きくなっていってます。
でも、今期もあと4週間。なんとか頑張れそう・・・!

P.S.
3月25日にRichard Karp教授がCMUにいらっしゃいました。
ちょうどAlgorithmsの授業でMax-FlowのEdmonds-Karp algorithmを取り扱ったばかりだったので、かなり刺激的でした。



(左がAlgorithmsインストラクターのManuel Blum教授、右がRichard Karp教授。Turing賞を受賞されたお二人が並んで立たれると物凄いインパクト!)

2009年4月1日水曜日

昨晩・・・

チームメイトの一人(Aさん)と激しい口論になりました。

きっかけは、Architectureの宿題で私が書いたプログラムがrequirementにまったく沿っていないとAさんが言い始めたところから。Aさん曰く、

「Yukiは何をやらせても適当な仕事ばかりする。問題そのものがわかっていないくせになんで解こうとするのか。前から言おうと思って我慢してきたが、もう限界。金輪際、Yukiはチームの仕事に手を出さないでくれないか。」

さすがにカチンときました。それは私がAさんに対して思ってることじゃないか!自分を棚に上げて何だコイツは!?

私とAさんの罵倒の浴びせあいはとどまるところを知らず、ついには、どちらかがMSEプログラムをやめない限りこれ以上やっていけないという結論に。

・・・私はひとつの選択をしました。

2009年3月24日火曜日

今日も一日

結城先生の言葉を肝に銘じてがんばります。
生きていると、問題っていろいろありますよね。ほんとうにいろんな出来事が人生に起こりますよね。そのときに教会で養われていると「人間的な思いによる解決以外にも解決がある」ことに気づかされます。人間は誰しも、こうなってほしい、ああなってほしい。現在のこの問題が、こう解決しさえすれば私の人生は幸せなのに…と思ってしまいます。

この問題さえなければ。

これさえ得られれば。

こうなりさえすれば。

……でも、おうおうにして、そうはならない。がっかり、ざんねん、どうなってんの?といいたくなる。

でも、まてよ。それは全部、自分の思いに過ぎない。たかだか数十年生きてきて、せまいせまい範囲の経験しかしたことのない、限界ばかりの自分が行った判断に過ぎない。その自分の判断にどれだけの信頼が置けようか。

2009年3月21日土曜日

Spring Semester 後半戦!

一週間のspring breakもあっという間に終わり、semesterの後半に突中しました。

残り八週間がんばっていきます。近況はまたのちほど!

追記:
今期のend of semester presentation(EOSP)の日とAlgorithmsの期末試験の日がモロにかぶってました。

EOSPでmentorの質問攻めをくらった後にAlgorithmsの3時間の期末試験は結構キツイなぁ。

2009年3月2日月曜日

Midterm

もう春学期8週目で学期の中間です。なんだかあっという間な気がするんですが。
今週は怒涛の中間試験の週。AnalysisとAlgorithmsの試験があります。

[Anslysis]
テスト技法、GoFデザインパターン、Hoare Logic、など

[Algorithms]
Lower bound and upper bound, Hashing, Amortized analysis, Dynamic programming, Graph algorithms、などなど

加えて、あさってにArchitecureの2回目のプロジェクトの課題提出、金曜日にはStudioの中間発表(Middle of Semester Presentation)が控えてます。

・・・おなかいっぱいです。

2009年2月16日月曜日

「わかる」ことのむずかしさ

久しぶりに西田亙氏のブログを訪れてみた。西田氏は、結城先生と並んで私が尊敬しているテクニカルライター。私から見たお二人の共通点は、理解していることと理解していないことの境界線がはっきりしているということ。

2009年以降の氏のブログの更新に先日初めて気づいたが、2月8日のエントリー

「わからない」という方法 橋本治

に私は共感を覚えた。共感を覚えた理由はその内容が私がこれまで何度も直面してきた問題そのものだったから。

よくよく問いかけてみると、私はこれまで物事を「理解できた!」という体験がないのかもしれない。何の分野であれ、人から質問を受けた場合、私は簡単な答えであれば用意することができる。しかし、物事の根本を追及しようとすると必ずあるレベルで突っかかる。なんで1+1は2なの?と言われたら、今の私にはそういう風に自然数が定義されているからとしか答えようがない。なんでそういう風に定義されているの?と聞かれればお手上げである。だいたいwhyを3回連発されると、私は返答できなくなってしまう。

(木の深さ優先探索で例えて、質問の出所をルート、1回のwhyに答えられたら子ノードに移れるとすると、だいたいルートからみて孫ノードまでなんとかいけるかどうかってとこ。ひ孫ノードにはなかなか辿りつけない)

そして最近はものごとを理解するために無限ループに陥っている。

  1. わからなければ調べればいいじゃない?

  2. しかし人生他にも手を回さなければいけないことがたくさんある。時間には限りがあるのだ

  3. でも本当に理解したいのであれば、いつでもそのことを考えているはず

  4. 結局私は限られた時間を言い訳にして、本当に物事を理解しようなどとは望んでないのかもしれない

  5. よし、やっぱり他のすべてを犠牲にして物事の理解だけにのみ時間を費やそう

  6. この問題はどうもそう簡単に解けるようにはできていない。いま自分の理解ではここまでしかたどり着けない (1へもどる)


そういう意味で、無限ループを抜けて連発whyに答えられるようになった人を私は尊敬する。おそらく一人であれこれ考え抜いた方に違いない。西田氏のおっしゃる
私達一人一人が地を這うことができれば、それが理想かもしれませんが、これには膨大な時間と手間、そして効率よく這い回る技術が必要とされます。現実的ではありません。では、どうすれば最小限の努力で「わかる」ようになるのか?
それは、橋本氏が語ったように一人でも多くの著者が「めんどくさいことをやる覚悟」を決め、「一人で地を這う」。その上で、「自分の中から出てきたものを本に著す」。これしかないと、私は思うのです。

がまさに理解への王道だと思う。結城先生も西田氏もきっとこの姿勢が染み付いているのではないだろうか。

やはり自分はまだまだだなと思う。ただし、自分が物事を理解しているかどうかをチェックする方法ならある。結城先生のブログのこのエントリーだ。
自分が「それ」を理解しているかどうかを試すには、何も見ずに「それ」を紙に書けるかどうかを調べればいい。

2009年2月13日金曜日

Amazon Tech Talk

に参加してきました。このtech talkはずいぶん前からポスターで告知があったせいか、部屋に入りきらないほどの生徒が詰めかけました。



プレゼンターはSoftware Development ManagerのJohn Thimsen氏。

Talkの内容はビジネスの概要とpersonalizationでした。後者のセッションの焦点は、ユーザが欲しがりそうな推薦商品をどれだけ素早く表示するか、その手法の概要でした。

手法の概要はこちらでもご覧になれます。



インド系の学生が多かったと思います。Talkのあとに履歴書を提出している生徒も数多く見られました。

今現在は夏のインターンのポジションしかないとのことですが、数週間後にフルタイムのポジションについても受け付けるとのことでした。

私もそろそろ履歴書を更新しないと~

2009年2月8日日曜日

重い・・・

来週締切の課題がです(^_^;
前々回の投稿で述べたことは現実のものとなり、もはやゆったりした感じは微塵もありません。。。

Analysisでは、架空のボードゲームをUMLのクラス図でデザイン。少なくとも3つのGoFデザインパターンを含めること。

Architectureは、とあるアーキテクチャスタイルに基づいてシステムを設計そして実装。設計から実装に至る過程で、自分が下した判断の基準をすべて説明すること。数ある設計候補からどうして現在のものをピックアップしたのか。

Algorithmsは、課題のプレゼンと30分のクイズが控えてます。最近の授業のテーマはアルゴリズムの実行速度のlower boundとupper boundを期待値で導き出す、などなど。まあ今のところソーティングばっかりなんですが。グラフ理論や動的計画法のような、私にとってのメイン料理は3月以降になりそうです。

今期は授業で取り扱う内容がproblem spaceからsolution spaceに移ったことで、よりテクニカルな部分が増えました。なんだか前学期よりも面白い気がします。

2009年1月27日火曜日

アイ アム ア マシーン

今日ためしにやってみました。

結城先生流「機械的な作業の進め方」

周囲の雑音にかかわらず、かなりいい感じで集中できました。
結城先生の発想はいつも面白いです。

2009年1月20日火曜日

Spring Semester スタート!

帰ってきましたピッツバーグ。冬休みは日本でテニスをしたり、友達と飲んだりしたりしていい休暇をとることができました。12日から勉強モードに入ってます。今期の授業はこんな感じ。

[Analysis of Software Artifacts]
プログラム解析やテスト技法を学ぶ。シラバスにHoare Logicなんて項目もあったので、前学期のModels同様、論理も入ってきそうです。初回の宿題から重かったです。。。

[Architectures for Software Systems ]
大規模ソフトウェアをつくるときのデザインは重要。下流のエンジニアが設計にもとづいて実装するために、アーキテクトはそのデザインに十分な制約を設けないといけない。アーキテクチャパターンや品質特性などソフトウェアアーキテクチャに関する重要な概念を学ぶ。Instructorはこの分野の権威、David Garlan先生とThanksgivingでお世話になったAnthony Lattanze(Tony)先生。実は、私がMSEを選んだ最大の理由はこのTony先生がいたからです。人生のMentorですね。というわけで、今期楽しみな授業のひとつです。 昨年末にTony先生著の本も出版されました。



[Design and Analysis of Algorithms]
今期の選択科目。Undergradの授業で、アルゴリズムの設計・分析に関する授業です。プログラミングの課題はほぼ皆無で、中身はアルゴリズムの正しさの証明だったり、確率論が絡んだ数学がほとんどです。講師のManuel Blum先生がcomputational complexity theoryの分野でTuring賞をとっておられたのにはビックリでした。1995年のことのようです。Architectureとならんで楽しみな授業のひとつです。

[Software Development Studio II]
プロジェクトはまだまだ続きます。残された時間を考えると、この学期でヘマをすると取り返しがつかないので要注意です。Architecture設計が今期の大きな目標です。

[Communiaction for Software Engineers II]
Technical writingの授業で、これはかなり気楽に受けられます。気分転換ですね。

今度の春学期は前回の秋学期よりもゆっくりしたスタートでちょっとびっくりです。
昨日は新年会にも行ったし、今週末は餅つきにも行くし。
まーこんなゆったりした感じは長くは続かないでしょうねぇ。。。