プログラミングを勉強して実務に入って、そこから技術力をどう伸ばしていくのか?というお話。
実務に入ってから技術力を伸ばすことで昇給、転職、フリーランス化などがしやすいのと、技術力を伸ばすことでそれがコアスキルとなっていきます。
実務に入ってからは上司から必ずタスクを振られるので、そのタスクを精一杯こなしまくることにフォーカスすると自然と技術力は伸びます。
自然と技術力が伸びるというのは、タスクをこなしていくことで、不明点を調べながら実装することで技術的なカバー範囲が広がってるのもありますし、アプリケーションの全体像が把握できてきたり、複雑な箇所のハンドリング力が上がったりしていくってのがあるという感じ。
基本的に実務やってるとタスクは無限にわいてくるので、それを自分のある程度のノルマ以上にやっていくと技術力も伸ばせるし職場内での評価も上がります。
職場内での評価が上がると周りの人(上司など)とも良い関係で働きやすくなるので、目の前のタスクにフォーカスして技術力を伸ばすという方法はかなりおすすめ。
実際に動いているアプリケーションではほぼ100%アーキテクチャ図のようなものが社内ドキュメントにあります。
それを見てどういうアーキテクチャなのかを把握したり見て勉強したり、知らないことを調べたりすることで、枝葉よりももう少し幹っぽい部分に関する技術力は上げられます。
アーキテクチャ図見て、「podってなんだ?」とか「batch jobってなんだ?」とかそういったところを見て知って、そこからbatchならbatchの該当箇所をコードベースで読んだりしてソフトウェアエンジニアとして技術力を高めていくようなイメージです。
ジュニアレベル⇒ミドルorシニアレベルになるにあたって徐々にこういった設計部分への理解が必須になってきます。
実務に入ってからは何かしらのプロジェクトという存在が出現します。
例えば、「SNS機能を追加したい」というビジネス側からの要件に対してそれを要件定義(内部仕様、外部仕様を決める作業)をしてそれを実際にタスクに分解してある程度の納期までに終えるような仕事です。
プロジェクトによってはデータベースやアーキテクチャが複雑に絡みあったり大量のマイグレーションやSQLをうちこんでデータを変更しないといけないものもあるのでそういったところはかなりレベルが高いバックエンドエンジニアがやりますが、それ以外のミニプロジェクトのケースではジュニアレベルでもやる気があればハンドリングしていけます。
例えば、「UI上で操作が重い箇所全てのフロントエンドパフォーマンス改善」とかの小さなプロジェクト(タスクとも言える)をまるっと1人で請け負ってタスク化して全部片付けていくようなイメージです。
例えば、実務でバックエンド側にGo, gRPC, AWSらへんが使われていたとして現状のスキルセットではそこが全然カバーできていない場合に基本的なベースラインをネットのチュートリアル見てインプットしたりKindle unlimitedやら書籍やら使ってインプット(キャッチアップ)して、そこから実務でタスクを拾って不足部分も自分の技術領域にしていく方法になります。
現場で働いていると実際に周りの人から学べることがめちゃくちゃ多いです。
ハードスキル(例えば、reactで抽象化されたクソ便利なcustom hookを作るfunctionの設計力とか)もそうですしソフトスキルやその人がどういうコンテキストでどういった技術スタックで〜みたいな部分を見て、自分の技術力の調整ができます。
例)
「この人のこういう部分がいい感じだからパクろう」みたいな感じ。
個人開発して設計からバックエンド、フロントエンド全部を実務の技術とかを参考にしながらやると技術力はすごい伸びます。
特に実務でタスクとして振ってもらえないようなところも個人開発だと好きにできるので、そこらへん含め勉強になるという感じ。
あとは技術スタックが実務とものと似ていると実装スピードとかも早くなりがちです。
ただ、個人開発して稼ぐとかそういった強い動機がないと継続できないケースが多いので特に目的がないなら仕事ベースでやったほうが技術力は上げやすいというよりかは継続しやすいです。(実務だと強制的にやるしかないので)
準委任契約でも受託案件でもどちらのケースの場合でも、実際に本業 + 副業でやると副業の時間もプログラミングというかソフトウェア開発することになるので技術力は伸ばしやすいです。
本業とちょっと違う技術を使っているのであればそこが差分として出るのでインプットして技術力が伸ばせます。
受託案件なら受託するフェーズ(営業フェーズ)からまるっとやることになるので、技術力以外にもビジネス力みたなところも伸びます。
月収100万円とかに早く到達したい場合は市場感とかお金の流れを把握する必要があるので受託案件は安くてもいいんでやるとそこらへんの能力がコンテキストベースで学んでいけます。