2019/02/11
個人開発での失敗は今後の成功の基となる
勉強やインターンの合間を使って2~3ヶ月間、家計簿アプリの作成をしていた。
しかし、知識不足や作業方法が悪いことで中断。
何故、成功しなかったのかを主観で分析を行う。
次に行うべき作業がわからなくなった
URL: https://myself-calculator.herokuapp.com/
Github: https://github.com/kaibara/calculator
このアプリの開発に着手した時、何も決めずに作業していた。
「手探りで作業を進めていって、必要なことがでてきたらその時調べればいいや」
これが大きな間違いだった。
全体の作業を意識していなかったため、アプリ全体にとって本当に必要な機能が何か理解できていない。
このような状態で調査をしても、余計な情報が入ってくるばかりでどんどん時間がかかる。
その上、作成していたファイルを上書きしなければならなかったり、ファイル構成が変更されたりする。
つまり、余計な作業にかける時間が増え、全体を通してみると不必要であった作業を何度も行っていた。
その結果、次の2つが引き起こされた。
・ファイル構成が複雑になることでファイルごとの役割がわからなくなる
・次に行うべき作業が判断できなくなる
作業をしていても自分の考えがまとまらず、行動できていない状況に気づき、失敗したことを実感させられた。
機能にしか注目しておらず、システム全体を見れていなかった。
機能単体で見れば必要に思えることでも、ユーザーとしては使わない機能だったり、機能と機能の組み合わせによってコード全体が複雑になったりしてしまった。
もし、このやり方で開発できたとしても、メンテナンスが面倒になったり、新しい機能の追加がしづらくなったりしていたことが容易に想定できる。
また、システムは使い切りではなく、一定の期間は使用する。
今はどうにか開発できていても、いつかは失敗していただろう。
自分はこの失敗によって、最初に全体を設計することの重要性を確認できた。
今後も個人開発を行っていく予定だが、その際は以下のフローで行っていく。
着想は大切
今回の個人開発で行ったが、かなり良い方法だと実感した。
デザインを考えるだけでなく、必要な機能や機能ごとの連携を想像しやすい。
その上、無駄な機能は排除できるため、今後の設計や作業が洗練されていく。
紙に書くことは自分の考えをまとめられるので、他の作業にも使用していきたい。
必要な機能がわかったら、それをまとめていく。
どうすればそれを実現できるのか、似たような種類の機能はどれか。
このようなことを考えておくことで、今後の工程をラクにできると考える。
ログイン機能などであればFirebase
が使用できるし、データベースも同様だ。
自分でできるようにすることも必要だが、使えるものは使ったほうが良い。
サービスだけでなくパッケージなども調査して、作業にかかる負担を軽減する。
そして、その分、システムの質を高めていけば良い。
公式のドキュメントやProps、今まで開発してきた人の体験談と記事を参考にコードを想定する。
3と同じ様に、似たような種類のコードをまとめて作業するのが最も効率の良い方法だろう。
機能の実装、似たようなコードなど、まとめて行える作業はまとめて行う。
機能ごとではなく、システム全体を意識してまとめて行える作業を行い、エラーや複雑なファイル構成の原因を避ける。
助長なコードは書かず、管理がしやすいようにコードを書いていく。
失敗はしたが正直、そこまで悔しさなどはない。
失敗を判断したときも、「あ、失敗したわ」と思っただけだった。
開発できなかったことは残念であるが、勉強できたこと、理解できたことが多くある。
これからのプログラミングや個人開発でこの経験が活きると確信している。
家計簿アプリの開発という点で見れば失敗だが、自分の人生においてこの経験をできたことが嬉しい。
まずは、原因を特定することが大切だ。
失敗したことに挫けていたり、問題から逃げいていたりしたら、今回の経験が無駄になる。
これまでの工程を振り返って何が良かったのか、何が悪かったのかを見つめ直す。
そうすれば自然と、今後に活かせることが見えてくる。
どのような経験も行かせるためにも、自己分析をする癖は身につけておきたい。
失敗だろうと今後の人生に活かす
個人開発であれば失敗したって構わないし、失敗することのほうが大切ではないだろうか。
成功すれば自己肯定感に繋がるが、それで終わってしまうことも考えられる。
失敗することで、自分の現状を見つめられるだけでなく、活かせる経験も多い。
失敗してもスグに立ち上がれる上手な転び方を身につけて、これからも個人開発で失敗しまくろう。