文系大学生が完全独学でソフトウェアエンジニアになった理由と具体的な勉強法

※無事に卒業後ソフトウェアエンジニアとして働かせていただくことが決まったので記事を更新しました。
今後も学習の進捗状況によって更新していく予定です。
# 1. はじめに
はじめまして。
関西の私立大学に通う新4回生です。

この記事では、私が文系学生からソフトウェアエンジニアとして働くことを決めた理由と、その具体的な学習方法について共有させていただきます。

現在は経営学部で、実際のビジネスケースを通じてマーケティングを学んでいます。座学だけでなく、実在する企業のビジネスモデルを分析し、その成功要因や課題について深く考察する機会を得ています。

所属しているゼミでは「地域統計を活用したまちづくり」をテーマに研究活動を行っています。統計データを用いて地域の課題を可視化し、より良いまちづくりの方向性を探る中で、データの重要性と可能性を実感しています。

中学・高校時代は6年間ラグビーに打ち込んでいました。毎日のように辛い練習がありましたが、とにかくラグビーに熱中していた中高生時代でした。中学から大学まではエスカレーター式で進学し、同じ学校の仲間たちと切磋琢磨しながら成長してきました。

このように、一見するとプログラミングやコンピュータサイエンスとは縁遠い環境で学んできた私が、なぜソフトウェアエンジニアを目指すようになったのか。その理由と、これまでの学習過程をこの記事で共有できればと思います。

# 2. エンジニアを目指すようになったきっかけ
大学3年生の春学期が始まる2ヶ月前、周りの友人たちは既にインターンシップへの応募を始めるなど、就職活動モードに入り始めていました。

当時の私は「経営学部だし、不動産、コンサルティング、金融あたりを受けることになるんだろうな」と漠然と考えていました。しかし、本当に自分がその仕事に携わりたいと思っているのか、それとも単に「文系だからこの業界」という固定観念や、周りの流れに身を任せているだけなのではないか――。そんなモヤモヤとした気持ちを抱えていました。

そんな時、エンジニアとして働く友人と就活の話をする機会がありました。その友人はIT業界やエンジニアという職種の魅力を熱心に語ってくれました。

しかし、当時の私の頭の中には「エンジニアは理系の仕事だ」という固定観念があり、文系の自分には無縁の世界だと思い込んでいました。「高校からずっと文系だし、プログラミングなんて絶対に無理だろう」そう決めつけていた自分がいました。

ただ、大して知らないまま諦めてしまうのは悔しい。そんな思いから、まずはIT業界やエンジニアという職種について調べてみることにしました。「やってみて無理だったら、その時は諦めればいい」そう自分に言い聞かせながら、プログラミングとコンピュータサイエンスの学習をスタートさせました。

そして、実際に学習を始めてみると、予想に反して次第にのめり込んでいきました。書いたコードが動いた時の達成感、新しい技術を理解できた時の喜び、そしてプログラミングを通じて問題を解決できることの面白さ。これらの経験を重ねるうちに、自然と「エンジニアになりたい！」という強い思いが芽生えていきました。

文系だから、プログラミング未経験だから――。それらは全て自分で作り上げた壁だったのかもしれません。実際に一歩を踏み出してみたことで、その壁を超えるきっかけを掴むことができました。

次のセクションでは、プログラミング未経験の文系学生である私が、どのように学習を進めていったのかをお話ししたいと思います。

# 3. 具体的な学習方法と教材
私は学習にあたってプログラミングスクールには通わないことを選択しました。その理由は主に二つあります
一つ目は、自分のペースで様々な技術に柔軟に触れていきたかったこと。
二つ目は、エンジニアには自走する力が必須だと考えたこと。
エンジニアは生涯学び続ける職業です。そのため、最初の学習段階から「自分で調べて解決する力」を養うことが重要だと考えました。
それでは、私がどのようにして独学でプログラミング学習を進めてきたのかお話しします。情報系学部ではない方で、IT業界やエンジニアに興味を持ち始めた方の参考になれば幸いです。

