おねがい

紹介する書籍・機材などは「はじめてのIT勉強会」の活動費獲得用の広告を兼ねています。
活動維持のためと、ご理解をいただければ幸いです。
投げ銭の代わりにシェア拡散にご協力いただくことも大歓迎ですm(_ _)m

はじめに

この記事は、本当に「ゼロからソフトウェアエンジニアを目指したい」と考えている方の指針になることを目指して作成しています。開発用のパソコンを持っていなかったり、パソコンではネットをするだけだったりと、初心者、初学者の方の助けとなる内容と出来れば嬉しいです。
※あくまでも、はじめてのIT勉強会が考える惑わない指針として掲載していることをご了承ください。

  • Macbook Pro のタッチトラックパッドの使い方がわからない
  • Chromeなどのブラウザが標準装備しているデバッグツールがわからない
  • WebサイトやWebサービスの基本の仕組みがわからない

上記のような方が、学習開始から3ヶ月後に「新卒」や「第二新卒」、「未経験転職」として業界に踏み込める、そして、その後もブレない指針を持つための独断と偏見で紹介いたします。特定の言語に依存しない、業界に参戦する上で早くから積み上げて損のない考え方、捉え方を中心に掲載します。

中学生、高校生の方で進学後の業界参戦を考えている方は、海外を就労場所として視野に入れる場合を考え、コンピューターサイエンス(=CS)互換のある学部を選択することをおすすめします。

常に手元に置いておきたい本

まずはじめに、ソフトウェアエンジニアを目指す際に、常に手元に置いておきたい書籍の紹介です。
熟練プログラマーですら常に届くところに置いておくような書籍、困った時に「手に取って確認するための本」というのは、習慣化し、自身の思考の癖にするために非常に重要な役割を担います。

業界に足を踏み込んだ後、自身の土壌がしっかりしていないと修行期間が大変なことになってしまいます。困った時、飽きた時、「ん?」と思った時、スっと読める自分用の教則本として、ぜひ手元に置いておきましょう!

当記事は、業界に長くいるコミュニティーメンバーの独断と偏見により、『そもそも技術の変化が早い業界なので数年勉強して臨む、とか考える位なら飛び込んでしまった方が良い』という前提に立っています。そのため、業界に入るために必要な最低限と、踏み込んだ後の成長を助ける情報をまとめたガイドラインとして参考にしてください。
※逆に言うと、軸になる点をしっかりと獲得すれば、大多数の人には追い付くチャンスがあるとも言える業界です。

ということで、書籍の紹介からスタートです。


リーダーブルコード:絶対に読んでほしい

はじめてのIT勉強会でも取り上げている「リーダブルコード」。毎年度4月-6月は必ずこの書籍をベースにした勉強会を開催する位、重要な良書です。

「読みやすいコード」とはどのようなコードなのか、読みやすいコードが必要な理由と、具体的な対応指針が分かりやすく記載されていることに加えて、ページ量も他のおすすめ専門書と比較して少なく、とても読みやすいことも特徴。シンプルで実践的、かつその効果は、エンジニアとしての価値、能力を高めるために必須と言っても過言ではないと考え、はじめてのIT勉強会でも日々紹介に励んでいる良本です。

おすすめの使い方は、

  1. まず目次をざっと読む
  2. 全体を流し読みしてなんとなく覚える
  3. 流し読み後は、練習、実践としてコーディングしている最中に意識する
  4. コーディング中に気になることが出たらすぐに本を確認する

ということを学び始めから繰り返し続けること。

エンジニアでいる限り、常に手元に置いておいても良いのではと話題になる程の良書ですので、なにはなくとも、早い段階で手元に確保することをおすすめします。


プリンシプルオブプログラミング:一部は読み飛ばしてOK

はじめてのIT勉強会でも取り上げている2冊目の良書「プリンシプルオブプログラミング」。こちらは毎年度7月-9月に、必ずこの書籍の内容をベースにした勉強会を開催しています。この本は、読み終えたからと言ってコードが書けるようになる本ではありません。さらに第3章、第4章、第6章は、(ゼロからはじめた人は)読み飛ばしても問題ありません
業界に入って1年、3年と壁を感じた際に改めて飛ばした章を眺めてみましょう。

