2021.09.25著者はエンジニア歴4年目のプログラマです。社会人になってからプログラミングの勉強を始め、会社員としての勤務を経て現在フリーランスとして活動しています。今回は経験をもとに、案件の具体的な流れと、大変だったことをまとめていきます。プログラミングプログラミング学習と仕事との違い締め切りのプレッシャーがある避けて通れない課題があるテスト仕事では納品前のテストが必須まとめ:とにかく周囲やお客さんに相談することが大事!案件の流れについてプログラミングの案件は非常にざっくりいえば以下の流れで進みます。案件の流れ1ヒアリング・用件定義・・・お客様にヒアリングして、「何をどのようにつくるのか」を固める2料金見積もり・・・いくらでできるのかを考える3制作・プログラミング・・・実際にプログラミングをする4テスト・納品・・・制作したものにミスがないか確認したのち納品する大きな企業では分業されていることも多いようですが、規模の小さい企業では全てひとりで担当するケースも考えられます。フリーランスの場合には基本的には、当然全て自分でやる必要があるわけです。以降は1〜4での具体的な流れと、それぞれで大変なことについてまとめます。「ヒアリング」とは?ヒアリングとは、クライアントの作りたいものについて話を聞き、成果物の具体的なイメージを共有することです。お客様によっては具体的なイメージが固まりきっていない方も多いです。ここですり合わせをしておかないと、成果物とクライアントの求めるものがずれてしまうこともありますので、じっくり行いましょう。あまりにも実現が難しいようだったり、作りたいものと予算に大きな乖離があったりした場合にはこの段階でお断りすることもあります。ヒアリングで大変なことウェブの知識が少ないクライアントには「何ができて何ができないのか」という判断はつきません。悪気なく「これくらいは簡単にできるよね」と言ってくることも多いです。経験が少ないエンジニアには「何ができるのか?どれくらい時間がかかるのか?」の判断がつきません・・・。新人エンジニアあるあるなのですが、「まあ調べりゃなんとかなるだろ」と安請け合いしてしまうと大変なことになります。経験が少ないうちは「確認します」と一旦回答して、じっくり検討するようにしましょう。「用件定義」とは?用要件定義とは、クライアントの要望をまとめ、細分化し、どのように実現するかを考察する工程です。クライアントにもよりますが、ヒアリングの段階では、基本的には「これをやりたい!」という要望だけを言ってくることがほとんどです。それぞれの要望について、現状を確認した上で、問題を細分化し、具体的に解決方法・手段を考えるのはエンジニアの仕事です。不明点があれば再度クライアントに確認しつつ、要件定義を進めます。問題を小さく切り分けるという思考法に慣れていませんし、知識不足で切り分け方がわからないことも多いからです。具体的な解決方法を考える工程については、調べればわりとなんとかなるのですが、それが効率的な方法かどうかを判断する必要もあります。経験が浅いうちは、上司や詳しい人に一度確認をとったほうがいいでしょう。料金見積もり料金の検討さあ、ヒアリング・要件定義を終えたら、いよいよ料金を考えることになります。時間あたりの単価を決めて、何時間かかるかで掛け算して見積もり料金を決めます。もりが完成したら、それをお客様に提案します。お客様から「高い」という指摘をされることもあります。いうか、料金見積もりが一発で通るケースの方が珍しいです・・・。安易に値引きをするのではなく、「作業を減らす」ことで料金を削減するようにします。具体的には以下のような提案をするとよいでしょう。「料金が高い」と言われた場合に提案すべきこと・機能を減らす・より簡単な方法を検討する・一部作業をクライアントにやってもらうこのいずれかを提案すれば、作業量は減りますので、実質的には値下げをしなくても済みます。提案例1:機能を減らすエンジニアDBに問い合わせデータを保存する機能を削れば、その分の料金をお安くできます。提案例2:より簡単な方法の検討エンジニア問い合わせフォームではなく、クリック時にメールを起動するボタンを設置しますか?それでよければ少々お安く作れます。提案例3:一部の作業をクライアントに依頼HTML・CSSで、表示を作成する部分について、お客様の方で作業をしていただければ、その分の料金を削減できます。プログラミングさて、ここまでの工程を終えて、ようやく実際にプログラミングをすることになります。学習してある程度のスキルを身につけていたとしても、やはり勉強と仕事では違う点も多いです。プログラミング学習と仕事との違い締め切りのプレッシャーがある「そんなの当たり前じゃん」と思われるかもしれません。著者も頭ではわかっていました。頭でわかっているのと実際にやってみて痛感するのでは大きな差があります。仕事には締め切りが必ずあります。その締め切りは用件定義の際に自分で決めたものなわけです。(お客さんからの「なるべく急いで欲しい」というプレッシャーももちろんありますが・・・)こちらで提示した期限を守れないとなるとお客さんからの信用に影響してしまうので、大きなプレッシャーでした。避けて通れない課題があるお勉強であれば、「これは今はわからないけどいったん後回しで」ということが簡単にできてしまうのですが、実際の案件ではそうはいきません。「避けられない難しい課題」は必ず発生します。対応すると見積もり予算の範囲を大きく超えてしまうような、難しい課題にこの段階で気づくこともあります。必死に取り組んで解決することも大事ですが、お客さんに交渉することで回避することも可能です。交渉する際には、「Aでは難しいのでBではいかがでしょう」のような代替案を提示することが大事でしょう。プログラミング自体の能力はもちろん大事ですが、他の解決策を考えるという能力もとても重要なのです。勉強だけであれば「わかる」「できる」ことが目的なので、細かい部分のチェックについてはどうしても手を抜きがちです。実際の案件では、ミスに気づかないと取り返しのつかない事態が発生することも十分考えられます。テストを繰り返し行うことになるわけですが、これも大変です・・・。理想的には起こりうるパターンや異常系の動きも全て確認する必要があります。一人でやろうとすると膨大な時間がかかることもあります。会社員であればテストを周囲にお願いする。フリーランスであれば、お客様と共同でテストを行う等の対策が必要になると思います。まとめ:とにかく周囲やお客さんに相談することが大事!まだ仕事に慣れていないうちは、経験値が不足しているので想定外の事態がたくさん発生します。会社員であれば周囲に、フリーランスであればお客さんに必ず相談するようにしましょう。「なんとかしなければ」と一人で溜め込んでしまうと周囲もお客さんも対応ができません。少なくとも「困っている」ことだけでも共有しないと、みんながスムーズに進んでいると思い込んでしまいます。リスケジュールや仕様変更等、相談さえすれば打てる手がたくさんあるのです。僕が経験した範囲では上司の方もお客さんも皆さんいい人で、いつも親身になって一緒に対策を考えてくれました。著者は、新卒で入った会社を1年ほどで退職した後、経験ゼロから勉強して、プログラマになりました。この...プログラミング学習エンジニアになりたての頃に辛かったこと経験ゼロからプログラマになったのですが、なりたての頃は大変なこともたくさんありました。今回の記事で...プログラミング学習JavaScript(jQuery)とPHPの違いと使い分け【初心者向け】この記事は、JavaScript・jQueryとPHPの機能の違いを解説しています。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。上に表示された文字を入力してください。ホームプログラミング学習mulemuleと申します。IT業界で働いて約5年になります。ウェブ製作・ツール系アプリ製作を主に行っております。masa.メニューTOPブログCakePHPJavaScriptPHPChromeAddonChatGPTWordPressSwiftプログラミング学習フリーランスプロフィールお問い合わせプライバシーポリシーmuleの技術ブログ検索タイトルとURLをコピーしました。