## 書籍での学習
コンピュータサイエンスやweb技術などのプログラミング以外の部分は以下の書籍で学んできました。
#### 1. 『いちばんやさしい基本情報技術者』高橋京介著
私が一番最初に購入した書籍です。
IT業界の基礎知識を体系的に学ぶことができ、専門用語や基本的な概念の理解に役立ちました。
学習の導入としては最適だと思います。
https://amzn.to/4asEMUs


#### 2. 『プログラミングコンテスト攻略のためのアルゴリズムとデータ構造』　渡部有隆 他著
こちらはプログラミングを学習して行く中でアルゴリズム問題が解けないという壁にぶち当たり急遽購入しました。笑
アルゴリズムの基礎だけでなくプログラミングの考え方の基礎も身につきました。
エンジニアの就活ではコーディングテストとしてアルゴリズムの問題が出題されるので学習は必須です。
https://amzn.to/4amHcUu


#### 3. 『Web API: The Good Parts』　水野貴明著
こちらは実務指向な内容でした。　
WEB APIの理解に非常に役立ちました。
こちらの書籍は実際に開発をしながら読むのがおすすめです。
https://amzn.to/4gTPyp5

#### 4. 『プログラマの数学 第2版』　結城浩著
こちらはゼミの教授に勧められて買いました。
プログラマに必要とされる数学的思考を体系的に学ぶことができます。
タイトルだけ見ると滅茶苦茶難しそうだったので文系の私はビビってましたが、とても丁寧な解説で学習し易かったです。
アルゴリズムとセットで学ぶのがおすすめです。
https://amzn.to/3Co601H


#### 5. 『オブジェクト指向でなぜつくるのか 第3版』　平澤章著
こちらは紹介する書籍の中でも特に重要です。
開発においてオブジェクト指向は非常に重要な知識です。
エンジニアを目指す方は絶対に学習するべきです。
https://amzn.to/4g3IK78


#### 6. 『イラスト図解式 この一冊で全部わかるWeb技術の基本』　小林恭平、坂本陽著
こちらは現在学習中です。
web技術について曖昧だった部分を復習することと基本情報のテキストでカバーできていなかった部分を学習する目的で購入しました。
イラストを用いて丁寧に解説してくれるので初学者の方にもおすすめです。
https://amzn.to/40AQFEf



#### 7. 『ソフトウェアアーキテクチャの基礎』　Mark Richards, Neal Ford著
ソフトウェアアーキテクチャとは何かを包括的に学ぶことができます。
私自身曖昧だった分野なので、本書を読むことは学習の中でも特に重要であると感じました。
ただ、割と玄人向けな内容であると感じたため、ある程度勉強を進めてから読むことを強くお勧めします。
https://amzn.to/3WmKm4C


### 8. 『達人に学ぶDB設計徹底指南書　第2版』　ミック　著
こちらはプロのDBエンジニアである著者がDBについて徹底的に指南してくださる一冊です。DB（特にRDBMS）の知識は開発するにあたってマストなので必読です。これを読むことで適切なDB設計を行うことができるようになり、開発効率も跳ね上がりました。
https://amzn.asia/d/4pFuBw2

### 9. 『フルスタックWeb開発』　株式会社オープントーン　佐藤大輔　伊東直喜　上野啓二　著
フルスタック開発を「在庫管理アプリケーション」の実践開発を通して、ハンズオン形式で学ぶことができます。
使われている技術もモダンなものなので、これからWeb開発を学びたい方には非常にお勧めです。
※ただし、そのまま実践してもエラーが出るので、言語やフレームワークについて学んでから読むべきだと思います。
エラーが出た際は、エラーログや公式ドキュメントを読んで学ぶチャンスです。新しい知識が手に入るので楽しいですよ😄
https://amzn.asia/d/8X7lwDB

