DIG IT

エンジニア、iOS、個人開発、日々考えていること etc

個人開発と職業エンジニアの違い

はじめに

iOSエンジニアのhiroです。

私はかれこれ4年ほどiOSエンジニアとして働いています。また同時に個人でもiOSアプリをリリースしています。

それらの活動の中で、個人開発と職業エンジニアにはいくつか違いがあると感じています。今回はその違いについて、私の個人的な見解を書きます。

個人開発をしている方の中には、いずれエンジニア職に就きたいと考えている方もいらっしゃるかもしれません。そういった方にとって「職業エンジニアってこんな感じなんだ」と思ってもらえる記事になればうれしいです。

あるいは、普段はエンジニアとして働いているけど、いずれ個人開発をやってみたいという方が個人開発をはじめてみるきっかけになれば幸いです。

職業エンジニアはコードを読む時間が長い

個人開発の最大の特徴は、自由にコードを書けることでしょう。作るプロダクトはもちろん、使用するライブラリや設計の手法まで自由です。どんなにひどいコードを書いても、誰に咎められることもありません。(それによって自分が損することは否定できないですが。)

一方で、職業エンジニアは一定のルール下でコードを書く場合がほとんどです。また、誰かが書いたコードを読んでいる時間が長いです。新たなチームやプロジェクトにアサインされると、まずそのプロダクトのコードを読み解く作業から始まります。チームメンバーが書いたコードをレビューする機会も日常的にあります。コードを読むタイミングで知らなかった技術に触れることも珍しくありません。

他の人が書いたコードを読み解く力が求められる点は、個人開発との大きな違いだと思います。私はiOSエンジニアが5名ほどいるチームで働いていたことがありますが、一日のほとんどがコードレビューだった時期もあります。また既に退職されていたり他のチームに行ってしまったメンバーが残したコードを読み解かなければいけない機会も何度かありました。これは結構大変でした。

これは同時に、自分自身も読み手のことを意識したコードを書く必要があるということを表しています。良いコードは良い文章と似ています。個人開発でもきれいなコードを書くことは大事ですが、チームで開発する場合はきれいなだけでなく、既存のコードの書き方に合わせたり、他のメンバーが後から見ても分かりやすい変数名等を心掛ける必要があります。これは職業エンジニアとして働く上でかなり重要なスキルです。

個人開発は力試しの要素がある

気になる技術を気軽に試してみる場所として、個人開発は適切です。一方で、基礎となるスキルがない状態で個人開発を始めると、思う様に開発が進まず行き詰まってしまうこともめずらしくありません。個人開発には力試しの要素が少なからずあります。外部サービスも充実していて第三者に質問しやすい環境が整っているとはいえ、やはり自分で問題を解消する大変さはあります。

一方で職業エンジニアの場合は、初めて扱う技術に戸惑う事があっても周りのメンバーの力を借りられる場合が多いです。色んな視点で課題を解決できるのはやはりチームの強さだと思います。また周りに技術レベルが高い人がいると、自分の技術レベルもだんだん上がってきます。

ここら辺はそれぞれの考え方がありますが、私は個人開発の最初の一歩は慣れ親しんだ技術を使って進めるのが良いと思います。個人開発はアイデアを考えるところから始まるので、意外と考えることが多いです。個人開発を最後までやりきるには、最後はモチベーションとの戦いになるので、ある程度慣れてきた段階で新しい技術を使ってみるのがオススメです。

職業エンジニアであれば、お金を貰いながら技術を学べます。この点は職業エンジニアの一番の良さだと思います。新しいことを学んで、それらを個人開発に活かしたりアウトプットしていくことも出来ます。

フィードバックについて

フィードバックについても大きな違いがあります。

個人開発はサービスをリリースしても、すぐには沢山のフィードバックを貰えないケースが多いです。継続して自らのサービスを広める努力が必要です。開発するだけで終わりでないのが個人開発の大変なところでもあり、醍醐味でもあります。

言い方を変えれば、開発だけでないデザインやマーケティングのことを考える必要があるので、プログラミングだけでない総合的なスキルを高めたい人にとって、個人開発は1つの選択肢になり得るでしょう。サービス全体のことを考えて決めていく事が好きであれば、個人開発はぴったりです。

個人開発のマネタイズは難しいですが、上手にマネタイズされている方もいて勉強になります。

blog.craftz.dog

一方で職業エンジニアとしてサービスを開発していると、自分が作った画面や機能がすぐに多くの人に使われて、沢山のフィードバックが貰えることが多いです。これはエンジニアに限らない話ですが、サラリーマンとして働いていると一個人ではなかなか経験できない様な大きなプロジェクトやサービスに携われます。

自分が作ったものが多くの人に使われて喜ばれる経験をすると、エンジニアになって良かったなと思います。もちろん個人開発でも自らのサービスを成長させて沢山のフィードバックをもらっているエンジニアは多くいますが、エンジニアとしての経験が浅いうちに沢山のフィードバックを貰えてチームに貢献できるというのは職業エンジニアの良さだと思います。

時間の使い方について

個人開発と職業エンジニアでは、時間の使い方にも違いがあります。

個人開発は基本的には時間の使い方が自由です。いつまでにリリースやアップデートをするのかは自ら決める事ができます。中にはバグ対応など緊急を要するケースもありますが、基本は隙間時間で開発したり、気が向かない時期は開発をストップすることも可能です。マイペースに好きなことを出来るのが、エンジニアにとっては最高です。

ただ自由すぎるあまり、長期間に渡って開発をしているとモチベーションが維持しづらくなったり、途中で投げ出しやすいという側面もあります。何を目的として個人開発をするかにもよりますが、サービスをリリースして沢山の人に使ってもらいたいと考えている場合は、最低限の機能だけを作って短期間でリリースするのが良いと思います。

一方で職業エンジニアの場合、基本的には納期が決まっていて、それに合わせて開発を行なっていきます。その為、時間を意識して開発するという点が求められます。難易度の高いタスクの場合には時間が掛かる事もありますが、そういった場合にも周囲のメンバーに協力を求めたり、スケジュールを予測して調整する動きが求められます。これらのスキルは実務経験を重ねることで身につける事が出来ますが、チームで開発する時に求められるスキルの1つです。

個人開発は自分の名前を出しやすい

個人開発とは文字通り、自分の名前で世の中にサービスを出すことです。これは職業エンジニアとして働いているだけでは難しいことです。また自らの力でサービスをリリースさせると自信にもなりますし、周りの人に自分のことを知ってもらう為の材料にもなります。私も初めてiOSアプリをリリースできた時、とてもうれしかったのを覚えています。

今の時代はエンジニアも個人でも発信することが重要だと私は思います。個人開発しているとアウトプットの機会にも恵まれる様になるので、エンジニアとしてある程度慣れてきたら、一度は個人開発してみるのがオススメです。

アウトプットの重要性やメリットについては、こちらの記事にも書きましたので良ければ読んでください。

zenn.dev

さいごに

個人開発にも職業エンジニアにもそれぞれの良さがあります。自分に合っている方を選ぶというやり方もありますが、両方ともやるという選択肢もあります。

この記事がエンジニアとして日々頑張っている方に届いて、少しでも新たな挑戦の際の参考になれば幸いです。最後まで読んでくださりありがとうございました。