【結構良いこと書いてる】ソフトウェアエンジニアとしてどう学ぶか

この記事について

この記事は、ソフトウェアエンジニアの未経験者・初心者向にどうやったらソフトウェア開発をより良く学んでいけるのか、ということについて私なりまとめてみました。生意気な記事ですみません。ただの暇つぶしと思って読んでください。
image

私について

私は、2006年からソフトウェアエンジニアとして活動してきました。数社のソフトウェアハウスを経て個人事業主になり、2021年に法人化する予定です。2006年といったらまだWindows XPの時代でした。SQL Serverは、version 2000で、サーバのメモリが4GBでした。今から考えると超非力でしたね。開発ツール、フレームワーク、ライブラリ、メディアは、豊かではなく、主に書籍、ウェブ上のチュートリアルでソフトウェアを学んでいました。

違和感を感じる今日このごろ

ソフトウェア学習を目的としたビジネスが流行っています。例えば、プログラミングスクール、オンライン動画、このMENTAもその一つですね。ビギナーのメッセージを読むとHTML/CSS・ウェブデザインに関する内容が多い印象を受けます。あとは副業に関する内容も多いです。これってもしかしたらこういうビジネスの宣伝文句じゃないかと思います。リモート学習でデザイナーになれるとか、副業で稼げるとか。これらを否定する気は全くありません。 でもプロフェッショナルなソフトウェアエンジニアとしては少し物足りないと感じます。

プロフェッショナルなソフトウェアエンジニアって

プロのエンジニアについての定義をします。以下にリストアップ。この中の7個以上できたらプロってことにしましょう。あげれば霧がありません。ただソフトウェアというものはいくつもの要素の上で実装されているのであって、HTMLとCSSだけじゃないってことです。

  • ソフトウェアについて日々学び精進している。
  • 基本的なコンピュータ工学について理解している。
  • 基本的なアルゴリズムについて理解している。
  • 基本的なソフトウェアの動作する仕組みを理解している。
  • 2つ以上のスタイルのプログラミング言語を理解している。
  • データベース・SQLについて理解しているし、操作できる。
  • ネットワークの基本的な動作、ネットワークコマンド、仕組みを理解している。
  • スクリプト言語を用いてバッチ処理をかける。
  • Windows上で動作するアプリを好きな開発環境で実装できる。
  • httpプロトコルの内容を理解している。
  • html/css/javascriptやフレームワークを利用しフロントサイドを実装できる。
  • 何かしらのプラットフォームでサーバサイドを実装できる。
  • android/iosアプリを実装できる。
  • Mac/Linux/Windowsなど特定のOSについて問題なく操作できる。
  • 英語をつかってネット上で検索できる。理解できる。
  • ソースコントロールを扱える。
  • あとはプロジェクトに馴染める。嫌なやつとかいるもんなぁ~
    他にもたくさんある〜〜割愛〜〜

で、どうやって学ぶか(あと少しです。頑張って読んで)

ソフトウェアは学習してから作るものではなありません。作りながら学ぶものです。そして一番効率が良いのは、就職してソフトウェアを仕事にすることです。一日8時間は学習できます。エンジニアとしてまだ未熟であっても就職することが一番近道です。たとえブラックな企業だとしても投資と思って少しの間、就職するのは手かもしれません。学習のときは、手を動かすこと。動画を見ただけ、本を読んだだけでは、覚えた気になるだけです。必ず手を動かして実際に動作させてみてください。そのうち本を見なくても手からコードが紡ぎ出されます。結局のところ時間をかけて少しづつ取り組むしかありません。近道はないです。ただし間違った方向に行かないようにする必要があります。なのでこのMENTAというのはとても良いかもしれません。まずは良いMENTAと出会ってくださいね。

私の好きなのウェブページを最後に記載します。
how to be a hacker
joel on software

振り返って

結構良いこと書いてるなって自分で思いました。イイねとかしてくれる人いないかなぁ~