自分のキャリアの棚卸、これから先のキャリアを真面目に考えてみた


Photo by John Fraissinet

社内の勉強会(SICP)が終わって反省会兼飲み会で
先輩と何気なしにキャリアの話をしました。


先輩「君のエンジニアとしての強みは何?」
僕「言われてみるとなんもないですねえ。」
先輩「じゃあそろそろ真剣に強みを考えたほうがいいよ。」


よくある日常的な会話でした。そして過去何度もいろいろな方に聞かれたと思います。
エンジニアに成り立ての頃はピンポイントなキャリアを目指すよりも知識の幅は広く持って
成長していこうと考えていました。

ただ現時点では、知識においては幅広い領域を持っていて、
それでいてエンジニアとして中途半端なスキルになってしまっている自分や、
何度もキャリアの質問を投げかけられるたりする周りの環境、
若い優秀なエンジニアの入社が刺激になってきており
「そろそろ突出した技能を持つべきではないか?」と考えるようになっていきました。

そんな背景があり、改めて過去の自分を振り返りこれから先を真剣に考えてみました。

過去のキャリア

社会人になってから過去携わってきたプロジェクトや職務。

  1. 2006年
    1. 社内コミュニケーションツールの保守開発
    2. 社内情報システムGにて社内サーバ、PCの管理、ライセンスの管理
  2. 2007年
    1. 社内PCの長期的な購入プランを提案、導入
    2. 自社サイトの広告枠管理システムの保守、機能追加
  3. 2008年
    1. クチコミサイトの保守、機能追加
    2. クチコミサイトのSEO責任者を担当
  4. 2009年
    1. プロジェクトのスコープ、WBS管理を主に担当
    2. クチコミサイトに新規クチコミ投稿、閲覧、管理システムの追加
    3. クチコミサイトの新規広告システム設計
    4. 開発マネージャー的な役割を持ちシステムの方向性、中長期リスク分析などの業務を行う
    5. 障害時の対応フローや障害の定義など作成
  5. 2010年前半
    1. クチコミサイトの新規広告システム実装
    2. クチコミサイトのシステム設計思想をドキュメント化して引き継ぎ
  6. 2010年後半
    1. ビジネスポータルサイトの運用と保守
    2. 販売実績管理システムの運用と保守
    3. 社内システム、プロダクトの基礎構築
    4. プロダクトの監視体制構築中

2007年10月から2010年3月まで現在所属会社とは別の会社に
出向という形で勤務していました。
出向先は人数が少なくて一人一人が担う業務が多く、必然的に
営業サイドの人、経営サイドの人とも関わるため多くの業務を
理解できて自分ひとりで意思決定できる機会が多かったです。

今思うと非常に多くの経験を積めたと思います。2010年後半は
所属している会社に戻ってきましたが、業態も以前とは異なり、
まだまだインプット出来ていない領域が多いためしっかりと地に
足をついたキャリアは歩めていません。このエントリを書いて
いる段階で8ヶ月居るのでここから目に見える成果が出てくると
思います。

過去のキャリアから仕入れた知識

今自分が保持している知識も改めて洗いだしてみます。

PC

社内でもキモがられるほどショートカットキーやアプリは使いこなしていると思います。
マニアックすぎるらしいです。あと、PCを軽くする設定を探すのが好きです。
PC復旧のトラブルシューティングはやや得意ですが、トラブルシューティングというのは
ググると8割ぐらいの問題が解決します。
Windowsであれば問題の2割は再起動で解決すると思っています。

ネットワーク

確か2005年ごろにCCNAを取得しました。有効期限が3年なのでもう執行しています。
小中規模であればネットワーク構築はできると思います。
VLANは知っているけれどもどうやって設定するかは完全に忘れています。
TCP/IPというよりはOSI参照モデルのほうがしっくりきます。
ただ、OSIのL4の理解は乏しいです。ロードバランサなどは扱えません。

プログラミング

あまりできないです。基準が難しいところですが確実に優秀なプログラマではないです。

PHP

