【翻訳】25 Tips for New Developers (新人プログラマーに向けた25のTips)

#はじめに
今回翻訳したのは、[dev.to](https://dev.to/)という技術情報共有サイトに投稿された[25 Tips for New Developers: Advice from a (Mostly) Self-Taught Software Engineer](https://dev.to/aspittel/25-tips-for-new-developers-advice-from-a-mostly-self-taught-software-engineer-1ff1)という記事です。
最近、エンジニアの方からdev.toを教えてもらい個人的に良記事だと思ったので翻訳したいと思います。結構なボリュームがあるため全文は翻訳していませんが、自分が大事だなと思った部分を抜粋してまとめています。全文読みたい方は元記事を参照してください。


#新人プログラマーのための25のTips
###１．プログラミングをやる理由を持ち、その理由を覚えておく
プログラミングを始めたいと思ったとき、コードを書くのが好き、稼げるようになりたい、Excelでやっている仕事などをより効率的に行いたいなど何かしら自分の中に理由があると思います。
プログラミングをやる上で、なぜプログラミングをやるのか？その理由を覚えておくこと、書き留めておくことはとても重要です。なぜなら、プログラミングは難しく挫折してしまうことが度々あるので、自分のPCに付箋に書いて貼り付けたり、PCのホーム画面に書き留めたり、私のように消えるマーカーで鏡に書いておいたりして思い出しやすくしておきましょう。

###２．しっかりとした基礎を構築する
ユニークなアドバイスかもしれませんが、私は基礎が本当に役に立つと考えています。もししばらく数学に触れていないのなら、コードを書き始める前に代数学1の概念を見直すと良いと思います。多くのプログラミングは、関数や変数などの代数学によって成り立っているので、これらの概念を理解しておくと役立つと思います。
おすすめは、[Khan Academyの代数学1](https://www.khanacademy.org/math/algebra/)です。

###３．コミュニティを見つける
あなたがコードを書き始めるとき、自分をサポートしてくれるコミュニティを見つけることはとても有益な手段の1つです。あなたのような人たちが同じ場所に集まり、そんな人を助けてくれるリソースややる気を提供してくれるコミュニティはとても貴重なので、自分の住んでいるエリアにコミュニティがないか探してみましょう。もし近くにコミュティがない場合は、dev.toやcodenewbieなどが代替コミュニティとしてとてもお勧めです。

###４．問題を小さく分解する
プログラミングをやる上で最も重要なことの1つは、大きな問題にぶち当たったときそれを自分で解決できるくらい小さいピースに分解することだと思います。あなたが手を動かさず空白のテキストエディタをただ見つめているだけなら、まだ自分が理解できるくらい小さいピースに問題を分解できていないということです。

###５．疑似コード
上記で記した要点とも関係しますが、コードを書こうとする前に自分がしたいことを分かりやすい言葉を使って詳細に書き出すことが有益だと思います。この過程を疑似コーディングと言い、あなたがやりたいと思うことは何でも具体化することができます。疑似コーディングは紙面上で問題を解決したり、問題を解決するための個別のステップを考えたり書き出したりするのに役立ちます。

###６．学習のサイクルを活用する
第2のキャリアとしてプログラミングを勉強しているのなら、特に暫く教室のような学びの場から離れている場合、学習方法を学ぶことがプログラミングの勉強の大部分を占めると思います。
勉強中は、たくさんのアップダウンがありますが、それは自然のことです。コーディングする前にそのことを心得ておくことが大事です。

###７．無料のリソースで始める
コーディングをする方法を学習するリソースは非常にたくさんあります。無料のものもありますし、お金を支払う必要があるものもあります。まずは、無料のリソースを使い、コーディングが好きになってきたら有料のリソースやブートキャンプを利用すると良いでしょう。

###８．自分の得意分野を見つける
プログラミングは多くの言語がありますが、自分が好きで没頭できる1つの言語を見つけましょう。8つの言語を学習しようとするより、自分が本当に興味を持ち得意にしたい言語を見つけることが大事です。

###９．パターンを発見することが得意になる
コードのパターンを発見することは、あなたが持つべき重要なスキルの1つです。DRY原則について話すとき、それは自分の書いたコードにあるパターンを減らすことだと言われています。私はパターンを発見するためのゲームがニューヨークタイムズのWebサイトにあるのでそれを毎日やることをお勧めしています。

###１０．良い習慣を早いうちに身に付ける
良い習慣を身に付ければクリーンコードを書けるようになるのはそう遠くはないでしょう。悪い習慣を身に付けてしまうと良い習慣を身に付け、クリーンコード書けるようになるのが難しくなります。私がクリーンコードを書くためのコツは[こちら](https://zen-of-programming.com/cleaner-code)に書いてあります。もしあなたがWeb開発をしているなら、自分のコード上で動いているHTML/CSS検証ツールが解決すべきことを教えてくれるでしょう。

###１１．自分の学習スタイルを見分ける
皆違うやり方でプログラミングを学習しています。あなたは視覚型学習者でビデオを見ることが好き化もしれないし、誰かに後押ししてもらうことが必要かもしれないし、またはドキュメントを読むことが好きかもしれません。すなわち、人がやっているやり方があなたにとってベストな学習法だとは限らないのです。だから、どんな学習方法が自分にとって一番適しているのか、自分に合ったリソースは何なのか見分けることが重要です。

###１２．奮闘するけどやりすぎない
あなたが学習する上で多少もがいてみることは、自分自身で問題を解決したり既にあるリソースを使って答えを導き出したりすることができるのでとても重要です。そうはいっても解けない問題に何時間もかけて奮闘するのは非生産的でやる気も失せてしまうので、少しの間考えて分からなければ誰かに助けを求めましょう。

###１３．失敗に寛容になる
プログラミングは難しいので正しい答えを見つけ出すのはすぐにできません。私にとって数独ソルバーで失敗するときは貴重な時間の1つです。すぐにやり終えないことやエラーを見ることに慣れるのはとても大変でやりがいのあることですが、これがプログラミングの大部分を占めています。

###１４．エラーメッセージを愛する
エラーメッセージはとても有益ですが、プログラミングを始めたばかりのときは警告メッセージにびっくりするかと思います。エラーメッセージを読み通し、そのメッセージを理解し、それを使って問題を解決することは、あなたが通るべき大きなステップの1つです。実際、有益なエラーメッセージよりプログラムのちょっとしたミスがはるかにイラつかせるということが分かるようになるでしょう。

###１５．簡単なプログラミングもある
これはまずどの言語から始めたらいいのかという答えにはなっていはいないですが、私の思う分かりやすい言語トップ3は、python,Ruby,Javascriptです。なぜなら、これらの言語はバックに大きなコミュニティを持っており、より単純明快な構文で解釈しやすいためです。

###１６．全て知る必要はない
プログラミングについて全て知ろうとすることは100％不可能と言えます。すべての言語、ライブラリ、フレームワークについて知っている人はいないし、全ての問題を完璧に解決する方法もありません。全てを学習しようとせず、自分がやりたいことに集中してください。

###１７．幅より深さ
特に最初の頃は、沢山の事を少しだけ掻い摘んで学習するよりも1つの事を掘り下げていく方が良いです。深い知識を持っていると、次に新しい言語を習得するとき容易になるでしょう。だから、いま学習していることから目を逸らして新しいものに移ろうとしないようにしましょう。

###１８．まずは基本に集中する
プログラミングの基盤を固めることはとても有益であり、自分がプログラミングを使ってやろうとすることは何でも基本のことは使います。周りが話しているような素晴らしいライブラリについて学んだりする前にループ、条件文、関数、データ型やオブジェクト指向のプログラミングの知識をしっかりと身に付けましょう。

###１９．問題解決を得意にする
問題解決はプログラミングの背後にある基礎であり、これができるようになることが重要です。謎を解き、コードを紙に書き、問題を分解することは問題を解決することにとても役に立ちます。時々新人の方で問題を解決するのではなくて問題自体をGoogleなどで検索し、答えを得ようとするのを見かけます。確かにGoogleやStackOverflowはとても便利ですが、まずは答えを調べる前に自力で解決しようとしましょう。それか調べる場合に問題自体を検索するのではなく、小さいパーツに分解して検索をかけてみましょう。

###２０．検索を得意にする
学習する上で最も大きな割合を占めることの1つは、自分とって良い回答の見つけ方や自分が学習している言語やライブラリの新しい機能の学び方です。Googleは、コミュニティに参加したりリソースに申し込んだりするためにも重要なツールです。私が普段Googleで検索するとき、"問題 言語/フレームワーク/ライブラリ"というような出来る限り少ないワードでフィルターなしのテンプレートを使っています。

###２１．自分が好きなプロジェクトを構築する
あなたが学習しているとき、自分の習得したスキルを試すために様々なプロジェクトを構築することがあるでしょう。その時のプロジェクトは自分が興味のあるものでプロジェクトを完遂させられそうなもの、尚且つ労力を注げるものを選んだ方がいいです。それは、プロジェクトを終わらせられた時に中途半端に終えたものより感動でき達成感を感じられる方法だと思うからです。

###２２．自分自身と比較する
多くの人がプログラミングを学習していると思いますが、他人と自分の進捗を比較しないでください。その代わりに以前の自分と今の自分を比較し、自分の成長に焦点を当てるようにしましょう。

###２３．コートチャレンジを行う
素早くコードが書けるようになることはしっかりとした基礎を身に付けるのにとても役に立ちますし、問題解決や面接の練習にも良い影響をもたらします。もしあなたがコードチャレンジをしたいと思ったら私がTwitterで#CodingPuzzleというハッシュタグをつけて毎日投稿しているので是非やってみてください。

###２４．自分の勝利を祝う
プログラミングを学習することはほんとに難しいことなので、たとえ小さなことでも何かやり遂げることができたら、そのことを自分で祝ってあげてください。私は自分が達成したことはGoogle keepに記録していますし、なかなか上手くいかないときがあってもこれらを見返すことでそのときの気持ちを思い出しています。

###２５．プログラミングは素晴らしい
プログラミングはソフトウェアや製品などを作れるようになるのでとてもかっこいいと思います。
私はいつもSandi Metzの言葉を心にとめています。

>私たちの仕事はプログラムを書くことですが、とても幸運なことだと思います。
>クリエイティブなエネルギーを使って物事を成し遂げるので、ソフトウェアを作ることは潔白な喜びです。私たちはコードを書くという純粋な行為を楽しみ、重大なものを生み出しています。プログラマーは現代の職人であり、現代のリアルを作り上げているという正当なプライドを持って仕事をしています。
初心者のプログラマーから熟練のプログラマー、スタートアップから老舗企業で働いているすべてのプログラマーに以下の事を共有したいと思います。私たちは最高の仕事をしましょう。そして私たちの仕事に意味を持ち、楽しんでいきましょう。

以上です。