## 今後読みたい書籍
### 『Java言語で学ぶデザインパターン入門第3版』　結城浩　著
デザインパターンは絶対学びたいと思っています。
読んだ後に感想を載せる予定です。
https://amzn.asia/d/hx8BlYj

### 『達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ』　ミック　著
これは読むと決めています。
逆になんで読まなかったんだと思っているくらいです。
改めてSQLについて徹底的に学びます。

## Udemyでの学習
オンラインで学習できる動画コースを提供する学習プラットフォームです。
たまに破格なセール(大体90%OFF:sunglasses:)を開催しているため、その際にまとめ買いしています。
購入した中で特に良かったものを紹介します。

#### 1. 現役シリコンバレーエンジニアが教えるPython入門！ 講師：酒井潤
私が最初に学習を始めた教材です。
ハンズオン形式で手を動かしながら学習できるため、効率的に学習を進めることができます。
基礎から応用まで丁寧に解説してくれるのでコースを終えた頃にはある程度Pythonで実装できるようになりました。
https://www.udemy.com/share/1013hk3@TTrMyjXfFKNZdLkhyhPG_RMniNyYYOXRaRAc714Nz-_gyrIwtt12dwipqFsWhuPh8A==/

#### 2. [2024年最新]React完全ガイド　講師：【CodeMafia】
こちらもハンズオン形式で手を動かしながら学習を進めることができます。
フロントエンドを学習したい方には非常におすすめです。
https://www.udemy.com/share/106RPe3@AhKyCWcuTBxbkrPPvU3WMvteN9geO71JmXB-qGiO_YfLcEmzsZQwvdzzy5ow69vmtg==/

#### 3. 3時間で学ぶ SQL ・データベース 超入門【丁寧な解説+演習問題で SQL データ抽出の基本が身につく】標準 SQL　講師：ひらまつ　しょうたろう
タイトルの通り知識ゼロの状態からでも理解できる丁寧な解説です。
また、コースの長さが3時間と非常に短いので、SQLやデータベースの基礎を効率的に学ぶには最適です。
https://www.udemy.com/share/101Yyw3@jRhak18S4zmaCUb1wWBOifa58rwpoi5Dk_et28cXr513fXQHFMzOxUdfTwpOiOqPHw==/

#### 4. プログラミング中級者になりたい人のためのクリーンコード入門　講師：【CodeMafia】
開発をして行く中でコードの保守性は非常に重要です。
「クリーンコード」とは何か、悪い例と良い例を比較しながら具体的に解説してくれます。
https://www.udemy.com/share/107nm63@o0yFB8KmVmhEsC0QXzYI6UQoOG7usxDHg7yQds9PZs8na1LGs97pQAljfZdN-RDbBA==/

#### 5. 現役シリコンバレーエンジニアが教えるGo入門 + 応用でビットコインのシストレFintechアプリの開発　講師：酒井潤
こちらは現在学習中のコースです。
サーバーサイド言語をもう一つ習得したかったため購入しました。
Pythonのコースと同じ講師の方でインプットとアウトプットを同時に行える点が魅力です。
https://www.udemy.com/share/101XFG3@WKlgtAusJn8FGkfp7O829idH5dNYjwhBIzy6VRBORJMFlrGb8cVAj27eBY4GFLmK1Q==/

## その他の実践的な学習
技術書やオンライン教材での学習に加えて、実際のコーディング経験を通じた学習も重要視しています。特に個人開発プロジェクトでは、以下のような学びがありました：
### 個人開発での学び

- 設計から実装まで一貫して携われる経験
- エラーと向き合うことでの技術力向上
- 公式ドキュメントの読み方の習得

### エラーとの向き合い方
開発中に遭遇するエラーは、最初は不安になりましたが、今では貴重な学習機会だと捉えています。エラーメッセージを丁寧に読み解き、公式ドキュメントや技術ブログで調べることで、より深い技術理解につながっています。

