Aggressive Style 5

Aggressive Style 5

昨今はコミケ関係を中心に書いています。同人やニコニコ動画方面で活躍される方の相互リンクをお待ちしています。

「転職して三ヶ月経ったけど会社辞めたい」を読んで、IT系の会社を転々とする為の2つのアプローチを書いてみた

転職して三ヶ月経ったけど会社辞めたい -銀の人のメモ帳

まず始めに

まずは自己紹介から。自分の場合は試用期間でクビを2回繰り返し、「ソーシャルゲームは、最低最悪、史上最悪の水物商売である」「Web系の会社を解雇されて思った事」等退職エントリーを書いていたりする。特に後者ではてなブックマークやコメントを頂いた方には、この場改め感謝する次第である。

あの時jQueryjavascriptが苦手と書いた。未だjQueryに至ってはjQueryプラグインを選ぶ事を所業としているため、動きを要求するサイトなどプログラマーらしいことは一切やっていない。プログラマーと言うよりWebサイトのチューニングを行うWebサイトチューナーと言うのが板に付いている。どうもホームページの見てくれや操作に関わる部分は関心が無い状況だ。

さて今日は他人さんの退職エントリーを読んで、自分なりに書きたい事を書いてみた。主な内容は「どのような方向で勉強していくか?」だ。プログラムと言っても広い大海原のようで、例えば日本海を航海するのか太平洋を航海するのでは全然違う。どのような航路を進んでいくべきなのか?は結構大切だと思う。

1.今やってる仕事のアプリ、サンプルプログラムを一から自分で作成する

これはやってるだろと思われるが、1点目は今やってる仕事のアプリ、あるいはそれを簡単にしたアプリを自分で作りながら復習するという事だ。以下は「Web業界等の面接対策:自発的に行動し、その証拠(ソースコード)を他人に見せられる人程面接を制する」のループになるが、是非聞いて帰って欲しい。

複数人で担当したり、又は既存のアプリケーションの改修に携わっているとどうしてもそのアプリケーションの全体が見えない事が多い。そんな時いざ自分で一から新たに作ってみると、「フォームの入力内容を調べるのが苦手」「SQL文を動的に更新できない」「テーブル定義のやり方がわからない」と言った箇所にぶち当たり、仕事で苦手だった箇所を復習すると良いだろう。

SNSなど大規模なページでコードが数千行以上に渡り、とても自分じゃやる気が起きないという場合もあるだろう。そんな時は今改修している箇所に関連するサンプルコードや、今やってる技術をブログでまとめるだけでも力はつくだろう。俺の場合あまり興味がなかったjQueryのネタを違うブログで書いた所かなりの割合で検索が来て、もっとjQueryのネタを書いてやろうとおもった事がある。このように興味がなかったジャンルでも、いざブログなどを書いてみると面白くなるだろう。

2.仕事はほどほどにして趣味に走り、発展させる

2つ目の方法は、仕事は完全無視して趣味のプログラムに没頭する事だ。id:gin0606氏のブログやgitHubを読んでいると、id:gin0606さんはObjective-C(iPhone)アプリの開発がメインなようで、特にhttps://github.com/gin0606を見てると、ダイクストラ法(Dijkstra)の実装をしていて大変勉強熱心だと思う。素人程度の自分では、おそらく擬似コードから再現することすらできないだろう。さてプログラムの話ばかりだと詰まらなくなるので、暫く脱線してダイクストラ法について簡単に説明したい。

ダイクストラ法の説明

まずは以下の問題にお答え頂きたい。

問題

以下の図の矢印の方向に人が歩くとする。各地点間に書かれた数字は距離を表す。このときA地点からF地点までの最短距離の値とその経路を答えよ。




答え

最短距離の値は2+4+3 = 9で、A→D→E→Fの順になる。




いきなりだが上のような図の事をグラフといい、A,B,Cのような各地点を節点。接点同士を結ぶ関係(線)をと言う。この時辺の向きが矢印で決まっているものを有向グラフと言い、接点同士を移動するのにかかる時間や距離を重みと言う。

そして節点が多い時や、グラフの構造が複雑な時に最短経路を見つけてくれるアルゴリズムダイクストラ法だ。簡単に説明すると、ある節点に接続する全ての節点を検索し、重みの少ない順に辿っていくことで最短経路を見つけていく方法だ。もっと具体的に知りたい方は、以下のホームページや、以下の書籍のP169-P173等を見て欲しい。

ダイクストラ法(最短経路問題)

