はじめに
はじめまして!bravesoft株式会社でサーバーサイドエンジニアとしてインターン中の、専門学校4年生の林田です!
今、この記事を読んでいるあなたは、「実務経験を積みたいけど、具体的に何をすればいい?」「自分は実務で本当にやっていけるの?」と悩んでいる学生エンジニアの方ではないでしょうか。私も半年前までは、皆さんと同じように、実務未経験でこれからどうなるか、いろいろと思い悩んでいました。
私が通うIT専門学校では、HTML/CSS、Java、PHP、Git、SQLなど、一通りの技術は学びました。個人開発にも挑戦し、簡単なWebアプリケーションを作った経験もあります。しかし、学んだ知識や作った成果物が、「実際の現場で通用するのか?」という疑問は常に頭の片隅にありました。恥ずかしながら当時は、「APIって何の略?どうやって使うの?」というレベル感でしたから、なおさらです。
そんな状態から、インターンとして実務に携わり、約6か月。最初は右も左も分からず、失敗の連続でした。 しかし、試行錯誤を繰り返し、先輩方に助けていただきながら、今ではなんとかチームの一員としてタスクをこなせるようになってきました。
この記事では、実務未経験だった私が、現場でついていくために意識してきたこと、実践してきた経験を、共有します! 特に今回は、多くの学生が最初に壁にぶつかるであろう、「タスクの進め方」に焦点を当てて、プランニングから実装までの具体的なノウハウを解説します。
対象読者
この記事では、実務未経験の学生エンジニアが抱えがちな、こんな疑問や不安を解決します!
- プランニングってどうやるの?過剰なタスクを引き受けないためには?
- タスクの見積もりが甘かった!どうやってリカバリーすればいい?
- 実装前に、仕様の確認や仮説検証が重要なのはなぜ?
- タスクが遅れそうな時、いつ、どうやって先輩に報告すればいいの?
- 質問する前に、自分でどれくらい考えるべき?効果的な質問方法は?
- チャットと通話、どう使い分ける?
タスクの進め方
弊社では、スクラム開発を採用しています。スクラム開発では、スプリントという1〜4週間程度の期間で区切り、その期間内に終わらせるタスクを決めて開発を進めていきます。私が最初に躓いたのは、このスプリントの開始時に行うタスクのプランニングです。
プランニングの落とし穴
プランニングで最も重要なのは、自分の実力を過信せず、現実的な見積もりを行うことです。『調子に乗って』多くのタスクを引き受けてしまうと、スプリント期間内に終わらせることができず、納期遅れや品質低下を招きます。結果として、自分自身がストレスを抱えるだけでなく、チームメンバーにも迷惑をかけてしまいます。そのため、自分の処理能力を冷静に見極め、余裕を持ったプランニングを心がけましょう。
例えば、初めてアサインされたタスクで「このくらいはできるだろう」と10個のタスクを引き受けたとします。しかし、実際には5個しか終わらず、スプリントの目標を達成できなかった、というケースはよくあります。
スプリントプランニングが終われば、いよいよタスクをこなしていくフェーズです。最初に任せられるのは、バグの修正や軽微な機能追加といったタスクでしょう。例えば、「ログイン画面のボタンの色を変更する」といったものです。では、早速コードを書いていこう…となる前に、一度立ち止まって、仮説と検証を行いましょう。
コードを書く前に、仮説と検証を!
実装を始める前に、まずはタスクの仕様を正確に理解し、システム全体の動作を把握することが重要です。いきなりコードを書き始めると、見当違いな修正をしてしまい、時間を無駄にしてしまう可能性があります。
そうならないためには、「どのように実装すれば、期待通りに動作するのか?」という仮説を立てることが重要です。 具体的には、以下の点を確認しましょう。
- タスクの目的とゴールは何か?
- 関連するシステムやモジュールの仕様はどうなっているか?
- どのような手順で実装を進めるべきか?
- 考えられるエラーケースや例外処理はどうするか?
そして、立てた仮説は、必ず経験豊富な先輩エンジニアにレビューしてもらいましょう。 第三者の視点からフィードバックをもらうことで、認識のズレや実装漏れを防ぐことができます。ただ、なにもわからないのであれば、最初の段階で先輩に相談してみるのも有効な方法です。
タスクが期限内に終わりそうにない場合、迷わず、すぐに報告しよう!
スプリントプランニングで余裕を持った見積もりを行い、仮説検証も経て、いよいよ実装フェーズです。しかし、実際にコードを書いてみると、予想外のバグが発生したり、考慮漏れが発覚したりして、見積もり以上の時間が必要になることがあります。「プランニングでは余裕を持ったはずなのに、なぜか遅れが出ている…」そんな状況に陥ることもあるでしょう。ここで、「まだ何とかなるはず」と楽観視するのは危険です。
多くの人は、「自分のタスクが遅れることは、能力不足と思われるのではないか」「迷惑をかけてしまうのではないか」と不安になり、報告を躊躇してしまいがちです。しかし、スプリントというチーム全体の目標達成を考えた時、報告の遅れは致命的です。
タスクが期日通りに終わりそうにない場合は、”自分とチームを守る”ためにすぐに報告しましょう。 報告が早ければ早いほど、打てる対策の選択肢は増えます。
報告すべき理由は、主に以下の3つです。
- 状況の正確な把握: 遅れているという事実をチームで共有することで、何が問題で、どのくらい影響があるのかを正確に把握できます。
- 適切な対策の実施: プランニングに問題があったのか、実装で想定外の事態が発生したのか、原因を特定し、適切な対策を打つことができます。例えば、タスクの優先順位を見直したり、他のメンバーに協力を仰いだり、場合によってはスプリントゴールの見直しも必要です。
- 早期のリスク回避: 問題が大きくなる前に対処することで、スプリント全体の失敗リスクを最小限に抑えられます。また、早めに相談することで、自分一人では解決できなかった問題に対して、先輩エンジニアから的確なアドバイスをもらえる可能性も高まります。
最も避けるべきなのは、報告せずに期日を過ぎてしまうことです。 これは、スプリントゴールの達成を危うくするだけでなく、チーム全体の信頼を損ね、スケジュールの見直しなど、大きな問題に発展してしまいます。結果、自分自身の評価を下げることにもつながるでしょう。
報告は決して恥ずかしいことではありません。むしろ、チームの一員として責任ある行動です。 勇気を持って、早めに報告することを心がけましょう。
タスクで手が止まったら?効率的に解決する3ステップ
タスクを進める中で、実装方法が分からなかったり、エラーの原因が特定できなかったり、手が止まってしまうことは誰にでもあります。 そんな時、どのように対処するのが良いのでしょうか?ここでは、効率的に問題を解決するための3つのステップを紹介します。
ステップ1:自分で考える時間を決める
まずは、自分で考える時間を制限しましょう。 例えば、「30分考えても解決策が見つからなければ、次のステップに移る」と決めます。時間を制限する理由は、時間をかけすぎて、1つのタスクにいつまでも時間をかけていては、仕事が前に進まないからです。
ステップ2:状況を整理し、質問を明確にする
制限時間が来たら、やみくもに質問するのではなく、まずは、現時点までにわかっていること、どこで躓いて次に何をすべきなのか、何がわからないのかを明確にしましょう。 このステップを踏むことで、先輩エンジニアに質問する際に、状況を正確に伝え、的確なアドバイスをもらいやすくなります。さらに、自分自身で問題を整理することで、解決策が見えてくることもあります。
ステップ3:チャットより通話で、効率的に解決
質問内容が明確になったら、先輩エンジニアに質問しましょう。この時、最初はチャットよりも通話で質問することをお勧めします。 なぜなら、口頭でのやり取りの方が、圧倒的に情報量が多く、認識の齟齬も生まれにくいからです。
例えば、以下のようなメリットがあります。
- 細かいニュアンスを伝えられる
- 双方向のコミュニケーションで、不明点をその場で解消できる
- 画面共有などを活用すれば、問題の箇所を視覚的に共有できる
- 雑談などから思わぬ解決の糸口が見つかることもある
ただし、緊急性が低い場合や、先輩エンジニアが忙しそうな場合は、まずチャットで概要を伝え、通話の時間を調整してもらうなどの配慮も必要です。
最後に
この記事は「タスクの進め方」に焦点を当てて、私自身がインターンとして働く中で得た、特に「タスクの進め方」に関する経験と学びを共有させていただきました。
読み返してみると、まだまだ未熟で、至らない点も多いと反省しています。それでも、この記事が、実務に挑戦しようとしている学生エンジニアの皆さんにとって、少しでも参考になれば嬉しいです。
半年前、実務未経験だった私は、「自分は本当にエンジニアとしてやっていけるのだろうか」と、大きな不安を抱えていました。しかし、勇気を出してインターンに飛び込み、多くの失敗と学びを経験する中で、少しずつ自信を持てるようになってきました。
皆さんも、きっと大丈夫です。 実務には、学校では学べない、多くの学びと成長のチャンスがあります。最初は失敗の連続かもしれませんが、それを乗り越えた先には、エンジニアとしての大きな成長が待っています。
一緒に、一歩ずつ、成長していきましょう!私も皆さんに負けないように、これからも努力し続けます!
次回は、「実装力を上げるためにやっていること編」として、私が普段から実践している勉強法や、スキルアップのために心がけていることを紹介しますので、そちらもぜひ読んでみてください!では!