やる気がストロングZERO

やる気のストロングスタイル

個人開発でも業務クオリティを目指すのが重要

今、個人開発で「俺が考える最強の契約管理システム」の作成作業をしている。
作成作業しながら「個人開発でも業務クオリティを目指すのが重要だな」と感じたのでその理由を書く。

個人開発は業務と違う方向で良い経験を詰める場であるが、いくらでも手を抜けてしまえるので、業務クオリティを目指すことで良い経験を積めるように仕向ける必要がある。

ちなみにこの作成作業はYouTubeで公開していて、作業リポジトリGitHubにある。

[YouTube]
www.youtube.com

[GitHub]
github.com

個人開発は得た知識を存分に試せる場所だ

なんで個人開発をするのか?

なぜなら業務での開発では、自分の思い通りに作業できない事が多いからだ。

これは組織の一員として開発を行うからには当然だ。
すべての責任を自分で負えるわけではないからだ。

しかし、僕にもいろいろ試したい設計や書き方や技術がある。
これらを試せる「誰にも邪魔されない環境」とは個人開発しかない。

「あのときレビューで反対された設計で実際に突き進んでいたらどうなったのか?」等、存分に試すのである。

手を抜いてしまうという個人開発の罠

個人開発は自由なので、いくらでも手を抜けてしまう。
「自分しか使わないし、ログイン機能はパスワード固定にしておいたら良いか」
「自分しか使わないし、httpsでなくてもいいか」
みたいな感じである。

業務だったらどんなめんどくさい実装も強烈なプレッシャーによってやらざるを得ない状況になり、それがスキルとして蓄積されていく。
そして大抵は面倒くさい事が必要なスキルだったり必要な機能なのである。

そういうものを避けて開発を行っても大したものは出来ない。

僕は今まで個人開発でいくつかのサービスやらツールやらを作った。

  • エロ動画リンク収集ボット
  • 集めたリンクでアフィリエイトサイトの構築
  • 芸能人に似たAV女優を探して紐付けるシステム
  • 株価をトラッキングしてある条件を検出したら教えてくれるシステム
  • twitterで特定のハッシュタグで投稿された画像リンクを収集するシステム
  • twitterで収集した画像リンクを一覧表示させるサイト
  • 持ち物リスト共有するサービス

これらは上記で言う手を抜いた個人開発で、動きはしているもののサービスとして低機能で完成度は低い。

しかし無意味だったかと言えばそうではなくて、お小遣い程度の稼ぎと、エンジニアとしての転職時には大いに役立った。

また、得られた一番大きなものとして、
「僕はサービスを完成させられる」という自信を得る事ができた。

この経験から「個人開発の目標」はその人のスキルによって目指すべき段階があると考えるようになった。

まずは「完成させること」を目指し、自信がついたら「クオリティ」を目指す

僕がそうだったのだが、まだ経験が浅く何かを作りきった事がないなら「完成させる事」を目標にする。
完成させる為に最短距離を行く。できるだけ機能は削ぎ落とす。

自分が完成させられるかもわからない状態で、細かい部分にこだわっていてもモチベーションが続かない。
完成に近づく事がモチベーションになる。

そうして「完成させられる自信」がついたら、次はクオリティを目指す。

業務で行うのと同レベルに妥協の無いものを作る。
実際に使えるものを作る。
高品質な機能が追加されることがモチベーションになる。

ただし、かけられる時間は少ないので機能は絞り込む。

業務でもなかなか出来ない経験を個人開発で得る

例えば「ログイン機能」だが、大抵の場合は既に実装されていて、なかなか自分で作ることって少ない。

なんとなく作り方は知っていても、実際に作るとなると「パスワードリセットはセキュリティ的にどのようにすればいいのか?」意外にに調べる事は多い。

「作り方を一応知っている」と「実際に実装したことがある」ではかなり違う。
こういう経験を個人開発でどんどん得ていく。