それでもおすすめする理由、それは以下、ソフトウェアエンジニア/プログラマが学ぶ上で重要な要素が詰まっている点です。
業界の人が使う、英語の頭文字を取った3文字の(よくわからない)言葉も記載されていたりと、まとまっている情報を読むだけでも損はありません。

  • プログラミングの本質的課題を解決することが目的の本
  • 陳腐化しない普遍的な情報(10年後、20年後でも通用する情報)を学ぶことができる本
  • ソフトウェアエンジニア/プログラマの成長の土台を作ることができる本
  • 情報元となった参考書籍が章ごとに記載してある本

どれも重要な要素ですが、特に最後の強調した個所がとても重要な要素となります。どのような書籍であっても参考文献、参考書籍の掲載は当然ありますが、本書では章ごとに記載されていることで、読み手が興味を持った内容を掘り下げたい時、「次にどの本を読めば良いのかわからない」という状況を確実に避けることができます。
この悩みを避けることができるのは、心理的負担も小さく、継続して学ぶ上では無視できない良点です。

何度読み直しても、その都度新たな理解が生まれ、読みたい本を探す指針になる良書ですので、こちらも早い段階で内容を抑えておくことをおすすめしています。


ノンデザイナーズ・デザインブック:デザインのポイントを学ぶことで自分の価値が高まります

ここからは飛び道具かもしれません。ソフトウェアエンジニア/プログラマー(=ノンデザイナー)も意外と「(視覚的な)デザイン」を気にする必要のある場面が多くあります。

自分でアプリを作りたい時、プロジェクトで社内用の管理画面を作りたい時など場面はさまざまありますが、その際、多くのノンデザイナーは指針のないモヤモヤ感から小さなストレスと戦うことになりやすいのです。
あとは、自分は気にしていないが、周りから依頼されるなどもストレスの種になりやすい。


本職のデザイナーさんに勝つ必要は当然ありません。そして、「デザインができないからこの道を..」という声ももちろんあると思います。そんな際、この書籍を手元に置いておくと、ひとまず誰が見ても「違和感がない」デザイン調整に大いに役立ちます。この書籍はセンスを磨くのではなく、基本となる原理原則を具体的に学ぶことができる良書として紹介しています。

エンジニアが感じる小さなストレスから解放されるスキルの1つが身に付き、さらにはデザイナー領域が少し理解できることで自身の視野、市場価値を高めることに繋がりますので、ぜひ一度読んでいただきたい書籍です。

ハンズオン型の教材本:まずは写経でOK

※写経=プログラムを理解しながら書き写すこと

言語によってさまざまありますので、ご自身が目指す言語で、ご自身が読みやすいと感じる書籍を探し出しましょう!余力があれば、おすすめ情報を別記事にてまとめたいと思います。


インフラからその他を一通り抑えることができる本:体験できると尚Good

サービスの稼働には多くの要素が含まれています。スマホアプリ開発など、開発からリリースまでを通して全体を一度体験しておくことは非常に有益です!
こちらも、開発するサービス、プロダクトなど、条件によってさまざまとなりますので、余力があればこちらも別記事にてまとめたいと思います。

並行して習得しておきたいツール

git/GitHub

シンプルに使い慣れておくことで就職に大きく寄与することになります。また、gitの使い方だけではなく、GitHubと連携し、自身のプログラムコードを全世界に公開することで、より成長するためのアドバイスがもらえるかもしれません。

今回紹介する書籍では、SourceTreeというツールを使ってGitの使い方を学びます。イラストがたくさん、というよりも、マンガなので初学者にはかなりわかりやすい内容になっていると思います。

gitを学ぶには、書籍以外でも以下のサイトが非常に優秀です。


サルでもわかるGit入門 〜バージョン管理を使いこなそう〜

並行して獲得しておきたい資格

基本情報技術者

正直な感覚として、資格に大きな就職効果はありません。しかし、資格を持っていることは、「同じ言葉(技術用語)で話すことができる」という保証を得ることができます。

知らない言葉が会話に出てくる、もしくは、長い説明を受ける必要がある、となると急にコミュニケーションが大変になりますが、資格を持っている、もしくは勉強をしていることである程度この問題が解消されるため、成長するための地力を養う意味では(つまらないかもしれませんが)とても重要で、効率的です。能力が同じように見える場合、資格有無の僅かな差が判断を分ける場面が採用する側の視点では起こるのです。

