はじめまして!新卒4年目エンジニアのささきです。
学生時代は情報系の学科でC言語とJavaにふれ、今はPHPをメインに扱っています。
ぐるなびに入社してからは検索チームに所属。主な業務はレストラン検索の内部ロジック改修やデータ連携、検索結果一覧ページの改修です。
今回はエンジニアとして3年経った今、「実はこれって大事だな」と私が思っていることについて書きます。今の時期には、会社にも慣れ、少しずつ案件を担当し始めた新卒エンジニアの方も多いと思います。私より経験の浅いエンジニアの皆さんの参考にしていただけると嬉しいです。
入社してから気づく、スケジュール管理とコミュニケーションの大切さ
仕事をしている中で思うのはスケジュール管理とコミュニケーションを特に意識すべきということです。ディレクターやデザイナーなど、いろんな方々と関わりながら案件を調整していくのはエンジニアの仕事。調整能力はエンジニアに欠かせないスキルの1つだと実感しています。
1. スケジュール管理で工数見積もりに慣れる
開発に着手する前に必ずタスクの洗い出しや工数の見積もりをなるべく正確におこないます。その後、算出された工数やタスクからスケジュールを制定し、リリース日を定めます。
この見通しが甘い場合、リリース日までのスケジュールにゆとりがなくなり、タスクが手一杯となって自分を追い詰めてしまいかねません。無理のないスケジュールを見積もることが重要です。
目の前の案件に追われて苦しんだ1年目
最初はスケジュール調整がうまくいきませんでした。入社してから1年ぐらいは工数見積もりもできなかったため、まわりに迷惑をかけ自分を追いつめるようなスケジュールを立てていました。無理なスケジュールを組んだ結果、完成はたいてい納期ギリギリ。十分にテストできず品質が良くないものを納品してしまったり、1日のタスク量が肥大化して帰宅時間が遅れたりしたこともありました。
入社から数カ月経って担当案件も増えはじめると、各タスクの進捗状況が把握できず、優先順位を見失いがちになりました。このときは目の前にある案件を1つずつ片付けることしかできず、先のスケジュールがあまり見えていなかったように思います。
仕事をはじめる前に行う7つのプロセス
案件が落ちてくるたびに行うのがこちら。自分で体得したものもあれば、先輩からアドバイスをもらったものもあります。この7つのプロセスを経てタスクを管理するとうまくいくケースが多かったです。
- 案件をタスクごとに分ける
- すべてのタスクに締切日をつける
- 1日の最初に優先順位を考えて今日やることを確認する
- ごはんを食べ終わって自席に戻り、ボーッとしている時にもう一度タスクを確認し、午後できるタスクかどうかを検討する
- 帰宅前に今日やったタスク内容と次の日にやらなきゃいけないタスクの確認をする
- 空き時間があれば前倒しできるタスクに着手する
- 少し余裕を持ったタスク管理を行う(例えば、1週間5人日だとしたらタスク量は3.5人日ぐらいしか埋めない。1日8人時だとしたら、タスク量は7人時しか埋めない、など)
大切なのは案件の全体像の把握。慣れないうちは、タスクに締め切り日をつけることからはじめてみましょう。
タスク管理に使っていたツール
実際に私が試したことや使ったツールを紹介します。
卓上カレンダーにすべてのタスク締切日を記入
カレンダーにタスク締め切り日を書いておくと1カ月のスケジュールがわかりやすいです。先が見通せるものであれば卓上カレンダーでなくてもOK。
ふせんを使う
タスクごとにふせんを作りボードに貼っておくのも良いと思います。デスク横の空きスペースなど目の届きやすい場所にボードを置くと自分の進捗を把握しやすいです。私も前はボードを使っていましたが、今はGoogleドライブ付属のGoogle 図形描画で管理しています。
Backlogでタスクを細かく洗い出す
Backlogでは親課題と子課題が作れますので、案件の内容を親課題、1つ1つのタスクを子課題として締切日を決めます。最初のタスク洗い出しの時点ですべてのタスクを子課題として登録しておくと忘れません。
ガントチャートも見れるため、先のスケジュールや締切日まで明確に把握することができます。
Kanbanchi
参考:Kanbanchi - free online tool for task and project management | Kanbanchi
カンバン形式のタスク管理ツールです。締切日の記入やチェックリスト作成ができ便利。色分けリボンを使うと緊急性が高いものの把握や優先度が低いものの区別をつけることもでき、今着手すべきタスクが把握しやすいです。
ファーストビューでタグが見れるのもメリットの1つ。DBチームに相談が必要な場合は「DB」、検索エンジンチームに相談が必要な場合は「Groonga」などのタグを入れ、タスクの種類が分かるようにしていました。
Brabio!
参考:ガントチャート,プロジェクト管理,スケジュール表がサクサク作れる。チャート作成がカンタンに共有!しかもフリー タスク管理にも
Brabioは無料でガントチャート機能が使えるため、ガントチャートでのタスク管理が気軽に体験できます。初めての人はこちらから試すのもいいかもしれません。タスクの期限前にメール通知が飛ぶのもGood。
タスク量が多いとき・自分で表を作る
大きな案件になるとタスクがかなり多くなってしまうこともあります。そのときは自分でタスクとスケジュールの表を作りましょう!タスク・スケジュールの表、今の開発状況・確認方法をシートにまとめると把握しやすいです。
他チームとの連携手順を把握する
いろいろと試した結果、今は
- カレンダーにすべてのタスク締切日を記入
- 付箋のタスク管理
- Backlogでのタスク洗い出し&ガントチャート作成
- 自分で表を作る(必要な場合のみ)
この4つの方法に落ち着きました。
タスク管理やスケジュール管理に慣れてくると、早い段階で案件の工数も正確に見積もることができるようになってきます。いくつか試して自分に合った方法でスケジュール・タスク管理を行えば、仕事をスムーズに進められるようになります。
2. 自分のタスクに没頭しないためのコミュニケーション方法
冒頭でも述べたように、私たちはディレクターやインフラエンジニア、フロントエンドエンジニアなどいろんな方々と関わって仕事を進めていきます。仕様を詰めたり、スケジュールを調整したり、ときには開発相談も……同じチームのメンバーとも協力し合いながら案件を進めることが多いです。
「この人の頼みならなんとかしよう」と思える関係をつくる
私はあまりメールや文章だけでのやり取りが好きではないため、できるだけ足を運んで直接話すように心がけています。 特に一緒に仕事をすることになったときは自分から歩み寄ることが大切です。
急に対応して欲しいことがあったとき、いきさつや現状を把握したうえで相談することができたため、話が通しやすかったことがあります。
逆に自分がお願いされる立場になったときも「この人からは、ちょっと無理なお願いをされてもなんとかしよう」と自然に思えました。ちょっとした働きかけで人への印象は大きく変わりますし、仕事の進め方も変わってくるのです。
無理に話題を作らなくてもいい
とはいえ「何を話せばいいの?」と不安に思われる方もいるかもしれませんね。ですが無理に話題をつくらないといけない、なんてことはありません。私も仕事の話がほとんどです。仕様についての質問や認識合わせ、もっとこんな仕様にしてみてはどうかという発案など……
大事なのは直接話すという行為。文字よりお互いの考えが伝わりやすくなるだけでなく、相手の印象に残る度合いが格段に違います。
コミュニケーションがとれる場を設ける
先程とは逆の視点になりますがコミュニケーションを密にとれるような場を作ることも大切。私のチームでは朝会やチーム定例、振り返りの時間を設けることで、各個人が何か困っていることはないかなどをチームメンバーに共有できる場を作っています。
タスクがあふれそうになったときも、早い段階でリーダーやチームメンバーに共有してアラートを出すことで、余裕を持った引継ぎと対応ができます。密にコミュニケーションをとっていたためキャッチアップをすぐに行うことができたのです。
チーム定例の様子。自然と「どう進めるべきか困っている案件があって……」と相談できます
また上司・同僚・後輩関係なく話し合いができていることで、その場だけではなく個々人でも話しやすいような関係性を築くことができているのだと思います。
エンジニアとして仕事を良好に進めるために、コミュニケーションはとても重要。自分のタスクだけに没頭せず、人との関わりも意識することが大切ですね。
おわりに
今回はあえて技術的要素にはふれず、意外とフォーカスされないけど大事だと思うことをまとめてみました。少しでも参考になったことがあれば嬉しいです!
お知らせ
ぐるなびでは一緒に働く仲間を募集しています。