上記題名がメインですが、思いつくまま書くことが多々あると思います。「思います」なんて言葉使うの、エンジニア失格なんですけどね。

Main) 7年目 倒れる。開発学ぶ。離婚。会社存続危機。転職。

»

 東北地方太平洋沖地震におきまして、犠牲になられた方々のご冥福をお祈りし、また甚大な被害に遭われました皆さま方には心よりお見舞いを申し上げます。微力ながら、お手伝いさせて頂きました。

 さて、前回で会社が分裂(正確には社員が分裂)し、私は新しい会社に行くことになります(ちなみに、25歳で4社目)。ここで、学びたかった開発業務を行えます。そう、職業「プログラマ」と書けるような、本当の開発を。ただし、プライベートでも残念な事が起こってしまいます。そう、離婚です。今思い返すと、当時は相当やばかったです。白髪が目に分かるように増え、記憶力も無くなり、体調も全然駄目でした。でも、よく仕事を休まずにやりきったと感じます。親権を譲り、1年経ちましたが、今年上のお姉ちゃんが小学校に入学します。……参加は拒否されましたが。時が経つのが早いと感じました。

~まずは社内環境構築~

 まずはサーバ用のPC購入からです。前の会社でも、3台ほど自作で構築したので、ある程度構成は出来てました。最低、4コアのMEM8G、HDD1TB(拡張性を考え、空きは残り2つ)、マザーはASUSのP5Qシリーズ、ビデオカードはいっちゃん安いやつ。

 社内サーバとしては、ADやグループウェア用と開発用の2つです。今回はADのほうを構築しました。設計書まで起こして作業した訳ではないですが、ユーザー、組織、プリンターと設定し、グループポリシーはデフォルト、FTPサーバも導入はしましたが、フォルダアクセスの権限までは明確ではなかったので触りませんでした。フリーのグループウェアソフトを導入し、完了です。

 ここで、ADをインストールから設定まで初めて触ったのですが、「こんな感じなんだ」とイメージをつかめました。難しいイメージでしたが、それが緩和されました。

~進め方、アーキテクチャ、手始めにJavaScript~

 開発なんて、初めてだったので、「はー、へー」と言いながら話を聞いていました。開発手法としては、「アジャイル開発のスクラム」を取るとのことでした。また、リーダーシップコラボレーションを取り込み、1つの目標に向かってみんなで進んでいく。。となり、言語は「Java」フレームワークは「struts2」、「iBatis」……etc、色々使用しています。開発はサバ/クラのWebアプリです。

 約1年かけての開発です。人数は10人未満。聞く話ですと、結構無茶なことしてたんだなと言われます。……未だによく分かっていません。他の開発をしたことがないので。

 アーキテクチャの話ではプログラムとしてAction,Dao……でサービスを区切って作ると学びました。オブジェクト指向の考え方です(ですよね?)。「こんな感じで開発するんやー」という感じでした。

 本格的な開発に入る前に、準備ツールとして、JavaScriptを使用して作成することになりました。1人=1機能を担当するようなイメージでしたので、ユースケースから基本設計書、詳細設計書、実装、テストケース、テストと、流れを学びました

 まだこの時点では、Javaなんてそれほど理解していません。とりあえず、JavaScriptを必死で勉強しました。プロトタイプやらJSONやらスコープの範囲の曖昧さに驚きつつ(それが良いことでもあるのですが)、ツール開発に勤しみました。のちにJQueryも使用する予定だったそうで、丁度良い勉強になりました。これで、Java開発に向けての下準備が完了しました。

~いきなり倒れる~

 JavaScriptの開発で約3週間ほど、その日は病み上がりで体調があまりよくなかったです。そしたら、段々頭痛が酷くなり、もう何も手に付かない状態に。救急車を呼んで貰ったんですが、救急隊員が会社に到着してから一気に気が抜けたらしく、そこから病院までの記憶がありません。診断結果は「脳髄炎」。1週間ほど入院するのですが、昔購入したJavaの本を元気があるときにひたすら読んでいました。

 ……ただ、有給が無いですから、その月の給料を見て愕然としました。まぁ、保険に入っていたのと、抑えられる制度(高額医療なんとか)を利用してなんとか凌ぎましたが……。