資格勉強に関してのおすすめ書籍は難しいですが、「イメージ(イラスト)」が多く使用されている参考書をおすすめします(キタミ式か柏木先生かその他か、自分が読みやすい書籍を選びましょう!)
人はイメージがセットになっている方が記憶に残しやすく、また理解も早いことが多いのです。

問題集に関しては、解説が丁寧と感じる書籍を選びましょう!

H30年度[春期]向けを掲載していますが、最新の同シリーズで読み替えていただければ大きく外れはないと思います。試験は、春期(4月)と秋期(10月)の2回、実施月の第3日曜日にIPA(情報処理推進機構)が実施しています。

ロードマップ(=自分の歩みたい道)を考えておこう

フリーランスになる、CTOになる、起業する友人を助ける、自分でアプリを売り出す、など、なんでも構いません。ゴールを決めて、ゴールから逆算して必要なスキルなどを身につけましょう、近くの業界の人や、前向きなことを発信している詳しい人に相談することがおすすめです。

「やめておいた方が良いよ」は、多くの場合、「(相手自身が)やったことのない限りは判断できない言葉」のはずなので、不安になることはありません、失敗しても後ろから刺されたりはしません。また、35歳定年説、みたいなことが言われていた業界ですが、都市伝説ですので心配いりません。

あったらいいもの

いろいろな開発に耐えられる高性能パソコン。勉強会とかで持ち運びたくなるので、ノート型推奨。きっと、いろいろやりたくなるのでメモリは多めに積んでおきましょう。覚悟を決めて購入して、「あ、この業界合わないから諦める」となる確率を下げましょう。
※身体が壊れるまで我慢する必要はないので、その際はサクっと逃げましょう、自分が無事ならいくらでもやり直せます。

大事なこと

実際に手を動かしながら学ぶことになることがほとんどで、時にはすぐ飽きるかもしれません。大事なのは、すぐに飽きても良い位の気持ちで、すぐに動いてみることです。

なにもわからなくても良いのでプログラムを真似てみる、テーマが分からないけど勉強会や興味あるイベントに行ってみるなど、だれに怒られることもありません。怒られたら別のイベント、勉強会など、自身が居心地の良い環境を選ぶだけで良いのです。

そしてもっとも重要なのが、(特に業界に踏み込んだ後、どの業界でも同じですが)身体や心が壊れる前に逃げてしまいましょう。「あれ?」「ん?」と感じる回数、違和感が増えたら逃げる準備です!


まとめ

ソフトウェアエンジニアを目指すために必要なことをまとめると、このような感じでしょうか。

  1. 目指す理由をぼんやりでも言葉にする
  2. 土台、指針となる知識を獲得しながら、ひたすらコードを書いてみる
    • GitHubに練習用コードを公開し続ける&勉強会などに参加してみる
    • 練習では、本記事が紹介している書籍の内容や勉強会で得た内容を意識する
  3. 3ヶ月目を目安にGitHubに公開した自分のコードと読んだ本を信じて業界の門を叩く
  4. 踏み込んだ後は修行する(合わない場合は無理をしないで逃げる)
  5. 自分の考えるゴールを手に入れるために動き続ける

繰り返しになりますが、学生以外が年単位で勉強する位なら、一気に学んで、1日でも早く業界に飛び込んだ方が良いと思います。2年経つと流行も変わっている可能性があり学んでいた技術が時代遅れになっている可能性もなくはありません。業界に入っても入らなくても、自身を磨くための時間は必要なので、現場で楽しみ、修行する方が成長を感じる近道だと、実際に現場に身を置きながら感じています。


最後に一言

いろいろな目的で業界に踏み込もうとしている方がいると思います。
どんな理由であれ歓迎されるものと思いますし、逃げるも追わないのがあるべき業界の姿だと見解としては思っています。

少しでも前進するために役立てる情報を発信できていれば幸いです。
せっかく興味を持ったからには、完全に飽きてしまうまでやってみましょう!

The following two tabs change content below.
アバター画像
いろいろな不安があって参加をためらっている方が、気軽に参加できることを目的に開催する勉強会です。はじめての人が一歩を踏み出しやすい勉強会の開催、情報の発信を心がけています。オープンマインドな運営を目指します。