こんにちは!seiです!
- プログラミングを独学したいけど、未経験でも大丈夫?
- 未経験ならではの注意点があったら知りたい
- 未経験からどうやって学習するの?
今回はそんな疑問に答えていきます!
この記事の信頼性
僕は完全未経験+独学でWebエンジニアになりました。
一年で転職して150万円年収が上がりました。
プログラミングの独学は未経験でも可能です
というかむしろ未経験が主流だと思います。
あと未経験じゃない人が勉強してても独学とは言わないですよね(笑)
弁護士が法律の勉強していて、法律を独学で勉強してる!ってならないですよね。
話がそれましたが、独学が未経験でも可能な理由は以下です。
- 情報が豊富にある
- 対面じゃないと伝えきれない部分も動画でカバーされている
- 基礎知識は資格でカバーできる
情報が豊富にある
ご存じの通りインターネット上には、ほんとに豊富に情報があります。
独学で勉強する際にも困らないほどたくさんの情報があります。学習する項目や手順がしっかりしていれば、ネットで調べながら独学しやすい環境です。
対面じゃないと伝えきれない部分も動画でカバーされている
YouTubeが発達するまでは、どうしても対面でしか伝わらない部分がありました。
例えば、コードをどんな手順で書いていて、その際に何を考えているか等ですね。書籍に載ってないような思考の部分って意外と大事でここが実務経験があるエンジニアとの違いだったりします。
今はYouTubeでいろんなエンジニアが発信してくれているので、とても便利な時代です。
基礎知識は資格でカバーできる
それでも情報系の学科で学んできた人との差があると感じている人もいるでしょう。
僕も農学系出身なので、エンジニアになった後も情報系出身の人との差を感じていました。
この部分は「基本情報技術者試験」や「応用情報技術者試験」という資格の内容で補うことができます。
しかし、このあたりの知識はエンジニアになるには必須ではないです。
業務で使わないような知識も含まれているので、業務がある程度できるようになってから取り組むのが良いです。
未経験で独学するうえで注意すべきこと
僕が未経験で学習を進めていた時は「学習時に何を意識したら良いのか」が分かりませんでした。エンジニアは普段どういった点を意識しているのかがとても知りたかったです。
「とりあえず動くものを作る」のは割と誰でもできます。
エンジニアになりたいのであれば、ちゃんと動くものを作成するために意識すべきことがあります。
心配しなくても大丈夫です!過去の僕のような人に向けて意識すべきことをお伝えします。
未経験で独学する際は以下の点に注意してください。
- 独自で考えた変なやり方をしていないか
- セキュリティは大丈夫か
- 保守性を考える
独自で考えた変なやり方をしていないか
未経験で何も知らない所から学習を進めると、とにかく自分よがりの独自のやり方になってしまいがちです。
独自のやり方というと、コードの書き方しか想像d機内かもしれませんが、たくさんあります。
例えばシステムの設計(アーキテクチャ)はこれでよいのか?DBのテーブル設計はこれでよいのか?バックエンドのアプリケーションの立ち上げる流れはこれで良いのか?などです。
少しでも疑問に思ったら一般的なやり方を調べるようにしてください。
セキュリティは大丈夫か
未経験で学習しているとセキュリティがガバガバになりやすいです。
セキュリティで考えるべき項目は大きく分けて3つあります。
- 認証 (あなたは誰?)
- 認可 (どのリソースに対して許可がある?)
- 外部からの攻撃 (SQLインジェクションやXSS)
認証:あなたが誰かを確かめます。ログイン等が分かりやすいですね。
認可:どんな許可を得ているか?を確認します。電車とかわかりやすいですね。切符を持っている人は電車に乗る許可を得ていると言えます。認証と合わせて「誰がどの許可を得ているか?」を考えることが多いです。
外部からの攻撃:外部からの攻撃にはSQLインジェクション、XSS(クロスサイトスクリプティング)、CSRF(クロスサイトリクエストフォージェリ)等があります。SQLインジェクションとXSSだけはしっかり学習してください。これら二つの脆弱性はユーザの入力値に「プログラムが理解できる文字列」が含まれている事によって起こります。
ユーザからの入力を無害な文字に変換するサニタイズやエスケープ処理で対策できます。
後はパスワードとかDBにそのまま平文で保存しないようにしましょう。
保守性を考える
プログラミングで作成したアプリケーションは長期的に運用していく必要があります。
後から機能追加があったり、バグが見つかったりすることがあります。その際にコードが整理されていなくて、ぐちゃぐちゃだと改修しにくいですよね。
あとすべての機能のコードを同じところに記載した場合、コードを変更することで起こる影響が予測できません。
独学のうちから保守性を考えるのがおすすめです。
僕は独学の時は保守性を深くまで考えられていなかったので苦労しました。
リーダブルコード ?より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice) 新品価格 |
プログラミングを未経験から行う方法
前述の注意点に気を付けながら、未経験から僕がプログラミングを学習した方法をお伝えします。
最初から手順がすべてわかっていたわけではないですが、調べていくうちに目標は下記のようになりました。
初期目標:ホームページを作成する
中期目標:バックエンドサーバを作成する
最終目標:Webアプリを完成させる
具体的な勉強方法は以下記事をご覧ください。
こんにちはseiです! エンジニアになりたいけど、独学で大丈夫? 独学で学習したいから勉強方法が知りたい! おすすめの言語とか、何から始めたらよいか知りたい! この記事は僕[…]
gitについて学ぼう!
gitとgithubの使い方はエンジニアになったら、必ず身に着けないといけないです。個人開発を行っている段階でも、触れておくのがおすすめです。
以下の福さんの動画が分かりやすいので、これをみてgitを学んでみてください。
gitについては理解できると思いますが、ブランチの概念をチーム開発をせずに理解するのは大変です。
エンジニア一年目時代にgitを学習した神サイトがあるので使ってください。
An interactive Git visualization tool to educate and challen…
まとめ
プログラミングの独学を未経験から行う方法について解説しました!
未経験から挑戦してみてとても大変でした。特にデプロイまわりでめちゃめちゃ苦労しました。自分のPC上では動いてるのに、デプロイすると動かなくなったりするんですよね…
自分も独学時代に周りに教えてくれる人がいなくて苦労しました(´;ω;`)
どうしても詰まったり、助けが必要な場合はメンタやってるのでお声掛けください。
フルスタックエンジニアとして働いています。フロントエンド、バックエンド、クラウドについての知識を教えることができます。 …