EuDs

EuDs

EuDs's Blog
twitter
github

暑期プロジェクトの感悟

この夏の学校では、1 ヶ月間プロジェクトの開発に取り組みました。1 ヶ月と言っても、実際にコーディングに使える時間は約 3 週間ほどです。具体的な時間帯は午前 8 時半から午後 5 時半までです。最後の 1 週間は夜もコーディングに使います。

3 週間という時間は多くはありませんが、このような経験は珍しいもので、多くの困難を乗り越え、多くの収穫もありました。ここに記録しておきます。

新しい技術の学習#

今回は、これまで触れたことのないいくつかの技術スタックを使用しました:フロントエンドの React、バックエンドの Flask。プロジェクトの後半では Redux と useSWR も導入しました。

新しい技術を学ぶことにはかなりの情熱があります。これらを選んだのも、これまで触れたことのないものを試してみたいという思いからです。また、使用した技術スタックは比較的簡単に使い始めることができました。ただし、Redux はまだ完全に理解できていないため、全体的な開発体験においては、自分が触れたことのない技術だけでなく、スムーズに進むことができました。

しかし、私は大きな問題を発見しました。最後の締め切りに追われるため、急いで結果を求める傾向があるため、使い方や例を見てからすぐにコーディングを始めました。最終的には何かを書くことができましたが、いつも半分しか理解していない感じがあり、確かな理解感がありませんでした。

また、個人の時間とエネルギーは限られている一方、技術は日々進化しています。庄子が言ったように、「私たちの生は限りがあり、知識は限りがありません」。貪欲に多くを求めると、結局何もかも手に入らなくなります。

DRY と AHA#

今回のプロジェクトでは、バックエンドのほとんどを担当しました。しかし、この 2,000 行程度の自分で開発したコードでも、3 週目になると、時折特定の部分を書き直したくなるという考えが浮かび上がりました。

特に、アクションの部分です。このプロジェクトでは、ユーザーのお気に入り、評価、コメントという 3 つの機能を 1 つのアクションとして抽象化しました。最初に書いた時は少し自己満足に浸っていましたし、自分自身が適切な内部結合を実現したと思っていました。

しかし、後でその欠点に気付きました:特定の部分を個別に変更したい場合、結合度の高さのため、変更する必要のないコードも変更する必要があります。プロジェクトの後半になると、フロントエンドとバックエンドの連携はほぼ完了しています。この時点で核心的な機能を変更すると、全体が揺れ動くことになります。変更はできますが、時間的なコストを負担することができません。最終的な解決策は、別のメソッドをいくつか書くことでしたが、これによりコードが非常に醜くなりました。この時、私は本当に自分がどんな気持ちであるかを体験しました。

過去を振り返り、将来的にこのような状況をできるだけ避ける方法を考えると、2 つの原則が効果的かもしれません:

  1. DRY
    "Don't repeat yourself" の略です。私は一部の共通コードをメソッドとしてまとめる意識はありましたが、まだ多くのコードがあり、使えるコードを直接コピー&ペーストし、それを基に少し変更することを選びました。これは手間を省くことができ、書くときもスムーズですが、後で変更しようとすると、以前の手抜きが相当なコストを支払うことになります。もし私が以前に時間をかけてそれをまとめることに多くの時間を費やしていたら、コードを変更するのも簡単でした。
  2. AHA
    "avoid hasty abstractions" の略です。この原則は、"premature optimization is root of all evil" という言葉を思い起こさせます。再びアクションを例に挙げると、3 つの操作を 1 つに結合する際にもう少し考えると良かったかもしれません。ただし、言い換えると、どのような状況が急ぎすぎず、早すぎないのかということです。私は現段階ではまだ経験が不足していると思うので、次回同様の状況に遭遇した場合、おそらく自分の小さな知恵に満足し、自分が掘った次の落とし穴に躊躇せずに入るでしょう。

プロジェクトの進行#

今回の進行はウォーターフォールモデルを採用しましたが、前学期に使用したスクラムと比較して違和感を感じました。個人的に最大の違いは、プロジェクトの初期段階で数日間連続して比較的抽象的な文書を書くことです。要件定義書や設計書など、私たち新人にもまだまだ経験不足のものを考慮することができません。また、数日間の時間投資は文字だけであり、このような体験は非常に良くありません。

全体的に言えば、私の学生時代におけるこのような経験は比較的ユニークなものであり、1 ヶ月の時間を無駄にすることはありませんでした。自分自身には比較的満足しています。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。