自分が新人だった頃に伝えたいこと

# はじめに
<!-- 発端や概要を記載 -->
本記事では自分が新人だった頃に伝えたいことをテーマに執筆していきたいと思います。
とりあえずこれだけはやっておけってことと新人だった時に悩んでいたことに対する現時点の回答を書いていきます。

# 目次
<!-- タイトルとアンカー名を編集 -->
1. [これだけはやっておけ](#これだけはやっておけ)
1. [新人だった頃に悩んでいたこと](#新人だった頃に悩んでいたこと)
1. [悩みに対する回答](#悩みに対する回答)
1. [早めにやっておけばよかったと思うこと](#早めにやっておけばよかったと思うこと)
1. [おすすめの勉強方法](#おすすめの勉強方法)
1. [参考文献](#reference)

<!-- 各チャプター -->
<a id="#これだけはやっておけ"></a>
# これだけはやっておけ
これだけはやっておいた方がいいと思う事は、**発信する**という事です。
これは例え、あなたがエンジニアでもエンジニアじゃなくてもやっておいた方がいいと思います。
誰であろうと発信した方がいいと思っているので、発信する内容は技術やIT関連のことじゃなくても大丈夫です。興味あることや、ハマっていることでもいいと思います。
また媒体も気にする必要はないです。ブログでもいいですし、記事にするのが面倒ならTwitterでもいいと思います。別の手段として、InstagramでもYouTubeでもTikTokでもいいと思います。
とにかく気負わずに、発信していくのが大切です。

**なぜ、発信が大事か**？という理由ですが、下記の理由からです。

* 自分の理解に繋がる  
  * 発信する上でわからないことは調べる必要がある
  * 発信すると今まで疑問に思わなかったことでも疑問に思うことが出てくる
  * 自分の言葉にすることで理解が深まる、記憶に定着する

* やってきたことの証明になる
  * 記録として残る
  * 発信したものから、（一面に過ぎないかもしれませんが）人柄、人生観、興味、思考、得意・不得意...などがわかる

* 輪が広がる
  * 知識などが人に伝達する
  * 発信に対するフィードバックなどから、仲間が見つかる、仲間に繋がる
  * 影響力が高まる可能性がある（**影響力は高い方が有利**。どれだけ良い意見があっても人の目に触れなければ意味はありません。逆に、なんてことない意見でも影響力があれば意味を持つ可能性もあります）

<a id="#新人だった頃に悩んでいたこと"></a>
# 新人だった頃に悩んでいたこと
新人だった頃に悩んでいたことは自分の**キャリアパス、ライフワークバランス**についてです。
具体的には以下のことで悩んでました。
* ずっとエンジニアで会社員として働くのは嫌だがこれといってやりたいことがない（**プログラミングは楽しい。けど、スーツを着てオフィスで働きたくない**）
* 自由な服装、自由な外見、自由な場所、自由な時間で働きたい
* 会社を変えれば達成できるかもしれないが、転職できるか自信がなく、給料が下がるかもしれないと悩んでいた
* あれやりたいこれやりたい、けど勇気も出ず、やってみても続かず、ぐるぐる同じとこで悩んでた
* エンジニアの勉強をしても何をすればいいかわからない（どうやったら技術力がついて、年収が上がって、自由に働けるのか）
* そもそもエンジニアとしてやっていこうとも決めきれてなかったので身が入らない
* 私生活を仕事の勉強に使いたくない

<a id="#悩みに対する回答"></a>
# 悩みに対する回答
現時点の回答なので、また変わるかもしれませんが、今はこう考えてます。

> ずっとエンジニアで会社員として働くのは嫌だがこれといってやりたいことがない（プログラミングは楽しい。けど、スーツを着てオフィスで働きたくない）

→　同意だが、業界や業態、会社を変えれば、リモートワークで働ける。

> 自由な服装、自由な外見、自由な場所、自由な時間で働きたい

→ 上と同じく、会社を変えれば達成できる

> 会社を変えれば達成できるかもしれないが、転職できるか自信がなく、給料が下がるかもしれないと悩んでいた

→ **これがネックですね。悩んでいた点を分解しそれぞれ回答してみます**。
* 転職先がブラックだったらどうしよう
→ カジュアル面談とか、副業として働いてから入社できるような形の転職もある。
それに失敗しても会社は他にもたくさんあるのでやり直せばいい。入ってからじゃないとわからない部分もあるし、入ってから変わることもある。それはやってみないとわからないので、一生懸命頑張ったなら悩むだけ無駄。
* 転職できるかわからない
→ スキル、経験で入社できないこともありますが、**会社はたくさんあるので、スキル、経験が足りなくても、探せば雇ってくれるところはあると思います**。なので、とりあえずトライすればいい。
あと**個人的に、スキル、経験も大事だけど、人間性や誠実性の方が大事**だと思います。経験、スキルは身につけれますが、人間性や誠実性を身につけるのは時間がかかるし、そもそも**人間性や誠実性が低い人が自分を変えようなんて思わないことが多い**と思います。
**エンジニアなので技術力が高い人が良いと思われがちですが、仕事を遂行する能力やチームにとって良い影響を与える能力が高い人の方が良いと考えてます。**
技術力は仕事を遂行する能力の一部に過ぎず、スケジュール管理や報連相、リスクケアなどの能力がなければ、仕事は達成できません。
また、チームにとって良い影響を与えるというのも大事だと思っています。
ネガティブな影響はポジティブな影響の６倍強いらしく、最低限のラインとして、ネガティブな発言や雰囲気は作りださないように気をつけたいです。
それは気をつけるとして、自分も得意ではないですが、良い影響を与えるには、報連相でチームに情報を共有する、チームのために率先して動く、MTGなどで発言が少なめであれば意見を言ったり意識的に発言を増やしていくということをやっていけばいいのかなと思っています。
話が逸れましたが、**転職できるかわからないがとにかくトライするしかない。仮に落ちても、それは現時点のあなたの評価なだけ。一生その評価なのではなく、努力次第で変えていける**と回答しておきます。


> あれやりたいこれやりたい、けど勇気も出ず、やってみても続かず、ぐるぐる同じとこで悩んでた

→ これは誰しもが人生で悩むことなのかなと思ってます。[夏目漱石の私の個人主義](https://www.aozora.gr.jp/cards/000148/files/772_33100.html)にも同じようなことが書かれていました。

> 私はこの世に生れた以上何かしなければならん、といって何をして好いか少しも見当がつかない。私はちょうど霧きりの中に閉じ込められた孤独こどくの人間のように立ち竦すくんでしまったのです。そうしてどこからか一筋の日光が射さして来ないかしらんという希望よりも、こちらから探照灯を用いてたった一条ひとすじで好いから先まで明らかに見たいという気がしました。ところが不幸にしてどちらの方角を眺めてもぼんやりしているのです。ぼうっとしているのです。あたかも嚢ふくろの中に詰つめられて出る事のできない人のような気持がするのです。私は私の手にただ一本の錐きりさえあればどこか一カ所突き破って見せるのだがと、焦燥あせり抜ぬいたのですが、あいにくその錐は人から与えられる事もなく、また自分で発見する訳にも行かず、ただ腹の底ではこの先自分はどうなるだろうと思って、人知れず陰欝いんうつな日を送ったのであります

私の回答としては、やってみたいことや興味が出たら、**なるべく時間とお金をかけずにやりたいと思うことの1%でもいいからやってみる**ことをおすすめします。
もちろん時間とお金をかけれるならかけてもいいと思います。ただ、お金がない、時間がないからという理由でやらないという選択をしないようにしてほしいです。
例えば、カフェを開いてそれで生計を立てていきたいと思ったのなら、いきなりカフェを開こうとするのではなく、自分でコーヒーを挽いたり、人を招いてコーヒーを出してみたり、コーヒー豆の種類を調べて飲んでみたり...とか、簡単かつすぐにできることから始めてみてください。

> エンジニアの勉強をしても何をすればいいかわからない（どうやったら技術力がついて、年収が上がって、自由に働けるのか）

この問題に関しては、以下の項目に分けて、記述したいと思います。
* 勉強について
* どうやったら技術力が上がるかと年収が上がるかについて

#### 勉強について
勉強する分野はなんでもいいと思います。
DBでも、プログラミング言語でも、フレームワークでも、設計でも、インフラでも、セキュリティでも、興味があることをやるのがいいです。
技術力といっても、状況や場面、または時代で評価されるかされないかは変わります。AIの分野ならPythonができる方がいいですし、モバイルアプリならKotlin、Swiftができるほうがいいでしょう。その分野でめちゃくちゃ評価されていても、違う分野に行けば評価されないこともあります。それに、今流行していても、将来使われなくなるかもしれないです。
未来が予測できれば、その勉強をしたらいいと思いますが、できなければ何を勉強しても大丈夫だと思います。
**一度身につければ、応用は効きますし、基礎能力が上がります（他の勉強をする下地になる）**。
実際に、私はC#をやってきたので、オブジェクト指向の考え方や、プログラミング文法が身につき、DartやJavaをやるときに導入が楽でした。
また、分からないことを理解するまで調べたり、試したりすることで、根気も養え、壁を越えることができれば次の課題に直面しても、「また乗り越えられるだろう」という自信につながります。
なので、**迷っている暇があったらなんでもいいので勉強しましょう**

#### どうやったら技術力が上がるかと年収が上がるかについて
先ほど書いたように、技術力は状況や場面、時代で求められるものが変わります。
そして、求められている、つまり、需要がある技術というのを身につけると、価値は高まります。
つまり、技術力と年収を上げるなら、求められている技術を身につけるというのが手っ取り早いと思います。
具体的には、フリーランスなら高単価の案件で必要とされる技術、会社員ならその会社で必要とされる技術を身につけると良いでしょう。
場合によっては、マネジメントやスケジュール管理、顧客との交渉能力が必要とされる可能性あります。
会社によっては、何ができれば昇給、昇進するとかのガイドラインがあると思うので、それをクリアしていくのがいいと思います。
（もし会社がマネジメント能力を求めていても、自分は実装や設計に携わっていたいと思うのなら、ミスマッチが起きているので、すぐに転職するか、経験を積んでから転職するのがいいと思います。）

とはいっても、求められている技術が限定的だったり、将来性がなかったり、技術的な要素ではなくマネジメントだったり、これをこのままやっていても大丈夫なのかなって思う方もいると思います。
そういう方は、汎用的な技術を勉強するのがいいのかなと考えています。
例えば、設計や、データベース周り、インフラ周り、アルゴリズム、コンピューターサイエンス、ネットワークなどです。

> そもそもエンジニアとしてやっていこうとも決めきれてなかったので身が入らない

→ いつかこれをやっていこうかなと決まったり、これしかないかなと半ば諦めたり（例えば、サッカー未経験の社会人がプロを目指すのは非現実的であるように今までの選択と年齢によってある程度方向は決まっていく。これを諦めと表現しています）がどこかのタイミングで来るのではないかなと思います。
また、無理にこれをやっていこうと決めなくてもいいのではないかなとも思います。なんとなく、将来こうなりたい、こんな感じで歳をとっていきたい、という理想像を思い描き、それを実現するためにどういうことをしていけばいいのか？を考えるとある程度の悩みは解消されるのではないかと考えています。
ただ、どうしても悩みが解消できないという場合もあると思います。
回答はしましたが、おそらく、過去の悩んでいた自分がこれを見ても、悩みは解消できないんじゃないかなと想像しています。

そんな自分にアドバイスをするなら、
「悩みが解消できない場合は思う存分悩めばいいと思う。ただ、悩んで立ち止まるのはアウト。とにかく何かをやれ。小さくてもいい。やめてもいい。とにかく何かをやれ。なんでもいい」
というと思います。

本当になんでもいいので、先が見えなくても、意味がないと思えることでも、とにかく何かやってそれを発信していきましょう。
それが回り回って何かの役に立つかもしれませんし、役に立たないかもしれません。
ただ、**何もせずに浪費した時間が、役に立つ可能性はゼロです**。

> 私生活を仕事の勉強に使いたくない

→ それはそうだと思います。ただ努力しないと、ずっと今のまま変わらない人生になると思ってます。
それで問題ないなら、何もしなくていいです。ただ変えたいならやるしかないと考えています。
人生をより良くしたいなら、遅かれ早かれ、寝食を忘れて努力する期間というのが必要だと最近思うようになりました。
人によっては努力をしている感覚はなくても、特定の何かに時間を使っているという期間が必ずあるのではないでしょうか？
医師や弁護士なら学生時代の勉強だったり、料理人だったら下積みの修行時代、営業の人なら人脈づくりのための人付き合いだったり、成功している人はみんな何かに時間を捧げた時期があったのではないかと思ってます。

この努力の時期は早ければ早いほどいいです。
というか、40、50とかで睡眠時間を削って努力するのは健康面のリスクが高いらしいです。
なのでまだ無理の効く若いうちに頑張って、４０、５０になったときに楽ができるようにするというイメージです。

<a id="#早めにやっておけばよかったと思うこと"></a>
# 早めにやっておけばよかったと思うこと
この項では、早めにやっておけばよかったと思うことを書いていきます。
### 環境を変える
今の環境に満足していない人向けになりますが、そういう方は環境を変えてもいいのではないかと思ってます。

４年くらい、組み込み系のSESで働いていたのですが、早めに転職すればよかったなーと後悔してます。
SESにも良い悪いはありますが、私が勤めていたSES会社では、以下のような特徴がありました。
・上司と一緒に働くわけでないので仕事ぶりの正当な評価がされにくい
・学びが少ない（現場では学べますが、社内のつながりが希薄なので社内からの刺激が受けれない）
・新しいスキルに挑戦しにくい
・リモート、私服勤務ではない（配属先の会社の規定に合わせないといけない）
・場合によっては遠方になる（電車で一時間半くらいで、駅から３０分くらい歩き、周りに何もない場所に行かされたこともあります。この件で転職を決意できたので転機にはなりましたが）

個人によりますが、私には上記の環境が嫌で仕方がありませんでした。でも、転職できるか不安だったので、自分を誤魔化しながら働いていました。
しかし、結果的に、SESではない会社に転職をして、私服勤務・リモートワークで、同僚も技術向上に貪欲だったり、会社自体が技術を大事にしている会社なので、エンジニアとして充実した環境で仕事ができています。
なので、もっと早めにやっておけばよかったなーと思ってます。

転職をするという勇気が出ない人は、エンジニアの勉強会に参加したり、記事やツイッターにコメントをしてみてたり、輪を広げるだけでも大分変わってくるのではないかと考えています。

### あれこれ悩まない
悩まないと書くと語弊があります。
悩むのはいいと思いますが、悩んで立ち止まり、何もしないということは避けた方がいいよという趣旨で書きました。
間違っていても、役に立たないかもと思っても、とにかく何かやっておいた方がいいと思います。

<a id="#おすすめの勉強方法"></a>
# おすすめの勉強方法
つらつらと書いてきましたが、**エンジニアとして技術力をつけて年収を上げていくには、勉強は避けて通れない**と思ってます。
なので、最後におすすめの勉強方法について書きたいと思います。

テクニック云々ではなく、こういう勉強の進め方がいいよって話なのですが、ズバリ**基本から順番に理解していく**というのが一番効率がいいと思います。
基本から順番にというのがポイントで、効率を考えて、ついつい簡単そうなところは読み飛ばしたり、適当に読んだり、わからないところをピンポイントで勉強しようとしがちですが、急がば回れということわざがあるように、最初から順番にやる方が漏れがなくて結果早いような気がします。（飛ばし読みで進めた結果、あるポイントでつまづき、時間をかけて原因や解決法を探していたら、結果的に飛ばしたところに書いてあったというオチがザラにあります）
したがって、あくまでその分野を初めて勉強する方向けの学習方法にはなりますが、基本から順番にやっていくのがいいと思います。
基本から勉強するのは当たり前に思えますが、例えばC#の経験者がJavaの勉強を始めると、似ているのでじっくり基本から勉強するよりも、C#にない部分を重点的に勉強してしまうといったケースが考えられます。ただそうしてしまうと、大事な部分を見落としたり、基礎的なところが身に付かず、何かトラブルがあった時に解決に時間がかかってしまうようになります。（ある程度、その分野の勉強をした人は大事なポイントのみ勉強するのでいいと思います）

上記の理由から、基本を学ぶというのを推してますが、
基本から学ぶには一番いいのは公式のドキュメントですね。英語だと少し大変ですが、一番いいと思います。
あとは本、最後に記事ですね（さらっと概要を知るには記事が一番いいと思いますが、本腰を入れるならドキュメントか本がいいと思います）

どうしても、文字だと勉強しづらい人は動画も活用しましょう。
Youtubeにもありますし、体系的に学びたい人はUdemyを活用するといいと思います。

自分が良かったと思うおすすめの講座を貼っておきます

講座のタイトル：Git： もう怖くないGit！チーム開発で必要なGitを完全マスター
URL：https://www.udemy.com/course/unscared_git/
おすすめした理由：開発においてGitは必須なので基本を学びたい人におすすめです。

講座のタイトル：英語の苦手なITエンジニアの英語ライティング
URL：https://www.udemy.com/course/writing-in-english-for-engineers/
おすすめした理由：英語の表現の違いとか、最初になんて書けばいいかみたいなことを教えてくれます。英語ができれば技術のキャッチアップや、グローバルに質問できたり、頑張れば海外のプロジェクトで働けるなどメリットがあるのでおすすめです。