プログラマーとして成功する方法 【成長スピードを意識する】
未経験からプログラマーになったばかりの人「どうやったら早く一人前のプログラマーになれるかな」「成長するために重要なポイントとかあるのかな」
こういった人向けに僕が成長に必要だと思うことを紹介します。
本記事の内容
- 自分が成長できる環境に身を置くことが重要
- フリーランスなら成長できない環境だと思ったらできるだけ速く撤退する
- 常に成長を意識しながらコードを書くと成長スピードは上がると思う
本記事を書いている僕は現役のエンジニアで、プログラマー歴4年です。
僕は30代後半に未経験からプログラマーになったので、常に成長スピードを意識してきました。その年齢でエンジニアになることはかなり難しいと言われるところから、未経験からできる限りのことをして、今ではフリーランスのエンジニアとして働くことができるようになりました。
自分の経験から成長スピードを意識することの重要性をお伝えしたいと思います。
自分が成長できる環境に身を置くことが重要
どんなに独学で自己学習をしても、やはり現場での開発経験に勝るものはありません。
自己学習だと自分ができる範囲内の技術でモノを作ってしまいますが、現場では基本的に他人が仕様を決めるため、自分が知らないことできないことを含めて対応する必要があります。
これは大きな違いで難易度が全く異なります。これを繰り返すことによって、現場でしか身に着けられない経験などがあります。また仕事にもよりますが多くの場合、個人学習で開発する場合と仕事として開発する場合は難易度だけでなく、規模が大きいということも挙げられます。
フリーランスのエンジニアで、スキルを落とさないようにするために、金銭的には受託開発をする必要はないのに、受託開発をしているというエンジニアもいるくらいです。
仕事として取り組む場合は一日の長い時間をかけて取り組むので必然的にその技術が身につきやすい、仕事だと期限によるプレッシャーや周りからのプレッシャーがあり、緊張感がある中での開発で記憶の定着が普通に学習したときとは違った形で入ってくる傾向が強いと個人的には感じます。
チームで開発するメリット
現場での開発だとチーム開発になることが多く、そこにもメリットがあります。
他の人のコードをレビューしたりする機会もあると思うので、一人で学習するときよりも多くの知識を得ることができることが多いです。
もちろん、一緒に働く人のレベルに左右されたり、コミュニケーションによるストレスといった部分もあるのですべてがよいとは限りません。
また、同僚のエンジニアに相談すれば、知らないやり方などを教えてもらえることもあるのはチームで開発するメリットだと思います。
自己学習の組み合わせは必須
自己学習だと新しい方法などを試したりチャレンジをすることができるので、自己学習の時間を取ることも重要です。
業務だと時間的な成約により、安全で確実な方法しか選べない場合があるためです。
また自己学習では、車輪の再発明を敢えてすることも必要だと僕は考えています。
車輪の再発明はすべきではないという考え方は基本ですが、プライベートな開発であれば、敢えてこれをすべきと思います。
これをしておくと応用が効くからです。
JavaScriptでは多くのライブラリがありますが、中身を解析したり、敢えて同じものを作ってみたりすることはスキルアップにはとても良いことだと思います。
フリーランスなら成長できない環境だと思ったらできるだけ速く撤退する
フリーランスのエンジニアは現場で働く際に、多くの場合は契約延長の可能性ありきで契約することは多いと思います。企業側は不要になればいつでも終了できるよう、長期の開発計画であっても、1ヶ月や3ヶ月のスパンで契約更新を繰り返すパターンは一般的です。
企業側が契約延長を望んでいても、その環境が「成長できない」「自分の成長の余地がなくなった」と思えば、契約を終了するということは必要だと思います。
場合によっては企業側からすれば困るということになるかもしれませんが、契約は契約です。
いつでも企業側が終了できるのと同じく、フリーランス側もいつでも契約終了はできるわけで、それがフリーランスエンジニアの強みです。
できるだけ後任への引き継ぎをスムーズにして、できる限りのことはしつつも、早期に撤退するのがよいと思います。
常に成長を意識しながらコードを書くと成長スピードは上がると思う
周りの人から学ぶことは重要ですが、自分で考えてコードを書くということができないとエンジニアとしてスキルはなかなか上がりません。考えてコードを書くと、応用が効くようになります。
例えば、僕はVueやReactを使ってコードを書くことが多いのですが、何か機能実装をするとき、今まで見てきた多くの人はまずはライブラリを探すということをします。
これ自体はよいことだと思うのですが、ライブラリは無駄に機能が多くて重かったり、使い方が決まっていて、そのライブラリを使って実装するには却って動きが複雑になってしまうということがよくあります。
ライブラリで実装することを優先して、複雑なコードを書いてしまうプログラマーがかなり多いように思います。
車輪の再発明をしないことは大事なことですが、私が一緒に仕事をしてきた中でスキルの高いエンジニアはこのあたりのバランス感覚がすごく高くて、ライブラリを使うか、自作するかの判断が絶妙で上手いなと思うことが多かったです。
他の例で言えば、HTML一つとってもそうです。
ネットで調べて何も考えずコピペして動けば良しとするのか、ネットで調べて答えを見てからであってもその後自分で考えながら書くのでは成長は全く違います。
学生のときの勉強で、参考書の答えを見ながら丸暗記するのか、答えを見たとしてもなぜそうなるのかを考えながら解いていくというときの違いと同じ感じだと思います。
自分で頭を使って考え、手を動かすことが大事です。
仕事で迷惑がかかるような速度での作業は論外ですが、多少時間がかかる程度であれば、最初は自分で常に考えながらしっかりと作っていくことは重要だと思います。
3ヶ月に1回は真面目に振り返って自分の成長について考える
僕の場合は毎月、「今月はどんなことをしたか。成長スピードは鈍っていないか。」ということを常に見直すようにしています。だいたい3ヶ月に1回くらいの割合で契約の見直しが発生するのでこのタイミングで、今の現場で続けるべきかを考えます。
常に成長スピードを意識するのと同時に、フリーランスのエンジニアなら契約更新をするタイミングで毎回、自分は成長できているのかを考えると時間を無駄にせず、速いスピードで成長できるのではないかと僕は考えています。
※当サイトでは一部のリンクについてアフィリエイトプログラムを利用して商品を紹介しています