### 実践を通じた気づき
- 机上の学習だけでは得られない実装力が身につく
- エラー解決力が確実に成長している実感がある
- 技術情報の探し方、読み方が上達する

このように、座学での基礎固めと実践的なコーディング、そしてエラーからの学びを組み合わせることで、インプットとアウトプットの両方を行い効率的に学習を進めることができたと考えています。

## インターン/ハッカソンへの参加
独学での学習を進める中で、常に課題として感じていたのがチーム開発の経験不足でした。この課題を解決するため、6日間のフルスタック開発インターン（ハッカソン形式）に参加しました。

### インターンでの経験
- チームリーダーとしてのプロジェクト推進
- 要件定義から実装までの一連の開発プロセスの体験
- レベルの高いメンバーとの開発体験
- 最終プレゼンテーションの経験

### 得られた学び
- GitやGitHubを使用した実践的なチーム開発の流れ
- タスク管理やスケジュール調整の重要性
- チームメンバーとのコミュニケーションの取り方
- 技術的な議論の進め方

### 成長を実感できた点
独学では得られなかったチーム開発の経験を通じて、エンジニアとして必要なスキルの理解が深まりました。特にリーダーとして全体を見渡しながらプロジェクトを進める経験は、非常に貴重な学びとなりました。また、周りのメンバーは非常に優秀な方ばかりで非常に良い刺激をもらい、今後の学習のモチベーションにも繋がりました

この経験を通じて、エンジニアという職業により具体的な憧れと自信を持つことができました。技術力だけでなく、チームでの協働に必要なスキルも身につけることができ、エンジニアとしてのキャリアへの確かな一歩を踏み出せたと感じています。

### その他の学習
数学の学習を進めていく上で、分からない分野があった際は大学の教授に頼み込んで教えてもらっていました。
教授はその道のプロフェッショナルなので、積極的に質問してみても良いかもしれません。
勿論聞くタイミングはしっかりと見極める必要がありますが。

# 4.おわりに
文系学生からプログラミングを始めて、ソフトウェアエンジニアになるまでの私の経験をお話ししてきました。

振り返ってみると、「文系だからプログラミングは無理」という思い込みが、最初の大きな壁でした。今考えると、就活を目前に控えた時期にエンジニアへの転向を決意したのは、かなりのギャンブルだったと思います。笑

しかし、実際に一歩を踏み出してみると、プログラミングの世界の奥深さと面白さに惹かれていきました。今では、あの時の決断に全く後悔はありません。

# 追記
エンジニアとしての就活を振り返ると、楽しかった反面めちゃくちゃキツかったです。笑

一年前は想像もしていなかったキャリアを歩むことになりましたが、この決断に後悔はありません。むしろ、自分の可能性を信じて一歩踏み出したことで、新たな世界が広がったと感じています。

就活では、コーディングテストの壁にぶつかったり、面接で専門的な質問を浴びせられたりと、文系出身ならではの苦労もありました。特に、実務経験のある学生や情報系学部の学生と比較されることも多く、焦りや不安に駆られることもありました。

それでも、独学で身につけた知識と開発経験、そして何より「学び続ける姿勢」を評価していただけた企業と出会うことができました。振り返れば、エラーと格闘した夜や、わからない概念に頭を抱えた日々が、全て今の自分を作っていたのだと実感します。

これから新たなステージでも、学習を止めずに成長し続けていきたいと思います。技術の世界は日進月歩で、エンジニアとしての旅はまだ始まったばかり。大学で培った経営やマーケティングの知識も、きっと違った角度から開発に活かせるはずです。

この記事を読んでくださっている方の中に、私と同じように「文系だけど、IT業界に興味がある」という方がいらっしゃれば、ぜひ一歩踏み出してみてください。きっと新しい可能性が広がっているはずです。

最後に、私の拙い経験談が誰かの参考になれば幸いです。これからもエンジニアとしての成長記録を発信していけたらと思います。