フルスタックエンジニアを目指して日々修行中でございます。
会社ではサーバーサイドエンジニアとして仕事をしています。
今から約8ヶ月前、改め入社してから約7ヶ月が経った頃、
欲張りな私はある社内サイトのリニューアル業務にて、プロジェクトマネージャー(以下PM)を担当することになりました。
そこから成長を実感した6つのことを書きたいと思います。
その前に、担当したプロジェクトの概要と、
解決すべき問題点を共有しておきますね(☝ ՞ਊ ՞)☝ウィー
#担当したプロジェクトの概要
- リニューアルするサイトは、WordPressで開発された社内の情報共有サイト
- コンセプトは「見やすい!探しやすい!おしゃれ!」
- チームメンバーは計9名(依頼者は別で2名)
- プロジェクトマネージャー1人(私)
- インフラ周り2人
- デザイナー1人
- コーダー兼フロントエンジニア1人
- WordPress実装2人(1人は私)
- 大先輩サポート4人
- プロジェクト期間は6ヶ月間
#解決すべき問題点
- 検索しても欲しい記事が見つかりにくい
- 記事を投稿するにもDBの事情で遂行しにくい
- そもそも連語検索出来ない
- ページ表示速度が重い
etc.
「やります!!!」とは言っては見たものの、プロジェクトというものを全く知らず、頭の中には「プロジェクトX」しか湧いてきませんでしたね。
(☝ ՞ਊ ՞)☝ウィー
#とにかくがむしゃらにやって見た結果
見事に納期ギリギリでしたが上記の解決すべき問題点を解決+αまで行い、満足できる状態でリリース完了することが出来ました!
結果までの課程を吹っ飛ばしていますが、一言で言うと、
「大変だったけれど、チームで働くっていいな」
ですね。
#今プロジェクトで成長した6つのこと
##1. 知ったかぶりは何もいいことがない
当初私は、「理解できない自分」が許せなく、いわゆるプライドが高い人間でしたため「分からないことを分かったふり」をしていました。しかし、PMとして業務を遂行するにあたり、要件定義、仕様の決定、システム設計などを知ったかぶりでこなせるはずもありません。。
そんな中、あるチームのメンバーがたくさん私に質問をしてくることに気づき、知ったかぶりをせず、純粋に質問をしてくれるそのメンバーを見て、「何も恥ずかしくないし、むしろかっこいい」と感じ、私のつまらない意地っぱりは気づけば解消されていましたね。
結果、依頼者との認識の齟齬なくプロダクトをリリースすることができました。
##2. ユーザーというものを背負う責任感
最初は楽しくて設計から実装まで行なっていましたが、リリース1ヶ月前あたりになると、全身から次の言葉が冷や汗と共に発せられるんですよね。
「今自分が開発しているこのプロダクトを使う人は本当に喜ぶのだろうか」
その時に、自己満足の虚しさを知ったような気がします。当たり前のことかもしれませんが、よく耳にする「相手のためにやっていればいつか自分に返ってくる」という言葉の意味を深く理解したと思います。自分のためよりも、相手(ユーザー)のために努力する方が量も質も上がりますね。
好きな女の子と仲良くなるためにはどうすればいいか本気で考えるのと近しいと思います。( ´థ౪థ)
##3. チームを最大化させる要因は心地よいコミュニケーション
なぜチームで仕事をするのかと考えた時に、「良いものを作るには、1人では物理的にも精神的にも出来ない」からなんじゃないかと思っています。そんなチームのメンバーは当然全員「人間」な訳で、人間を理解せずにコミュニケーション云々は言えないです。
笑っていると楽しいし、それでいて真剣な仕事の相談も出来たらアイデア出まくりですし頑張ろうという気になります。それが循環しているすごくいいチームでした。
これが、一つのゴールを目指し、いいアウトプットを出すチームの「助け合い」なんだなぁと深く感じましたね。
##4. 実装は、Computerとの会話
PMもやりつつ、WordPressの実装も行なったのですが、WordPressは便利と思う反面、融通が効きにくい仕組みでもあります。自分がしたいことをComputerがわかるように記述してあげるというのが大事で、それをするためにはWordPressさんのことを知らないと出来ないことです。
結果、全てにおいて相手のことを知らないと上手くいかないということですね。
適当に書いてしまったコードから、1ヶ月後くらいにツケが回ってきましたし。。。
(☝ ՞ਊ ՞)☝ウィー(☝ ՞ਊ ՞)=☞)՞ਊ ՞) ←こんな感じ
##5. スケジューリングの重要性と難しさ
今回のプロジェクトで自分に一番足りないなと感じたのが、プロジェクト全体を見通して大枠のスケジュールを組み立てることと、それを管理することですね。
自分一人の予定であれば、「気合いダァーーー!!!!」といって根性で納期を守ればいいですが、チーム全体となると話は違います。他のプロジェクトと平行で動いているメンバーもいます。そんな中、大先輩が大枠のスケジュールの引き方を指導してくれ、一気にプロジェクト完遂までの道のりが見えるようになりました。
今当初の自分にアドバイスをするのであれば、「プロジェクトが完了した時を具体的にイメージして、その時全てがどうあるべきかを考えろ」といいますね。考えれば必然なものは思いつくし、足りないものは後からでも補えば良いので。
##6. 要件定義とシステム設計がある程度できたらチームで認識合わせのキックオフをすべき
今プロジェクトは完全に0からのスタート(元データ以外)だったので、事前にリスクヘッジへの対策を練るべきでした。しかし、それをしなかった結果、行き当たりばったりの開発になった部分があり、PMとしての不足です。
キックオフ以外にも、こまめな共有を怠らないのもPMの仕事だと感じました。
#最後に
6ヶ月間のPMと実装の二刀流経験を通して、PMの重要な役割とは、「相手のことを考えた上でのコミュニケーションを如何に取っていくか」なのではないかと感じています。
結果的にリリース後にユーザーからいいコメントをもらえたり、追加の依頼が来たりと、楽しい保守・運用が出来ています。これも、相手のことを考え抜いたチームだからこそ、ユーザー、依頼者から期待をされるのだと思います。
また、PMと開発の二刀流だったことから、システム設計や、工数管理も、本来「実装を依頼する人と実装を依頼される人」のどちらも経験しながらだったから円滑に進められたのかなと感じます。
結論としては、やはり勉強あるのみですね!
(☝ ՞ਊ ՞)=☞)՞ਊ ՞)(☝ ՞ਊ ՞)=☞)՞ਊ ՞)(☝ ՞ਊ ՞)=☞)՞ਊ ՞)