プログラミングする会社へ入社した、プログラミング初心者なあなたへ


<br>

<ins>この記事は主な読者として新入社員の方を想定しています。</ins>

## はじめに

入社おめでとうございます。
入社して1ヶ月程になりますでしょうか。まだ研修中で、週末は同期の皆様と飲み会で忙しいでしょうか。
飲みすぎて入館証や配布PCを紛失しないよう気をつけくださいね。

早速ですが、あなたが所属する環境は以下に当てはまっていませんか？

- 自分自身がプログラミング初心者
- 同期も理系・文系問わず大多数がプログラミング初心者
- 残業はプロジェクト次第だがそれなりにありそう

もし当てはまっている方がいらっしゃる場合、これから私の書くことがあなたの役に立つかも知れません。

## この記事の主な対象読者

- ほぼプログラミング初心者だが、プログラミングする立場になった新入社員の方

## この記事で得られること

- 労働を長時間にしない方法
- 会社でストレスを少なくする方法

## まずは結論

- 最初は技術力が大事
- 技術力をつけるため短期間だけプライベートを犠牲にするのがオススメ
- 技術の基礎だけでも身につければ仕事時間の短縮・ストレス軽減に役立つ

## なぜ書くか

- 仕事でうまく立ち回り、就業時間とストレスを減らして人生を充実させてほしい

対象読者として書かせていただいた方達の救いになれば良いなと思い書かせていただきました。提示する解決案は「素晴らしいエンジニアを目指そう」、「圧倒的に成長しよう」という崇高なものではありません。
しかし、それらに繋ごうとすれば繋がる王道です。

また、

- 筆者はWeb開発のエンジニア

という点でバイアスがかかっている可能性があるのでご注意ください。

---

以下、本題です。

## 研修終わりに待ち受ける問題

### 1. 研修内容と大きく異なる現場の技術

研修では以下のような内容を勉強をしているのではないでしょうか。

- プログラミングの初心者本
- Linuxコマンドの基礎
- 簡単なアルゴリズムを組む問題

しかし、実際のプロジェクトではさらに多くの知識が要求されます。

- Struts? Spring？　Webフレームワークってなに? なんでインスタンス化してないのに使えるの...
- ReactやVueなんて触ったことない...
- デプロイ？ なにそれ...

Webアプリケーションに限らず、IT業界の技術仕事は様々な知識を複雑に組み合わせ行います。
プログラミング言語さえできれば、と考えていたのなら、それは始まりに過ぎなかったと思い知らされるでしょう。

### 2. OJTの名を借りた教育・学習機会の欠如

実務では研修よりも多くの技術知識が必要になることは説明しました。
では、プロジェクトごとに必要な技術の学習機会が提供されるかというと、多くの環境ではNOでしょう。

- とりあえず既存コード見てやって
- わかんなかったらググって
- ググってわかんなかったら周りの人に聞いてみて

基本的にすべてあなたの自主性に委ねられます。

あなたはとりあえず基礎だけでも勉強したいと思うかもしれません。
しかし、就業時間中に勉強だけに打ち込ませてもらえる可能性はほぼないでしょう。

- 就業時間中は与えられたタスクに取り組んで
- 勉強するなら休憩時間や就業時間後に

**就業時間のほとんどを断片的な知識と、その知識をもとに検索を繰り返す苦しい時間を過ごすことになるでしょう。**

これらは技術力不足から生じる問題ですが、新入社員のあなたはさらに、

- 未知の業務知識の習得
- 慣れない人間関係
- チームで役に立たないことによるプレッシャー

など、大きなストレスがかかる要因が多いと思います。

これらのプレッシャーに耐えられない人は休職や退職、最悪のケースでは心身を病んでしまう方もいらっしゃるかもしれません。

## 対処法

これから紹介する対処法は「技術面で感じるストレス」への対処法です。
また、ベストな方法だとは思っていません。
筆者は、業務で必要なことは業務時間内に勉強する機会が与えられるべきだと考えています。
しかし、べき論で話していても現状は変わってくれないので、個人が頑張るしかないと思っての提案です。

### プライベートの時間を削り基礎レベルを勉強

プログラミング初心者が新人時代に労働時間が長くなり、かつ、ストレスを感じてしまう構造に以下があると考えています。