~個人的に荒治療と思ってしまったペアプログラミング~

 初めは説明を受けながらひたすら見てました。Eclipseもそんなに扱ったことがなかったもので、新鮮過ぎてついていけませんでした。とりあえず1度見た事で習うより慣れろ精神で、「同じような実装をする箇所を作れ」と言われましたので、見よう見まねで作成しました。もう、頭フル回転で無我夢中でした。ただ、1度自分で実装してみるとなんとなく見えてくるものがあります。これを引き金に開発するべく色々なスキルを身につけるできました。1機能まるまるペアプロしていただいたので、簡単な機能なら一人でもなんとかできるレベルになったと思いました。

 開発って、「こんなんなんだー」となんとなく理解するできて、自分の視野が広がったと感じた事を今でも鮮明に覚えています。

~さあ、個人で1機能開発だ~

流れ的には、

  1. 機能の説明
    紙ベースだったり、既に画面レイアウトはあったり、画面レイアウトも考えなければいけなかったり
  2. 設計書作成
    画面レイアウトがない場合は、作成->承認後、処理の記述みたいな
  3. 実装
    一番楽しくて辛いところ
  4. テスト(個人レベル)
    JUnit
    などは使用しませんでした
  5. デバッグ(個人レベル)
    4、5を繰り返し、一通りのルートを通ったら完了、次の機能へ

※1クールのすべての実装が完了後、本格的なテストをしてました。

 基本設計までは出来上がっており、機能の説明を受け、詳細設計書の作成(画面レイアウト含む)を行うのですが、画面レイアウト等地道な作業が大変でした。こんなことしてるんだなと、改めて身に沁みました。画面キャプチャして、ペイントで修正して……と。

 処理までのレビューが完了し、いざ実装に入るのですが、とりあえず、分かりやすいだろうと言う思いで画面側から入りました。struts2等はある程度簡略化されていたので、それを真似するだけでよしですが、strutsタグを利用した画面作成で早速躓いたり、JQueryのajaxをカスタムコーディングしたJavaScript関数がよく分からなかったり、JQueryが分からないので勉強したり。。と課題ばかりでした。

 CSSも本格的に利用したので、<div>タグの意味合いとか、インライン、ブロック要素の違いとか、今まで、理解していたつもりでした。しかし、W3Cのサイトを見て「本当に理解していなかったんだな」というのが理解出来ました。これは本当に大きな前進でした。ちょっとHTMLを馬鹿にしてました。反省してます。

 悪戦苦闘しつつ、Javaの内部処理を実装し、データベース側も実装しました。iBatisを使用しているので、ちょっと面倒でしたが、SQL自体は使い慣れていたほう(だと思いたい)なので、比較的スムーズでした。パフォーマンス面は頑張って考えましたが、うまくいっているのか分かりません。

 何はともあれ、画面側からDB側まで一通り実装し、テストするんですが……まぁ、これがまた思いもよらないバグがほどよく(笑)。1機能実装する事で大体の流れと実装方法は大体理解出来ました。これ以降、プログラマとして1年4カ月ほど過ごします。

~離婚も経験しました~

 18歳から付き合い、20歳から一緒に生活した妻と別々の道を歩むことにしました。お互いが悪いと思っています。親権を妻に渡し、公正証書を作成し、音信不通になることを避けたり、養育費の支払いをきちっとするように決めました。財産もほぼすべて妻側に渡しました。

 とまぁ、生々しい話ですが(笑)、若気の至りだったんでしょう。白髪もめちゃめちゃ増えましたし、記憶力もかなり落ちました。最近(2011年現在)は回復してきていますが。ただ、子供に罪はありません。私も母子家庭で育ってますので、かなりやるせない気持ちでいっぱいです。

 仕事は……もう、無言でしゃべらないし、笑わないし、ネガティブだしと、もう最悪でした。病院いったほうがいいんちゃうか?と思うぐらい、やばかったらしいです。しかし、仕事はきっちりこなしたつもりです。大きなトラブルなく、順調でした。

~会社倒産危機?転職を勧められる~

 そんなある日のことです。社長に呼ばれました。一言目がこれです。

 「他の会社に転職したほうがいいんじゃないかな?」

 話を聞いてみると、「財源がない」「~月から給料は払えない」。あぁ、解雇ですか。さて、新しい会社探すかぁ!という感じでした。ただ、本当に人のことを考えてないと思うのが、ギリギリになって言いますからね。まぁ、法律上問題はありませんが、残り1カ月で探すのは無理でした。

 プログラマ経験は、ここで終了です。

 そして、新しい会社に行くことになります。……26歳、5社目です。今、新しい会社で働いています。情報が現在に追いついてきたので、情報が溜まり次第今後更新していきます。

 「結局自分が何になりたいのかよく分からない」です。

 それでは、また。

Comment(1)

コメント

Tcouhdown! That's a really cool way of putting it!

コメントを投稿する