読者です 読者をやめる 読者になる 読者になる

速さが足りない

プログラミングとか、設計とか、ゲームとかいろいろ雑記。

転職活動日記(1)

雑記

はい、今回は転職活動についての雑記です。
転職するに当たり、自己のプロファイリングは必要な訳ですが、記事にしながら自分の考えを整理してみようと思った次第です。
なんか厨二的な記事ですが色々と探求していきましょう。



さて、一番最初ですが・・・昔幼い頃の夢は音楽家になることだったのです。
なぜ音楽家かというと、多分昔は音楽を通じて色んな人に認めて欲しかったし、社会にコンテンツを提供することで貢献し、音楽を通じて既に廃れつつあった円盤ビジネスへの救世主になりたかったのかな、と今思うと感じる訳です。
つまるところ、身近や遠い他者からの自己承認欲求と、社会からの承認欲求、あとは金銭的な欲求を満たすために、そういう仕事の1つである音楽家になりたい、と思ったということですね。
子供の頃の話なので単純に「かっこいいから」とかそういう理由ですけど。そして他にそれらの欲求を満たせる選択肢が思いつかなかったからですね。
まあ、そんなこんなでギターとかベースとか色々やりましたがさっぱり才能もなく、普段練習するのも難しく(防音もない普通のマンションなので)、ある時諦めてしまった訳です。



夢は夢として、現実ではどうか、でとりあえず理系に進み電気電子の世界へ向かいました。
就職に困らないから、で選んだ訳ですが当然そんなモチベーションでは続くはずもなく、紆余曲折あり最終的にプログラミングを学び、プログラマになった訳ですね。
なぜプログラマ?となる訳ですが、まず大切なのは幼い頃にあった欲求は形を変えて別の「創造的欲求」に変わったということです。
簡単にいうとプログラミングして何か作るのが楽しかった訳です。

さて、勿論人間ですから、他にも色々欲求があります。
コード書くより女の子と遊んでた方が楽しいですからね、女の子と遊んでるだけでお金たくさん貰える仕事ってなんでしょう。ホストですかね?(まあ色々問題はありそうですがw)
勿論、たくさんの女の子が貢いでくれるような傾国の美女ならぬ傾国の美男子な訳ありませんから、実現不可能な欲求というか希望な訳です。
ということで、なぜ創造的欲求が一番になったかというと達成手段が一番難易度が低かったからです。
元々MMORPGをやっていて、そこでBOTを作ったりで事前の知識があったのと、その上でプログラムをそこそこ学び、同級生よりはほんの少しプログラミングの才能があったからですね。
そしてプログラマになり、1度転職し現職に至る訳です。
ちなみに1回目の転職ではお給料の問題で生活が苦しくて転職に至りました。まあ欲求だ何だと言ってますが命や生活に係わる事ならそちらの方が重要ということですね!!



ということで、現職につき時が経つにつれて欲求が変化してきました。
現職ではBtoCのサービスに携わっていることがあり、実際はandroid/iPhoneアプリなんですが、これを作ってるんだよーと見せると「すごーい!!」って言われますし、自分の作ったものが役立っていて嬉しい訳です。単純ですねw
しかしこれは承認欲求的な意味合いで嬉しい訳でないのですが、長くなるのであとにしましょう。

そしてもう1つの創造的欲求も少し内容が変わったな、と思います。
昔は何か作っていれば楽しかったですが(今もそこは変わりないですが)、より高度なものを作りたいと思うようになりました。
現在で言えば、メンテナンスや拡張開発の際に容易に変更が可能で、他システムやモジュールへの影響が最小で、より新しい概念(今で言えば機械学習など)を取り入れた、といったものです。

そんな中、現職は自社サービスではなく、あるサービス業者からの請負業務でシステムを構築している事もあり、この欲求を満たせなくなってきた、ということです。
多くのユーザは「いいサービス」を「最初に決めた期間までに」作りたいのであって、「いいサービスをより良く」ではないんですよね。
この、動く洗練されていないシステムと、洗練された素晴らしいシステムの差といいますか、そこに支払うコストと期間については中々理解されない話だと思います。
マーティン・ファウラーがとても素晴らしい言葉で定義しています、そう「技術的な負債」と言いますが、拡張の度に巨大化し、あるニーズに追従する時間がかかるようになり、最終的には拡張不可能な状態やバグだらけ、処理が遅い使えないシステムに至るわけですね。
勿論、この技術的な負債に対する知識の啓蒙であり、問題解決のためのframeworkであり、プロダクトであったりをいつか作り上げたいという目的もあります。
この話はちょっと置いておきましょう。