どちらかというと5.x系に詳しいですが優秀なPHPプログラマに比べれば
まだまだ初心者レベルだと思います。
関数はあまり覚えていないのでよくphp.net/{function_name}で検索しています。
PHPフレームワークでは以下のものに触れました。

  • Mojavi1系
  • Ethna2.3系
  • Symfony1.2系
  • ZendFW1.0系
  • CodeIgniter1.7.2

Ethna、ZendFW、Symfony、CodeIgniter、Mojaviの順に好きです。

JavaScript

あまり得意ではないですがまあ標準的な書き方はわかります。
あとjQueryもリファレンスを見ながらであれば書けるレベルです。

SQL

基本的なSQLの使い方、インデックスの張り方はわかると思います。
まだ読み終わったわけではありませんがオライリー
実践ハイパフォーマンスMySQLとかは普通に読める程度の知識量だと思っています。
DBサーバの負荷が高いときはslow query log読んだり、show index from hogeとか
show processlistを活用して原因の特定を行い負荷軽減策を施していました。
クチコミサイトのSlaveDBの負荷を3分の1にしたのはいい思い出です。

SEO

2年ぐらいSEOに関わってきました。SEOはしっかりとしたメディア運営
しているとそこまで難しくないです。内部リンクをどう的確に貼るのかとか、
URLをどのような階層構造にするかとか、どのキーワードを戦略ワードとするか、
KPIは何か、を考えて実践する行動力さえあれば誰でもできます。
でも最も効果のあるSEOは「顧客のためによいメディアとなる!」
という明確な意思と行動なのだと思います。

Apache

開発やSEOに必要なHTTPヘッダーの役割を理解していました。
サーバメンテの時は503を返したりとか設定していました。

bash

比較的好きな言語です。bashを作った人は本当に偉大だなと思いました。
bashのコマンドを組み合わせて死活監視のツールなど作ったりしました。
bashは奥が深いのでまだまだ理解は浅いです。この言語はシンプルさを
追求する発想力も必要ですね。

Linux

資格でたとえるならLPIC Level1程度の実力です。
実際にLPI Level1を保持しています。特になんの自慢にもならない資格ですが。
RedHat系のほうが詳しいですがDebian系のUbuntuは好きです。
アプリのインストールであればrpmでもapt-getでもmakeでも一応流れは理解しています。
サーバ障害時の詳細な原因の切り分けや正確な復旧は苦手です。

プロジェクトマネジメント

WBS管理やコミュニケーションにおいては普通の業務がこなせると思います。
チームメンバーがもめていたらなだめるし仕様が曖昧なら関係者に詰めます。
スケジュールのリスクは即上長に報告します。当たり前の仕事を当たり前にこなすレベルです。

オブジェクト指向

全然いけていないと思います。継承を理解していてPHPではインタフェースがあるとか、
デザインパターンの簡単なものは知っています。
センスのない設計ばかりしてしまいます。

ソースコードの管理

基本はSubversionばかり触ってきましたがGitもそこそこ触れます。
2008年頃からSubversionサーバの管理も行っていました。
2010年4月から社内にGitサーバを導入しました。
ただ、Gitについては学習コストが高すぎて社内に浸透させることができませんでしたが。
特に、「デザイナーに習得させるのは困難」という結論に至りました。

これからのキャリア

さて、過去のキャリアと知識を洗い出したところでここからが今後のキャリアについてです。

先の先輩の質問をうけたとき、僕は漠然と、直感的にアーキテクトや
PMとしての強みを持ちたいと思いました。

それはなぜか?


現在の短所としてオブジェクト指向や業務理解の不足を感じています。
また、僕は社会の中で自身のスキルには優位性、一意性を出したいと思っています。
これは肌感ですが設計や業務理解の領域を得意としているエンジニアは社内、
社外にそんなにもいないように感じており、そこにチャンスがあると思っています。
誰もが理解できるシンプルな設計書を書き、プログラマのために使えるクラスを
設計・用意し、プロジェクトを成功させることができる人間になりたいと思っています。