この記事のざっくり内容と対象読者
SEとして無能過ぎて死にたいと思っていた私が、学習して仕事で使えるようになったなと実感したポイント、学習の姿勢をいくつか紹介します。
SEとして今のままではダメなのはわかっているけど、どう勉強したら良いかわからず絶望している方へ
作る
作るのが最強
作るのが一番の近道とは良く聞きます。
今でも聞きますし、実際自分もそう思います。
私も一番無能で困っていた新人の頃によく耳にしました。
実際、私が新人の時に一緒に仕事をしていた超優秀な同期も、新人の時から独学でAndroidでGPS使ったアプリ等を個人開発していました。
といえど作れんわ
作れない人は作れない。
今のTwitter界隈で未経験からエンジニアを目指そうと発信している方々の中には、
さっさとレベルの高いポートフォリオを作らないと転職なんて無理とよく仰りますよね。
実際私もそうだと思います。
でも出来ない人は出来ないんです。
彼らの言葉通りに未経験でサクっと作ってしまう方々は本当に優秀だと思います。
まさにエンジニアは天職でしょう。
でも当時の私には無理でした。今でもインフラ部分もやれと言われたら結構しんどいです。
なので未経験からエンジニアを目指すのでその方法が知りたい方には、私は解決策を示すことができないのでこの記事は読まれない方が良いと思います。
まずは入門書を理解した
神入門書との出会い
私が新人〜2年目の当時悩んでいたものはJavaでした。
研修を受けましたが、入門書の6割も理解できていない状態でした。
継承もポリモーフィズムも知らないのに実務のコードなんか全く読めません。
そんな私を救ってくれたのが、スッキリわかるJavaシリーズです。
私にとってJavaの書籍で唯一役立ったのはこれだけです。
本当に新人の頃にこの書籍に出会いたかった。
この書籍のサンプルコードを見ないで書けるようになるまで繰り返しました。
まあこの書籍はわかりやすいので理解目的であればそこまでやる必要もないかもしれません。
読み終わってからは自分でコンソールでRPGを作ったりしていました。
本当はJS使ってグラフィックも取り入れたかったですが、無能だったので挫折しました。
enchant.jsの書籍を3冊程購入して読みましたが、無能だったので挫折しました。
入門書レベルも理解していないとキツイ
Javaに限らず入門書レベルも理解していないとキツイです。
別に書籍でなくても、公式のチュートリアルとかでも良いです。(むしろこっちの方が望ましいです)
私はJava以外の言語もいくつか経験していますが、『スッキリわかるJava』以外の入門書で特に感動するほど良かったと思うものには出会ってません。
わかりやすさはそれぞれあると思いますが、特に入門レベルで必要な知識が網羅されていること自体はあまり差はないのではないかと思います。
入門書を理解すれば、実務でコード触っていく中でググる力さえあれば動くものは基本的に何でも作れるようになります。
(綺麗なコードを書けるかは置いておいて)
それでも解決しないものはチームのメンバーに質問します。
入門書レベルの次のステップ
フレームワークの書籍はクソの役にも立たない
実務レベルといえば必ずフレームワークを使うのでフレームワークを理解して使いこなせるようになる必要があるのですが、
私にはフレームワーク書籍はどれもクソの役にも立ちませんでした。
私が読んだフレームワークの書籍はSeasar2、Struts2、SpringにAngularですが、全く頭に入りませんでした。
『スッキリわかるJava』のように、単純な文法の紹介ではなく原理原則を深く理解させるように説明してくれるものはないのかと嘆きました。
中級者の書籍は毎回挫折する
評判の良い『Java言語で学ぶデザインパターン入門』や『Effective Java』は独学で読みましたが挫折しました。
入門レベルを卒業しても、実務レベルをこなせる中級者へなかなか辿り着けない
私はずっとこの状況から抜け出せずに悩んでいました。
じゃあどうする?
やっぱり作るしかなかった
習うより慣れる、慣れたら習う
結局仕事でも、最低限動くものを作れなければいけません。
綺麗に書けるようにするのは、動くものが作れるようになってから。
作って行く中で、わからないものを調べて、マネして、動くものを作る。
作った後で、これを綺麗にするにはどうすれば良いのかを調べる。
最初はTODOリストのアプリとか、他にも擬似的なTwitterのアプリとかで簡単なもので良いと思います。
オリジナリティは、できるようになってから挑戦、簡易的なものを作ってから機能拡張で良いです。
こんな動画教材もっと早くから欲しかった
Udemyという動画講義のサイトで、作りながら覚える○○系の動画がいっぱいあるので、
自分が必要な言語の動画をセールの時に購入してみるのをオススメします。
真似しながら作ってみたら、今度は動画を見ずに自力で0から作ってみるのも良いと思います。
また、最近はYouTubeでもわかりやすく、結構掘り下げて説明してくれている動画がいっぱいあるので、学びたい技術についてはYouTubeで探してみるのもオススメです。
特に海外のカンファレンス動画は新しい書き方やきれいなコードの書き方が参考になるので、英語はよくわからなくても映ってるコード読めばなんとなくわかるのでオススメです。
やる気の維持
完璧主義は挫折する
作るものについては、完璧を目指すと高確率で挫折します。
例えば、
- 最初から完璧にクリーンなコードを書かないといけないとか
- フロントエンドもバックエンドも初学なのに両方同時に作ろうとしたり
- フロントのコードの学習がメインの目的なのに、いきなりログイン認証機能を実装しようとしたり
- AWSやDocker、CIまでを最初から盛り込んで作ろうとしたり
できる人であれば、挑戦すべきだと思います。
でも、できずに無力感を感じでやる気がなくなってしまうなら、一つだけで良いから作り始める、
まずはできるところからやる。
今日30点の成果を上げた自分を褒めまくって甘やかす
出来上がったものがしょぼい機能でも全然OK。
後から機能を付け足していけばOK。
少しずつ、できることを増やしていく。
という姿勢が一番挫折しにくいてす。
本当はここまでのレベルのものを作れるようになっていないといけない、
でも今の自分はここまでしかできない。30点くらいしかできない。
それでも全く問題ありません。
成果を焦らない、成長過程を楽しむ
わからないこと、できないことばかりだと、やる気がなくなります。
仕事も勉強も、最初はつらいです。
仕事でいえば、3年目くらいから楽しくなってくるという話をよく聞きます。
私は仕事が楽しいと思えるようになったのはIT業界歴6〜7年目くらいからようやくです。
できることが増えて、チームの役に立てていると実感し、自信につながったからだと思います。
私は生きている中で気分がどん底になった時は、RPGゲームに逃げています。
RPGは、基本的に最初は主人公はレベル1でできることが少なく弱いです。
まずは周辺の弱い敵を倒していって、徐々にレベルが上がって行き、使える技や魔法を増やしていったり、お金を増やし、だんだん強い装備を身に着けていく。
RPGはこの成長過程が面白いです。
小さな成功体験の積み重ねです。
勉強も、最初は知らないことばかりですが、簡単なものから理解して、繰り返し勉強して覚えていって、徐々にわかること、できることが増えていきます。
そうやって自分の成長を少しずつ実感していくと、楽しくなって勉強が止まらなくなります。
この過程を楽しむことが重要です。
最初から、ここまでできないとダメなんだと考えて始めると、できないことばかりに目が行ってやる気がなくなります。
ググれば大半解決する
英語でググる
わからないことは、英語でググってください。
知りたい内容や困っている現象、達成したい内容の英単語を3〜5個、羅列するだけで大丈夫です。
何でも解決してくれるStack OverflowというQAサイトがあります。
実務で作っていて困ったときはStack Overflowで8割以上解決しました。
DeepLというアプリで良い感じに翻訳してくれます。
特にAngular等の新しめの技術、バージョンアップのサイクルが早い技術は日本語の記事が本当に少ないです。
UdemyでもAngularの講座は英語の講座を受講しました。(翻訳が超大変でしたが。。)
私がAngular案件でエース級に生産性を上げることができた要因は、英語でググって解決策を探すのが他のメンバーより圧倒的に得意だったからでした。
それでもどうしても解決できずに困ったことは、自社の先輩に聞くのも良いです。
私も新人の頃、独学でエラーが解決できずに困り果て、同じ現場にいない先輩にも相談しました。
作るだけを目的とするなら書籍はいらない子
失礼ながら一番生産性の低かったメンバーは、わからないことを書籍内で探し回り、全く解決できていませんでした。
フレームワークの書籍は、情報が古く、しかも情報量すらも少ないので、逆引き辞書としても全く使い物になりません。
概念を理解させる説明すらもほとんどない、辞書としても使えない、ゴミかと思ってしまいました。
書籍はプラスアルファの知識、見識を広め、深堀りするものだと思っています。
私は、実務でSQLについてもっと良い書き方をしたいとか、パフォーマンスの高いSQLを書きたいという必要性が出てきた時に、ミックさんのSQLやDB設計の本を読んで役に立ちました。
フレームワークの書籍が役に立ったと思ったことは1度もありません。
作っていく中で、わからないことをググって理解していきました。
書籍を完璧に理解しなければ作れないということは決してありません。
これを意外と勘違いしている人を結構見かけます。
実務で開発経験が積めない現場にいないと正直成長は難しい
やっぱり実践に勝るものなし
作ろう作ろう言いましたが、結局私が一番コードを書く力が身についたのは実務でコードを書くことでした。
実務でわからないことが出る => ググって解決する。
実務で書いていて汚いからなんとかしたい => アーキテクチャの記事を読んで取り入れる。
独学で挫折したデザインパターンも、実務で書いたコードが汚すぎて、汎用性が低すぎてなんとかしたい欲求がめちゃめちゃ高まり、調べて適用させて身につけていきました。
あれだけ苦労していた書籍学習はなんだったのか
Springの書籍を毎回読んで、「依存性の注入とは」の項目を何度も何度も読みましたが、全く頭に入りませんでした。
でも実務でSpring Bootを触り、Controller、Service、Repositoryのそれぞれの責務、役割、書き方、使い分けは書いているうちに勝手に理解しました。
依存性の注入のメリットも、実務でAngularを書きながら、ググって理解しました。
なので今の現場でなかなか開発に携われないけど、技術力をつけないと将来不安と思っている方は、上司にそういう現場に入れないか相談するか、転職するか、バイト・副業を探した方が良いです。
※ただし、独学し続けることは必須です。
独学だけでできる人なら現場は開発工程じゃなくても良いかもしれないですけどね。
資格で仕事ができるようにはならない
資格をとったことがある人にしかわからない境地
私は高度情報処理試験やベンダー試験を受けたことがなく、
その境地に立っていないので、資格をとることのメリットがわかりません。
なので資格の勉強をするとどうなるのか詳しく知りたい方は、ハイレベルな資格を持っている方に聞いてみることをオススメします。
SESの企業であれば、案件探しでお客さんにアピールになるので、会社から取れ取れ勧められます。
資格よりも目の前の仕事
仕事できない人が資格とったからって仕事はできるようにならないです。
私は基本情報を取得しましたが、仕事で役に立ったと実感することはほぼありません。
たまに、あー基本情報で聞いたことあるなーくらいです。
常に触れてないとほとんど忘れます。
常に仕事で触れているなら、仕事で理解して覚えます。
資格を仕事で役に立たせられるかは、その人次第です。
個人的には、資格の勉強をするより、日々目の前の仕事をしている中でわからないことを調べる、使っている技術を独学でも触る、という方が仕事で使える人材になるには近道だと思っています。
資格は、目の前の仕事がある程度できるようになってから、挑戦してみる方が良いと思います
この記事が誰かの役に立てれば嬉しいです。
コメント