未経験プログラマが知るべき7つのこと
Webアプリケーションエンジニアの藤田です。完全未経験で入社しましたがいよいよ研修計画を立てる担当になり、会社の課題図書になっている「プログラマが知るべき97つのこと」を読み返しています。
読んでいるとプログラマと一つのくくりで語っているけれども、”企業で複数人で”開発しているプログラマを想定した項目が多いように思います。そうでないプログラマにはピンとこない項目もあるのではないでしょうか。
そこで今回は、クラウドワークスなど個人の開発経験を経て弊社に入社した同僚のYさんに聞いた「個人開発と企業での開発の違い」から、「未経験プログラマが知るべき7つのこと」をまとめました。
ここでの未経験プログラマは個人開発経験はあるけれど、企業受託開発経験がないプログラマのこと。企業で働くことに不安を感じているプログラマは必見です!
1. 工数感覚はシビアに
バッファ、見積もり工数、社内打ち合わせ工数の概念を知りました。
大きな違いは個人なのか複数人なのかの違いによるマネジメント工数ですね。
これまでの個人開発は副業だったのもありリソースはあまり気にせずだったそうですが、自分のリソースの使い方を以前よりも意識するようになったそう。
時間や数字を意識することでメリハリも生まれますね。
2. バージョン管理って便利
恥ずかしながらバージョン管理はGitを使わずZipで固めるだけでした……。
会社に入ってGit管理をするようになり、便利さを知ったそうです。
変更依頼があった後、やっぱりもとに戻してほしいというようなパターンもあるので、個人でもバージョン管理はしておいたほうが良いですよね。探しやすさではやっぱりZipよりGitが優秀です。
弊社ではGitLabやBacklogを利用していますが、マージリクエスト・プルリクエストでのコードレビューで他人の目が入ることで、新しい観点を持てたりミスに気づけたり、成長速度を上げる要因にもなっています。
3. 開発補助ツールは使ったほうがいい
テスト環境、あれ便利ですね~ ローカル環境でしかデバックしたことありませんでした。
このお話を聞いたときすぐには意味を飲み込めず、「水って飲めますよね」と言われたくらいの感覚でした。
テスト環境がない苦しみを味わいはすれど、いつの間にかテスト環境があるのが当たり前で、ありがたみを実感できていなかった自分に気づかされました……。
たしかに単発だったり小さめの規模の案件は、テスト環境が支給されないものも多いかもしれません。弊社だとその場合は、弊社で契約しているサーバの一部をテスト環境にすることができますが、個人ではハードルが高いかもしれません。
継続案件では作業効率化のためにJenkinsを利用しての自動デプロイも取り入れますし、「複数人での開発は人的ミスを減らすには?」という思考になり、リスクを考慮したりその対策を実行しやすいように思います。
4. 職務分掌は難しいがすり合わせるべし
担当範囲の切り分けに悩みます。
個人開発ではクライアントとのやり取り、開発、納品まで一貫して自分一人でやることが多いですが、弊社ではWebディレクター、フロントエンドエンジニアと分業して案件を遂行することが多いです。
クライアントとのやり取りはWebディレクター、フロントエンドはフロントエンドエンジニア、バックエンドやサーバーに関わる部分は我々バックエンドのエンジニア、とざっくり分かれてはいますが、それだけをやればいいわけではありません。
「フロントエンドとバックエンドのつなぎは?」「専門的な話を交えた交渉が必要になったら?」と一概に職務分掌を定義しきれないところがあるので、メンバーのスキルを踏まえ、その都度すり合わせる必要があります。
慣れもありますが、他職種の理解やコミュニケーションが大切ですね。
5. 要件定義のすり合わせ能力も求められる
要件定義のすり合わせが大変ですね。
弊社の顧客は多様な業界の多様なリテラシーを持つ方々ですが、課題感をヒアリングしてこちらからシステムを提案することも少なくありません。
受注前の見積もりも含めると、要件定義や画面設計などのコードを書いていない時間が結構あることに驚かれたそうです。
クライアントと直接お話することもありますが、多くの場合は顧客深耕に慣れている営業やディレクターが仲介します。
6. リリースして終わりじゃない
保守業務をやるとは考えてみたこともなかったです。
継続して関わっている案件ではリリースして終わりでなく、その後も保守費用をいただいてサーバの保守や、要望をもとに調整や追加開発も行います。
納品後実際に触ってみて新たに要望が出たり、別の案件につながることもあるので、納品が完全なゴールでないことのほうが多いです。
7. 納品のない受託開発という考え
こういう成果を提供するという業務形態があるとは驚きました。
長期でリソースを貸し出す契約をして、”納品”でなく”成果”を提供していく業務スタイルがあります。弊社もこれを推進しようとしています。
休業が比較的簡単にできるフリーランスで働く個人よりも、企業同士で締結するほうが現実的なため、企業プログラマの働き方の特徴に挙げられるかと思います。
納品のない受託開発について詳しくは倉貫義人さんの「経営者が新規事業を失敗させてしまう7つの罠」のスライドを御覧ください。
まとめ
クラウドワークスなどでの個人開発が「単発」「小規模」「個人」での開発だとすると、企業プログラマは「継続的」「大規模」「複数人」で開発することで、一人の開発ではできない経験を積むことができます。最終的には個人開発者を目指す人も、企業での開発を経験しておくとプログラマとしての幅が広がるのではないでしょうか。
個人的にはチームで仕事するときの感覚って、自分のために自炊するのは億劫でも、家族や友人と料理を作るときはちょっとこだわってみたい気持ちに似ているなあと思います。手分けしたり指示をしたりされたりするのが面倒なこともありますが、料理する仲間に楽させてあげたい、自分も楽したい気持ちからアイデアが浮かぶものです。
リスペクトでは一緒にそんな開発をする仲間を募集しています。