さて、欲求の話から変わりますが、将来の展望というものがあります。
30歳までに結婚して2年くらいで子供が生まれて、35歳までに郊外に家かマンションを買って・・・ってやつですね。
これを同じようにプログラマとしての60歳までの将来展望について考えましょう。
夢だけで言ってしまえば、ジョン・フォン・ノイマンみたいに計算が早く、ケント・ベックのように様々な手法を発見し伝道でき、マーティン・ファウラーのように色々な示唆に富んだ知恵を持ち、まつもとゆきひろのように楽しくコードを書ける言語を開発し・・・っていうスーパーマンです。
まあ無理ですよね、現実的に到達可能な夢でないと将来の展望とは言えません。
そうです、60歳になったときどんなプログラマになりたい上で一番実現性が高いか、という話になるわけです。
ところで、どうしてその人物になりたいと思うのでしょうか。
つまるところ、自分の中にある最大の目標を解決できる人物であり、スキルセットであり、を持ちたいという事です。
この内容で言えば、問題解決のframeworkなり、プロダクトなり、知識を体系付けを行える実力が欲しいとなります。
その知識で何を作り、何の欲求を満たすのか、というのは次で考えましょう。



長々ときましたが更に続きます。
まあ結局どういう欲求を満たすために何を学び何を作り・・・という話ではありますがちょっと似たような遠いような話です。
そう、私があらゆる問題解決能力を欲しているのは、問題解決システムを作り上げてその作成者として承認して欲しいという欲求ではないんですよね。
勿論、承認して貰って嬉しいです、ただそれが一番の目的ではない、ということです。
簡単にいうと社会に対しての帰属意識から、という事だと思います。つまり社会が良い形で進化して欲しいし、堅牢になって欲しい、という願いがあるという事ですね。
しかし、帰属集団への小さな貢献ではなく、できれば構造の欠陥や社会正義が作用しないか機能不全を起こしている問題に対してコミットしたいです。
例にしてみましょう。
ある繊維系大企業(帝人等)の社内システムを作ったとしましょう。
次に衆議院の社内システムを作ったとしましょう。
この2つのシステムが、同じアーキテクチャで、同じ規模で、同じメンバーで、同じ想定ユーザ数で、同じシステム構成で等の同条件でシステム開発した際、どちらを誇らしく思うでしょうか?どちらをやりたいか、に置き換えても良いでしょう。
多分衆議院の方が多いのではないでしょうか。つまりより社会に近しいものと、身近ではないものか、という事ですね。
まあ、衆議院の社内システムと、例えば東京水道局の社内システムではどちらに軍配が上がるのか、等々ありますがニュアンスは伝わりますかね?

これは一体どういう意識下から発生するものなんでしょうか?
そもそも「集団」がないと「個人」もないわけですから、社会が健全であれば、自己保存が達成されるし達成して欲しいという欲求が目的になるのでしょうか。
あと付け加えるなら、食べ物が素晴らしく、古き良き文化や遺産もあり、協調性や社会性のある人々、素晴らしきコンテンツ、治安も良く、この文化が進化し続けて欲しいという民族意識なんでしょうか。
この民族意識は、ワールドカップで日本代表が勝つと嬉しい、誇らしいと思うことと一緒だと思いますし。
哲学っぽく言うと、何にも根ざしていない己のレゾン・デートルを獲得していないためですかね。

ということで自分でも分かっていないし上手く説明できないこれを例にするのは難しいですね、NPONGOの活動みたいなものでしょうか。
会社と創業者と社会に対する関係もそうかもしれません。
まあ、この文脈を掘り下げていっても、最終的に転職活動に必要なのはどういうスキルが必要で、それはどういう欲求や帰属意識という概念で良いですしこれまでとしておき、あとは集団社会学社会学、心理学をより深く知っている方にお任せしましょう。



さて、次にいきましょう。次は企業という集団に帰属するという事です。
会社に所属するということは、会社に帰属することであり、つまり会社という村が持つ文化圏を自己啓発する必要があるということです。
日本という文化圏に帰属するということは、日本語という文化を理解し使い、日本の生活習慣に合わせて生活し、文化(刑法や民放)を元に集団内の他者と協調するということですかね。

ということで、集団が持つ文化に自己啓発できるかが問題です。
ある属性A~Eがあり、自身はA~Cはマッチし、Dはマッチせず、Eはミスマッチしたときに、マッチしなかった・ミスマッチ属性の変化を許容できるか、変移できるかですかね。
とは言っても比較は難しいですよね。人間関係の話を合わせて考えてみましょう。

  • 自分は設計とframeworkと言語に特化したプログラマ
  • 同僚Aさんはアルゴリズムを追い求め続けるストイックなプログラマ
  • 同僚Bさんは広く浅くだけど様々な知識を持っている歩くグーグル先生
  • 上司Cさんは縁の下の力持ちで影で経理や勤怠まで面倒を見てくれるお母さん
  • 上司Dさんは朝から新聞読んで何もしないけど謎のコネクションで仕事を取ってくる人
  • 部下Eさんは5年くらい前の自分と同じくらいのプログラマ
こういう人々がいて、世に新しい価値(サービス)を提供するのがミッションで、社会貢献も行う会社であったとしましょう。
なお、予め言及しますが、社会正義や社会のルール(法律等)に基づいた行動している上で、です。
例えば上司Dさんがリベートや犯罪組織からの利益供与で仕事を取ってきても尊敬はできませんよね。

