#はじめに
Rails,nuxt.js,herokuでwebアプリ開発を学習し、先日アプリを公開しました。
学習に約半年、開発に3ヶ月〜4ヶ月ほどかかってしまいましたがなんとか形にできたと思います。
そこで個人でwebアプリ開発してみたいが、実務経験を積んでからと踏みとどまっている実務未経験エンジニアの人に向けて書いてみました。
結論は**作り始めれば案外なんとかなるのでとりあえず始めてみよう!**です。
#個人開発は未経験者に可能なのか
アプリの個人開発と聞くと実務経験10年の凄腕エンジニアが挑戦する難関事業と感じてしまうかもしれませんが、意外とそんなことありません。
なぜなら複雑で多機能なアプリである必要はないからです。また、アプリの個人開発に実務経験は不要です。マークザッカバーグがfacebookを作る際に実務経験を問われたとは思わないからです。
学習が一通り終わったならば、2周目をやるのではなくアプリを1つ作って公開する方が技術力がつくと思います。
#個人開発のメリット・デメリット
僕が考える実務未経験者が個人でアプリ開発をするメリットとデメリットをまとめてみました。
##デメリット
####とにかく時間がかかる
新しいライブラリ活用やエラー解決にかなりの時間がかかります。背景知識や自分が学んだ技術を網羅しているわけではないので、少しの違いでコードが動かないことは日常茶飯事です。
また実装やエラーを解決するために英語を読むしかなかったり、何が問題かわからず手当たり次第試行錯誤したりとかなり時間がかかります。
僕も一つのライブラリを実装できるまで1ヶ月近くかかりました。経験が豊富なら勘所が分かりすぐに解決できると思いますが、最初のうちは右も左もわからず苦労します。
####GitHubに失敗作がたまる
実務未経験での個人開発はとにかっく失敗と挫折の連続です。
最初はGithubの使い方に慣れていなかったので開発を断念したアプリが溜まっていきます。開発しているアプリを見つけるのに一手間かかるようになるくらいは溜まりました。
今は不要なアプリを削除してスッキリしましたが、とにかく失敗と挫折の連続でした。
####思うように進まずに心が折れる
実装に時間がかかったり、予想していないエラーが出てきて時間がかかってしまったり、想定していない動きや問題が起きると心が折れます。いつでもやめていいので、もういいかなと挫折します。
途中からは挫折した分だけGithubに失敗作がたまるだけなので、また失敗作ができたなぐらいに思って進めてました。かなりメンタルが鍛えられました。
##メリット
####好き勝手に進められる
僕がエンジニアを目指す理由として、自由に働きたいと思っていたからです。
個人開発ではその自由が最大限あり、とても楽しく進められました。
実装する機能も自由に選択でき、好きな時に好きな場所でコードを書くことがとても楽しいことだと感じられました。
####技術力が向上する
試行錯誤の連続で技術力が身に付きます。
特にエラー解決の連続なので、エラーした際の勘所がわかるようになります。
また、必要な機能を実装するために使ったことがないライブラリを検討することも増えます。
検討する際にはライブラリを使ってみることが多いので技術力が格段に上がります。
####最悪ポートフォリオになる
アプリを完成させられれば転職の際のポートフォリオになります。
自分のアイデアからアプリを作っているので、面接の際もこのアプリを作ろうと思った背景から説明できますし、苦労した点として多くの失敗や挫折経験を経て完成させたことを伝えることができます。
間違いなく面接での評価が上がると思います。
#どうすればリリースできるのか
####アイデア
まずアイデアがなければ何も始まりません。
僕の場合は、プログラミング学習に何度も挫折しましたが最終的に未経験からエンジニアになれた経験から、学習目的を明確することでプログラミングを継続し目的を達成できると考えたところが始まりでした。
革新的なものだけがアイデアではありません。普段感じている不便なことを解決することもアイデアです。
こんなのあったらいいな、から始めてみるのが良いと思います。
####必要最低限の機能
アイデアが決まったらそのアイデアを実現するために必要な最低限の機能を考えます。
アイデアが出てくるとそこからどんどん膨らみます。膨らめば膨らむだけ実装する機能が増えて時間もかかります。
まずは必要最低限を見極めて最後まで終わらせることを意識する必要があります。
####不出来でも動けば先に進む
公開するためにアプリを作っているとどうしても不具合が目について進まなくなります。
その結果一つの機能を完璧にするために多くの時間をかけることになっていしまいます。
これをすると時間がかかり、挫折する可能性が高くなります。
実装してみて動けば次の機能の実装を進めることがアプリ公開に必要な考え方です。
####最後までやり切る
最後は気合いです。
途中で何度もアプリ開発から逃げたくなります。もう十分頑張ったのではないかと逃げたくなります。
特に開発期間が長くなればなるほど逃げを考える回数が多くなります。
できるだけ早く最後までやり切ることが重要です。
#おわりに
個人開発は最初と最後は最高です。
なぜなら最初はアイデアが溢れてきて、モチベーションが高く維持できるからです。
そして最後は完成させた満足感でいっぱいになります。
しかし実装中は失敗と挫折の連続です。
みたことないエラーに実装できないイライラ、知り合いの順調な学習記録をみた時の焦りなどそれはもう大変な時間です。(途中から知り合いの日報が書かれているslackは開かなくなりました、、、)
それでも個人開発をしてよかったと思っていますし、今後も個人開発を続けていきます。
少しでも個人開発に興味を持ったら、とりあえず初めてみるのが良いと思います。