背景
2年目のフリーランスエンジニアですが、7月から金融系のソフトウェア開発にアサインされ、四苦八苦しながら開発しております。
現場経験が浅いこともあり、最低単価でスタートしましたが、やはり実力がある人は単価がぐんぐん上がっていく世界なので、色々吸収して行きたいなーと思っております。
そこで最初の1ヶ月で学んだソフトウェア開発での重要そうな考え方をメモとしてまとめておきます。
自分用ですが、新人研修などを受けずにいきなりフリーランスになった人は硬めの現場で働く参考になるかもです。
基礎となる考え方
①自分の書いたコードでバグを生まない
自分の書いたコードで本番環境にバグを生まない事が大前提。
意図した変更以外がGithub上に反映されない様に、commit前に不要な部分を消し取る作業が必要になる。
source treeなどを使ってcommit前にレビューしやすい形にしておくと良いでしょう。
②予定より一段階早く進める
見積もりの後手に回ると一気に進めにくくなるので、絶対避ける。
問題に直面した時に、手元でコネていると時間はアッという間にすぎるので、いかに早期に相談出来るかが鍵を握る。
その為に、他人が設定したタスクの見積もりよりも、自分の手元では内容・期限の両面でもう一段階タスクを細分化しておく。
そうする事で予定通りにならない場合に対しての質問やSOSを早い段階で出す事が出来、結果解決しやすくなる。(精神的にも余裕が生まれる)
ちなみにもう一段階タスクを細分化出来ない場合は、タスクのゴールイメージが出来ていないか、方針を立てられていないかなので、自分の手元で最低限の情報の整理をしたら相談した方が良いと思います。
③アウトプット至上主義
評価の軸はどれだけアウトプットを出したかです。
その過程でどれだけ質問したか、どれだけ時間をかけたかは関係がありません。
アウトプットの量を増やしていくには、時間との戦いです。
アウトプットを阻害するものは、差込のタスクか、自分だけでコードをコネている時間が長くなってしまう事です。
差込タスクに関しては、質問や相談の回答待ちの際や今日の自分の中での進捗が済むなど、自分の中でタイミングを決めて、そこでのみで行うと良いでしょう。
commitや進捗報告が大きい単位になってしまい、自分の手元でコードをコネている時間が長くなってしまうと、アウトプットのスピードが落ちるのと、他人のレビューなどが入った場合の修正分が多くなってしまいます。
なので、いかに自分だけでコネている時間を短く出来るかが重要になります。
slackなどでコミュニケーション取りつつ、数時間に一回はcommitを通してコードのやり取りを出来るとアウトプットのスピードは上がると思います。
その際に②で書いた、細分化タスクの切り目で行うと周りも安心しやすと思います。
④他人の時間を無闇に奪っちゃいけないが、自分のタスクは確実にコンプリートさせる
大前提として他人の時間を奪う様な質問、相談はNGですが、それより重要なのは振られたタスクをしっかり予定通りにコンプリートする事です。
その上で、周りの人に迷惑をかけない為に、相手が相談に乗りやすい形を用意しましょう。
相手が汲み取らなければいけない部分を減らしてあげる工夫ができると良いです。
まとめ
1ヶ月目は考え方、仕事の進め方について多くのアドバイスを頂きました。
現場レベルでバリバリのエンジニアさんに比べるとまだまだ多くの部分で足りていないですが、日々進歩していきたいです。