私はエンジニアになってまだ1年程度ですが、当時読んでいれば今頃もっとスキルも伸びてただろうなあという本がたくさんあります。当時はProgateばかりしていて、「プログラミング言語だけ」を勉強していました。実際にエンジニアなって思うことは、言語の勉強はたいして重要ではないということです。これからエンジニアになろう、という方がいらっしゃれば、覚えておいてほしいことは、「エンジニアの仕事はプログラミングだけではない」ということです。実際にコードを書く以外に設計を考えたり、技術選定をしたり、チームでコミュニケーションをとることもとても大事なことです。エンジニアが増えていくこれからの時代に、もっと強くなるために早い段階で読んでおくとスキルの伸びしろがぐーんと増える、そんな本をご紹介します。実際に私も読んでいますし、先輩エンジニアからもオススメされたものばかりです。書店などで手にとって読んでみてください!もはや鉄板!『リーダブルコード』はじめの頃は「どんなコードを書いたらいいか?」に迷ってしまうことがよくありました。先輩方のコードを読んで参考にしつつも、コードレビューで指摘されては直すということばかりで、単にコードを書くということだけではない難しさを知りました...。人が書くコードにはその人のクセのようなものがありますが、それでも「いいコード」「悪いコード」は存在します。この変数名が何を意味しているのか分からない何度も同じような処理を書いているメソッドの責務が単一ではない逆に長過ぎて読みにくいコメントが多すぎて読むのが面倒...などなど。優秀なエンジニアが毎回いいコードを書くとは限りませんが、すくなくともこれらのような「悪いコード」を書くことはほとんどありません。新人のうちはとにかく動くことを目指すあまり、人から見て読みにくいコードを書いてしまうものです。プログラミング学習中に『リーダブルコード』を読んでおけば、日々の勉強のなかで「良いコード」を書くことを意識できるようになります。変数名はこっちのほうが分かりやすいかな?とかこのメソッドは切り出して、こっちで定義してみようなど、自分の中で読みやすいコードの例を知っておけば「悪いコード」を書いてしまわないようになります。意外と理解してない?『Webを支える技術』いま学習中の言語や技術は何ですか?プログラミングさわりたての方はHTMLやCSSなどでしょうか。私も当時はHTMLやCSSをたくさん勉強していましたが、今になって思うことは「それらは大して重要ではない」ということです。Web制作などのHTMLやCSSを頻繁に扱う職種であれば別ですが、サーバーサイドエンジニアはもちろん、フロントエンドエンジニアでさえもHTMLやCSSを触ることはあまりありません。そのあたりのコードを書くとしてもそこまで深い理解は必要ありません。最低限かければいいというラインです。最初のうちはそれよりもWebの技術に関して知っておくと便利です。HTTPってなに?という疑問に対して即答できないとそれこそ仕事で詰みます。調べれば一瞬でわかりますが、HTTPリクエストの仕組みやURLってなに?みたいな基本的な仕組みを理解していないと気付かない落とし穴があったりします。「分かってないのに書く」ことのリスク新人エンジニアでこのあたりのWebの基礎を理解せずにコードを書いていくことにはリスクもあります。致命的な脆弱性につながるようなコードを書いてしまい、それが運悪くコードレビューで見つけられないまま世に出てしまえばあなたが引き起こした脆弱性とみなされます。エンジニアとしてコードを書くということは、会社の製品をつくる一人になることです。会社の顔になる、といっても過言ではありません。コードを書けること以上に、理解して書くということがとても大事になります。多くのエンジニアがデータベース(DB)と接しながら仕事をします。サーバーサイドエンジニアはもちろん、フロントエンドエンジニアやWeb制作でさえDBをいじる機会があります。SQL」と勘違いされがちですが、SQLはあくまでリレーショナルデータベース(RDBMS)の操作をする言語です。操作方法は学んだとしても、操作する対象であるデータベースがなにか?を理解しておかないと十分とはいえません。テーブル設計も大事!少し発展的ですが、テーブル設計をはじめとするDBに関する知識はとても奥深く、エンジニアになっても日々格闘しています。正解はないのですが、データベースについて、そして設計について知っておくと他のエンジニアと同等に議論することができます。大きなサービスになればデータベースの設計はとても大事で、後々の保守のことを考えなければいけません。ゼロからの開発の場合データベースシステムに何を使うか?というインフラ的な知識も重要になってきます。最近ではNoSQL(SQLを使わないKVSのDB)も注目されていますが、多くの現場ではRDBMS(リレーショナルデータベース)がまだ使われています。データベースやSQLの歴史はとても古く、HTMLやJavaScriptよりも古くから存在しています。そんなデータベースについて深堀りすることは直接コードに影響しなくてもとても興味深いものがあります。『エリック・エヴァンスのドメイン駆動設計』Webの裏側やDBについて知ることと同様に大事なことの一つに「設計」があります。コードを書くことよりも大事といっても過言ではありません。「設計」がしっかりしていれば、コードを書く時間も、サービスを保守する工数も改善されます。逆にいえば、「設計」が不十分だと無駄なコード、工数が必要になります。設計に関する本はたくさんありますが、DDD(ドメイン駆動設計)はその基礎でもあり、様々な現場で使われている設計手法の一つです。人によって考え方は様々なので、DDDが絶対というわけではありません。一度設計ってこんなことなのか!という入り口に読んでおいて損はありません。設計パターン、デザインパターンと言われるものがいくつかあります。それらをいくつか知っておいて、ミニサービスの開発に役立てることができると便利です。「この部分はXXを使って書いていこう」というかたちで日々の業務で使うことができます。チームのなかでも「ここはXXよりYYがいいんじゃないですか?」という共通言語で会話することができます。デザインパターンについては「Java言語で学ぶデザインパターン入門」がオススメです。比較的わかりやすく、網羅的にデザインパターンが書かれています。Javaを読めないとちょっとつらいですが、テキスト部分だけでも読んで勉強になります。一つ上のエンジニアを目指す『数学パズル』え、プログラミング関係なくない?!と思われるかもしれませんが、数学的思考力やアルゴリズムはプログラミング力に大きく関係します。初めの「書けること」や「動くこと」を重視する際にはあまり意味がありませんが、「より良いコード」「より良いシステム」」を作るにあたってはこうしたスキル、知識はとても大事になってきます。この本は基礎の基礎から数学パズルやアルゴリズムを教えてくれます。言語はRubyやJavaScriptで、基礎文法さえ知っていれば誰でも読みすすめることができます。競技プログラミングなどで使われるアルゴリズムですが、これを知っておくと日々書くコードにも生きてきます。初めのうちにこうした素地があると、成長スピードも早くなります。エンジニア転職においてもこうしたプログラミング以外の数学的思考力や、アルゴリズムの知識などは高く評価されます。プログラミングスクールでは教えない内容、かつ現役のエンジニアでも知らない、書けない人が多くいます。差別化を図るためにもこうした数学的思考力を身につけるための第一歩としてはとてもいい本だと思います。あり】いまWEBエンジニアに人気転職サイト4選まだプログラミングスクール選びで悩んでませんか?現役エンジニア、フリーランスエンジニア、個人事業主が語る、プログラミング初心者〜エンジニア就職のアドバイスをまとめました。いう方へオススメする、最強の転職法は以下よりお読みいただけます!未経験からエンジニアになる方法をみるプログラミングスクールをでてもエンジニアにはなれません!残念ながら、プログラミングスクールを出れば誰でもエンジニアになれるわけではありません。いう方へオススメする、最強の転職法は以下よりお読みいただけます!誰でもできる転職術をみてみる読むべき技術書まとめエンジニアの年収は450万円が当たり前?リアルな給与事情とは【働きながら通える?】プログラマカレッジの授業・カリキュラム詳細RECOMMENDこちらの記事も人気です。ひびのあおい(WEBエンジニア)本ブログメディアを運営しているWEBエンジニアです。短大卒からブラック企業に入ってしまい、うつ状態...。そこからプログラミングにハマってエンジニアとして自社開発企業にジョイン。