僕は趣味で個人Web開発をしています。ただ、多くの遊んでもらってるわけでもなく、ましてや収益も発生していないへなちょこサービスばかりです。
それでも、自分なりに試行錯誤したことはあるので、これから「個人で何か作ってみたい」って人への参考程度にはなるかなと思ってこの記事を書きました。
そもそも休日に開発をすべきか論争
ひと昔のTwitterで「エンジニアは休日にもプログラミングをするべきか」についての賑わいがあったと思う。
"エンジニアは日々勉強しなければいけない職業だからもちろんプログラミングだ” とか "仕事(プログラミング)とプライベート(その他)は分けた方が人生が充実する"とか賛否両論があった。
僕個人の考えとしては「暇ならプログラミングしよっか」なのでどちらかと言えば賛成派になるが、すべきかどうかについては「人それぞれ」というスタンス。
現時点で振り返ってみると、まあやってて良かったかなぁと
正社員の時は昇給にもつながったし、フリーランスでお仕事を継続できているのもこの習慣のおかげと言っても過言ではないです
当然、中にはまだ報われていない努力もありますが、自己投資としては効果ありました。断言できる。なので、休みの日に少しでもコードを読んだり書いたりするのも悪くはないですよ。
どうせやるなら個人開発しようぜ
ただ、同じ時間をあてるなら個人開発が良いです。体感したメリットとしては
- サービス開発で結構しんどい0 -> 1で作る過程を経験できる
- 自分が興味のある技術をサービスに活かす方法を学ぶことができる
- コスト管理を意識することができる
- 実際に使うユーザーを想定して何を提供するかなどを意識することができる
- UI/UXへの多少の理解が身に付く
- ブログへのネタになる
- ドメイン周りの知識が身に付く
- ホスティングに関する知識が身に付く
- コスト管理を意識するようになる
- マネタイズを考えるきっかけになる
- 自分の箱庭なので、制約なく開発できる
- 単純にコードを書く技術力が上がる
- 面談での話のネタになる
- もしかしたら収益化できる
ぐらいかな、結構多いw
エンジニアとしての総合的な実力が上がるということが言いたかった
とりあえず水飲み場を作る:手っ取り早くリリースしようぜ
ここまで読んで、万が一個人開発してみたいと思った時に意識した方がいいことがある
それは、リリースを手っ取り早く済ませることだ
個人開発にはいろんな落とし穴がある。
- 意識エベレスト:やりたい理想が高いが実力やリソースがないと絶望して諦める
- 評価を気にする:リリース前から使ってみて悪く言われることを想像して諦める
- 難しいことに挑戦する:報酬がないのに、何でこんなことやってんだと萎えて諦める
- 時間をかけすぎる:唯一無二のすごいものを作ろうと意気込むが、時間が経過し途中で「僕は何のために生きてるんだ」と血迷って諦める
それにハマってしまって、サービスを没にしたり途中で諦めてしまうことが大半だと思う
個人開発と実際のエンジニアの仕事とは明確に違う点がある「報酬が発生しない」ことだ
報酬が発生しないということは、責任もない。当然、自分の内から湧き出るモチベーションに頼って進めていく他ない
なので、なによりも最初はモチベーションという燃料を切らさず進めていくのが大事だ
いわゆる、ペットボトルの水だけ渡された状態でサバイバルを始める感じだ
そういった状況だと何を優先すべきかは明確だ モチベーションという水の供給源を作ることである 間違ってもいきなり住み心地の良い家を立てたりはしないだろう
具体的にはリリースまで、サービスの3割の機能でもいいからlocalhost以外で見れるようにするのを1ヶ月以内に行う
実際に外部からアクセスできるサービスは単純に「うおー!立ち上がった!」という気分にさせてくれるし、人に見せることで「すげー」といってもらうこともあるし
サービスが役に立っているかどうかは別として、その存在自体が次のアクションへのモチベーションを作ってくれるのだ
ちなみに、僕が去年リリースしたEmovee(https://emovee.org)はアイデア、デザイン、技術選定、実装、デプロイ(https://shiro-secret-base.com/?p=1073)含めて3週間くらいで作ったがいまだに全くユーザーには使われていない
ただ、何かを世に出したということで案件の面談時のネタにはなってくれている 誇れるものではなくても無いと有るでは全然違うというのがわかる人にはわかる
水とパンだけでも生存できる状態にしておく:維持費はとにかく安く
個人で作っている以上、自分のお財布からその維持費を払うことになるだろう
ここにもお金をかけ過ぎないという意識が重要だ
例えばAWSのECSを2台立ち上げてALBで負荷分散して、DBはAuroraで可用性を高めてみたいなのを個人レベルでやると月10万くらいは飛ぶ
収益も発生していないのに、毎月に家賃ぐらいを払っていたらモチベーションだけでは続けられない
なので、個人開発で金銭コストのかかることはNGだ お金をかけるのは損失を避けるためかリターンを得られると見込んだ時にするべき
1ヶ月の維持費が1000円に満たさない範囲が理想だと思う 昼飯一回分ぐらいの運用費でしばらくは頑張る
先ほどのEmovee(https://emovee.org)はさくらVPSで月800円弱だし、今開発中のNetaverse(https://e-neta-houko.com)はVercelとHerokuで立ち上げている(この構成は別の記事にしたい)がHerokuの有料プランでDB込みで月700円弱である
長生きしてくれればその分、人の目に留まるチャンスがあるので維持費は安い方がいい
まとめ
以上が僕が個人開発で意識していることである。ここまで書いてみて、大したことないサービス作ってるだけなのに、こんな偉そうなこと言ってていいのかなとは正直思うが
まあ、そもそも読んでもらえなければその人にとっては書いていないことと同義なので やってみようの精神でこんな記事を書いてみた
今までは、技術的な課題を解決するための方法論の記事を100個くらい書いてきたが こういうエンジニアがどうやって考えながら開発してるのかって案外興味持たれるんじゃないかなぁという思いもあります
とりあえず言いたいこととしては、個人開発は一人で砂漠でサバイバルするみたいな感覚になるのでうまく自分のモチベーションとお金を大事にしながら進めていくのがいいぜーということでした
まとめると
- 個人開発はコードを書く以上に難しく、その経験はエンジニアにとって価値がある
- まずはリリースして、そこから湧き出たモチベーションで少しづつ機能を追加していくのがいい
- お金はかけ過ぎないようにね
である
この記事が人気になれば第2弾も作るかもです