さて、新しい価値を創造する文化に追従するにはフロンティア精神を持つべきですし、ここらへんは分かりやすいですよね。
協調することも分かりやすいですよね。Aさん~Dさんはそれぞれ自分にない問題解決能力であったり、マネジメント力であったり、様々な知識であったり、人脈形成スキルを持っている訳ですから、お互い補完し合い仕事ができたら素晴らしいと思います。
Eさんはちょっと難しいですかね、個人的には失敗談や成功例のノウハウを上手く吸収して上手く成長して貰いたいし、成長してそのEさん独自の考え方を見せて欲しい、という形ですかね。



しかし実際はこんなに単純ではありませんね?ということでもう少し踏み込んで考えてみましょう。
この条件で自分は年収500万で、Bさんは年収2000万だとしましょう。(実際にはそこまで差は出ないと思いますが)
この条件下で同じ程度の難易度・仕事量のプログラミング(開発)をした際に、果たしてBさんと上手くコラボレーションできるでしょうか?
難しいですよね。なぜ難しいのでしょうか?
単純に考えると、Bさんはお金たくさん貰ってるしもうちょっと頑張って欲しいな、と感じる人が多いと思います。
ここでもしBさんが自分の4倍の仕事量や単純に4倍の労働時間、非常に専門的な知識が必要で4倍価値のあるコードを書いていれば、Bさんは凄いエンジニアとして凄いし、ぜひ一緒に仕事をして技を学びたい、と感じると思います。

これは、「自分から見て」Bさんが不当に報酬を受け取っていることと、自分が正当に報酬を受け取っていないことに対して不満を感じる訳です。
自分から見て、なんですよね。営業が評価され、モノを作ったエンジニアが評価されない、といった記事が多々あると思います。これは同じ問題に根差しているはずです。
この場合は、営業のXさんに対しての不満ではなく、会社はもう少しエンジニアを評価して欲しい、と思うはずです。

つまり、社会主義的な話になりますが、集団は帰属している個人から労働力を集め、その労働力を使った結果を富として再分配しているのですが、この労働力 / 再分配された富 の比率が自分の想定したものと集団が決定したものとの差が異なるために起り得て、集団が決定したものが許容できないために不満に思う訳です。
要するに、自分の中・集団で定義されている、この労働の単位が近しく、再分配される富の単位も近しく、更にその2点の比率も近しいのであれば単純な報酬という意味では不満はないのかな、と思います。

この不満というかギャップが容認できるようであれば、きっと素直に同じくらいのレベルの人であればお互いコラボレーションし合って頑張ろう、となり、凄いエンジニアであれば知識であったりノウハウであったりを学びたいですし、数年前の自分と同じくらいの人にはこうすれば良かった等のノウハウを伝えて上手く生かして欲しいと思えるはずです。


最後になりましたが纏めましょう。
ある人生の目的があり

  • それは、有名になりたい・社会の役に立ちたい・ものを作るのが楽しい等の欲求があり
  • その目的を達成するには
    • スキルA,B,C...
    • 知識A,B,C...
    が必要であり
それを獲得できそうな会社に所属したいという事ですね。

更には、会社に所属するに当たって、会社の価値観と自分の価値観のうち

  • 労働の単位が近しく
  • 報酬の単位が近しく
  • 労働と報酬の比率が近しい

があっていれば社風が合う、と言えそうです。



さて、私のパターンで見てみましょう。

  • 社会構造による欠陥や個人の生活に根差した問題、最適化できる領域において、解決に向けて貢献したい
  • 何を作る楽しさを求めたいし、より良く洗練させていきたい
  • 程々に技術力や作ったものに対して賞賛されたい
という目的があり、そのためには
  • システムを作り上げる際に柔軟に期間やコストに対応でき
  • その際に昔ながらの手法を使いつつ、新たな概念を取り入れて問題解決に取り組む姿勢があり
  • 様々な価値観を重宝し、そのノウハウや考え方を学ぶことができ
  • まったく違う事業も新規で起こしていくような
組織に所属したい、という事です。
価値観については
  • メンテナンス性・保守性・重複コードの少なさ
  • 幅広い知識
  • 深い知識
  • 人脈・営業力
  • コミュニケーション能力
  • 管理能力
等々の比率が近しければいいな、と思っています。どれがどの程度というのは、更に下に連なるツリーがあり多々ありすぎて自分でもよく分からない条件になります。
例えば深い知識でも「サーバの知識」と「COBOLの知識」と「rubyの知識」と「tomcatの知識」では価値は違いますよね?そしてそれらも重要といえば重要ですし、全部に100点中の100点を付けてよいなら100点になる訳です。
でもそんなことはなく、基本は100ポイントの割り振りです。
それも、目指しているもの、置かれた環境、人生で得られた価値観、世の中の状況や将来等々に左右され、100ポイントは目指している場所が同じでも振り方は変わってくる訳です。
ということで、ここは会社側も自分自身も書ききれないですし、この価値観の比率が合いそう、という事にしておきましょう。


長くなりましたがこんな感じでしょうか。
転職活動日記(2)はまた機会があれば書きたいなと思います。