システム開発でどうしても手が止まるとき。タスクのブレイクダウンをしよう

ファンブリューの金井です。

システム開発をしていると、「やることは何となくわかるけど、なぜか手が動かない」という経験はありませんか。

しっかりと仕様書を揃えている現場であればいいのですが、小さなプロジェクトでは資料がないことの方が多いでしょう。

またエラーが発生した時に、エラー文を読む以外の方法が思いつかなくて、手が止まってしまった経験はありませんか。

今回はタスクをうまくやっつけるための考え方についてご紹介したいと思います。

目次

タスクのブレイクダウンをやってみよう

タスクをもっと分割する

例えば、あるシステムの管理画面で「ユーザー情報をCSVで出力する」というタスクがあったとします。

タスクのタイトルを見れば、おおよそ何をするのかは予想がつきますが、具体的な手順はどこまで想像できるでしょうか。

やり方の細部までイメージするには、まずはタスクを小さくすることから始めるとお勧めです。

今回の例で言うと、次のように分割できるのではないでしょうか。

タスク分割の例
  • ユーザー一覧画面を表示する
  • ユーザー一覧画面にCSVダウンロードのボタンを設置する
  • システム内でユーザー情報の入ったCSVを作成する
  • 作成したCSVを読み込んでダウンロードさせる

このようにいくつかにやることを分ければ、少しは想像がしやすくなるはずです。

しかし、これでもまだ実装内容が想像できないこともあります。

そんなときは同じように、分割したタスクをさらに分割するということを繰り返していきます。

例えば、「ユーザー情報の表示」とは具体的にどんなことをすればいいのか考えたとき、以下のように分割できるかもしれません。

「ユーザー情報の表示」をさらに分割する例
  • ユーザー情報を表示する画面はソースコードのどこに当たるのか
  • ウェブシステムならルーティングを行っているはず。URLの定義があるファイルを見てみる
  • もし存在しないなら、ユーザー一覧画面から作成
  • そもそも、このシステムのユーザーとは何を指すのか。依頼者に確認する

このように箇条書きで良いので、丁寧に分割してみるといいでしょう。

そうすれば、時間はかかっても、一歩ずつ先へ進んでいる実感が持てます。

最終的なタスクには程遠いですが、手前の部分をおろそかにすればするほど、全体を考えるときの足枷となります。

タスクの分割は多くの人が無意識でやっていることではありますが、意識してやることで頭の中が整理されます。

とにかくタスクを開始する

とっかかりがあるなら、まずは作業に入ってみる

タスクをうまくブレイクダウンできれば、「やってみようかな」と言う気持ちが芽生えやすくなります。

ただ、一部でも不明なところがあると、「できるかわからない」と言う気持ちも残ります。

そんなときは、とにかく初めてみることをお勧めします。

まずは作業を始めてしまって、軽く脳をウォーミングアップしましょう。

少し調べたり、コードを書いたりしているうちに、新たな気づきを得られることもあれば、単純に作業に慣れてくることもあります。

タスクを始める前に深く考えられないのは、エンジンがかかっていないからです。

また、何かを思いつくためには、少しでも動き出して情報を集めていかなければなりません。

一度に大きなタスクをこなそうとするのではなく、焦らずに少しずつ取り組んでみると、着実に進んでいけるでしょう。

タスクに疑問を投げかける

タスクの内容を見て詳細が想像できないのは、うまく洞察ができていないときに起こります。

例えば、「ユーザー情報をCSVでダウンロードする」というタスクで、これを何回読んでも文字情報しか入ってこないなんてこともあります。

そんなときは、次にのように、なぜどうやってどこでといった言葉をタスクに投げかけてみましょう。

「どうやって」とタスクに問いかける例

どうやってユーザー情報を取得するのか?

どうやってCSVのデータを作るのか?

どうやってダウンロードさせるのか?

タスクの意味が分かりづらい時には「なぜ」を使うとイメージしやすくなります。

「なぜ」を使ってタスクの背景を探る

なぜユーザー情報なのか?

なぜCSVなのか?

なぜダウンロードさせるのか?

タスクの背景がわかるようになれば、依頼者の意図を汲んで仕事ができるようになります。

例えば、新規登録のユーザーが見たいという背景でCSVダウンロードのタスクが生まれたなら、毎日新着のユーザーをメールで管理者に通知するといった方法でも、要件を満たすことができるかもしれません。

シンプルにしよう

タスクを簡単にシンプルにする

似たような話になりますが、タスクが難しいなら簡単に、シンプルにすることを意識してみましょう。

例えば、ユーザー情報のCSVをダウンロードさせる方法がわからなくて悩んでいるとしましょう。

特にCSVのダウンロードの部分に引っ掛かりを感じているのであれば、まずはその機能を簡単に実装できないか考えてみます。

初めからユーザーのCSVデータを作るのは手間ですから、適当なCSVファイルを用意して、それがうまくダウンロードできるかどうか確認してみます。

それができたら、あとはそのCSVをユーザー情報の入ったものに差し替えるだけです。

もちろん、ユーザー情報をCSVにするというタスクは残っていますが、同じような考え方で、できるだけ簡単になるようにタスクを改変します

CSVの作り方だけを知りたいなら、適当なデータを用意して、それがうまく書き込めるか見れれば十分でしょう。

そうすれば、ユーザーのデータをどうやって取ってくるかは、後で考えればよくなります。

分解する癖をつけよう

突然ですが、例えば、営業さんが「売上を上げる」と目標を掲げたとき、それだけでは行動は起こせません。

具体的に何をすればいいのかわからないからです。

システム開発のタスクも似たようなところがあり、特に関わっているプロジェクトの業務知識が不足していると作業にはなかなか入れません。

普段からタスクを細かくする癖をつけておけば、時間はかかったとしても着実に進むことができます。

タスクを分割して分析が進めば、何がわからないのかもわかってきます。

そこまで気づくことができれば、誰かに質問をしても、より良い答えが返ってきやすくなります。

今回は私がタスクに取り組むときの方法について書いてみました。

拙い文章ではありますが、ここまでお読みいただきありがとうございました。

未経験でエンジニアを目指すなら

ファンブリューではエンジニアになりたい人を支援しています。

現在こんなお悩みがあれば、ぜひ一度ご相談ください。

  • プログラミングを学習したいが、何から始めたらいいかわからない。
  • IT業界に就職するために必要な知識が何かわからない。
  • 実務経験がなくて現場に入れない

金井 泰樹のアバター 金井 泰樹 FUNBREW代表

FUNBREWの代表。
新卒からIT系の企業に勤め、SES、スマホアプリ開発、自社開発の会社で経験を積んで独立。
新卒時代にエンジニアとしてのキャリアを積むのに失敗し、その後に苦労した経験から、現在教育事業の立ち上げを準備中。
強みはウェブシステム開発全般と迅速なレスポンスです。

目次