URL:http://www.deqnotes.net/acmicpc/dijkstra/


そしてこうした最短経路を見つけるアルゴリズムは、電車の乗り換え案内やカーナビに用いられる。筆者は最近車通勤を始めたが、カーナビの経路探索が遅い事がある。その原因を考えてみると、

  • 計算量の問題:グラフの節点数(交差点の数)が多く、検索に時間がかかる(2つの辺をV,Eとして、最良O(V+E)*logV程度)
  • CPU、メモリの問題:CPUのクロックやメモリのスワップなどで、検索に時間がかかる

どうにもこうにもよく使うルートは予め準備(保存)しておく機能などがあると、出発時のアイドリング防止に役立ちそうだ。根本的には簡易検索モードを用意し、節点と辺の数を減らして計算量を抑える方法も有効な気がする。又書く節点間の重みをどう設定するべきかなどダイクストラ法から発展した手法を考えていくなど、話の膨らみやすいジャンルなように思う。この辺はプログラムを覚えようとしている時期程気が付きにくいid:gin0606氏のブログを見ていると、プログラムに偏っている気がするので一歩プログラムから離れて見ると今後の方向性が見えてくるかもしれない。経路探索に興味を持ったらアプリのNAVITIMEや乗換案内などを視野に入れても良いと思う。

話変わってこのレベルになってくると、話題にされる事自体少ないはず。しかし例え会社にそういった人間がいなかったとしても、インターネットや広い世の中にはすごく詳しい人だっているはず。又腕に自信があるならgitHubTopCoder.comなどのコンテストサイトもあるし、仕事以外の場ですごい人や状況に出会う機会は沢山ある。自分も含め、こういうチャンスを逃さないように心がけたい。

おまけ:パワハラなんて気にしない気にしない

2で触れたように自分のやりたい事があると、会社で多少のパワハラがあったとしても気にせず仕事ができるだろう。パワハラに負けない1つ目のコツは、仕事以外の場所に自分の居場所を見つけることだ。今回のはてブコメントを見ていても、


この人の訴えが分からない人はクソな会社を作ると思う。個室に閉じ込められて何もさせないっていう辞めさせるためのパワハラがあるけど、その弱いバージョンをされてるのと同じ状態なんだよこれ。鬱にもなるわ。(id:tail_yさん)

パワハラ疑惑がある。俺が二社目のときは同時期に入ってきた人間よりも、どうも研修期間が長く配属になるのに時間がかかった。無論SQLインジェクションなど必要な事を覚える意味では良かったのだが、今から思えばパワハラな部分もあったことも否定できない。

ソーシャルゲームのデバックメインなので、「デバッグやってるのかよ」と小言を言われた。自分はノーダメージでこんなシステムにできる限り関わらないのが、自分の利益率を上げる唯一の方法だと思い、デバッグだけやり定時退社と言う技を使っていた。さらに風俗に行きまくり、飯を食いまくり好き勝手やっていた。しまいには首になった記念に吉原のソープランドに行ったりだから手に負えない。

彼の文面をみていると自分用のPCが一週間も届かなかったようだ。俺だったら遊び呆けて給料泥棒をやるだろう。俺は鈍感力が行き過ぎるしそもそも上司の前でいい子ぶらないのでクビになるクチだが、時にはいい加減になるのも会社と付き合っていく上で大切なことだ

次の会社の踏み台として今の会社を利用するという気持ちも、パワハラ対策及び面接対策として有効だ。まず次の会社の面接でパワハラで退職しましたと言っても、誰も拾ってくれない。さて三社目の時は社長とふたりきりの時、「●●君のページはクライアントの受けは良いが、あなたのページは完成途中という反応だったよ」と言う困った事を言われた。自分は三社目で一実績を得て、大手への転職を狙って居たので周りがどうだとか関係なかったし、完成と言わせりゃ良いと思って作業を続けたものだ。実際に2件案件を上げての解雇なので問題はなく、このように先への目標を持っておくことも大切である。

最後に

今回は人の記事を読んで、自分の昔が懐かしくなったので記事を書いてみた。俺ほどの問題児は業界でも少ないし、俺みたいな奴に色々言われてid:gin0606氏が怒らないかなと不安である。彼も彼なりに苦労しているだろし、三ヶ月で退職となれば経歴で落とす企業も続出するはずだ。しばらくは辛いと思うが、良い企業に就職してくれればと思う今日この頃である。

過去記事(数学、プログラムに関する技術)