- わからなくてタスクの進捗が悪い => 労働時間を長くして対処
- わからなくてタスクの進捗が悪い => プレッシャーでストレス

こういった状況では技術力を向上させること、特に「現場で使われる技術の基礎レベルを習得する」ことで大幅にストレスと労働時間を軽減できると考えています。

「技術の基礎レベルを習得する」という対処法が優れている点は1人で完結可能という点です。
PCさえあれば、特にWeb開発の場合、業務で使用する技術のほとんどを自分で学ぶことができます。書籍やUdmeyなどが役に立ってくれるでしょう。

対象読者としてしている人の大多数はプログラミング経験がほぼ無い状態で入社しているため、IT技術に興味がある・楽しいというタイプの人たちではないと思います。そういった方たちにとってプライベートを犠牲にして技術の勉強をするのは気が進まないことは百も承知です。

しかし、所属している環境から自然に勉強の機会が与えられない状況で何も対策していないと、労働時間でプライベートが圧迫されてしまう可能性が高いです。

筆者としては、

- 配属プロジェクトに必要な技術スタックで
- 担当分野の基礎中の基礎を抑え
- 正しく動くコードを書ける

これらを達成できる程度の勉強さえすればいいと思っています。（とはいえプログラミング初心者のあなたにとっては2~3ヶ月程度はかかると思います）
Railsを用いたWeb開発でいうと、「Railsチュートリアルの内容をある程度理解し、認証認可付きの簡易的なWebアプリを作れる程度の能力」でしょうか。それだけでも、日々こなすタスクの見え方が違ってくるはずです。

とにかく「自分が扱っている技術の基礎がわからず断片的にググった情報をもとに的当にコードを書くしかない」という状態を抜け出しましょう。

繰り返しになりますが、短期的にはプライベートな時間が大幅に削られてしまいます。しかし、**基礎力を身に着けた状態で業務を行えば、プライベートで勉強しなかった場合と比較し、生産性の向上により2~3ヶ月ほどで時間の元が取れる**のではないかと思います。

さらに、基礎力を身に着ければ技術面で感じるストレスも少なく、自信をもって業務を遂行できるようになっているでしょう。

ここから引き続きプライベートの時間を使い技術力を磨いて成長するのも良いですし、自主勉強は最低限に抑えワークライフバランスを自分の望むように整えるのも良いでしょう。

## 気をつけること

### 大事なのは技術力だけではない

開発領域で技術力は間違いなく重要です。

しかし、組織は他にも経営・営業・マネージメントなど他の仕事をしてくれる人がいるおかげで成り立っています。

あなたが頑張って技術力を上げれば、組織の中で高い生産性を持つようになるでしょう。人よりも難しく、多くのタスクをこなせるようになっているでしょう。

しかし、それが故に気が大きくなってしまう可能性があります。あなたが開発に専念できるのは仕事を取ってきてくれたり、チームをマネジメントとしてくれる人がいるおかげです。

技術は大切ですが、仕事の一要素でしかないことは心に留めておきましょう。

## まとめ

- 最初は技術力が大事
- 技術力をつけるために短期的にプライベートを犠牲にするのがオススメ
- 技術の基礎だけでも身につければ仕事時間の短縮・ストレス軽減に役立つ

仕事で大切な要素は数多くあります。
しかし、新人のうちはプログラミング技術が大事になる可能性が高く、就業時間中に学習機会が提供されなくても、自主的に身につけることができます。

筆者自身はこれが最善の解決策とは思いませんが、多くのプロジェクトでは自学しないとまともに仕事をこなすまでに長い期間がかかってしまい、その期間は労働時間が長くならざるを得ない場合が多いかと思います。

また、「チームで役に立っていない自分」という立場は自信の喪失につながりやすいですし、対応の仕方がよくわからない対象に長時間向き合うのは精神的にもきついと思います。

提案させていただいたものは一時的にプライベートを犠牲にしなければならない解決法ではありますが、

- 技術力向上によりタスクの実行が速くなり労働時間が短くなる
- 自己成長を味わえ自己肯定感が上がる
- チームの一員として役に立つ実感を味わえる
- 環境を変えるのに役立つスキルを獲得できる

という利点があります。

ご自身の心身に無理のない範囲で採用していただければと思います。

最後までお読みいただきありがとうございました。

どなたかの一助となれれば幸いです。