paiza開発日誌paiza開発日誌IT/Webエンジニア向け総合求人・学習サービス「paiza」の開発者が、プログラミングやITエンジニアの転職などについて書いています。ITエンジニア向け総合求人・学習サービス「paiza」の開発者が、プログラミングやITエンジニアの転職などについて書いています。プログラミング-プログラミング学習Tweet西口です。paiza(ギノ)に入社して2カ月目の新人エンジニアです。先日、私が未経験からpaiza(ギノ)に入社してエンジニアになった経緯や、エンジニアになるまでに勉強した内容などをこのブログに書いてみたところ、たくさんの反響をいただきました。ありがとうございます!paiza.hatenablog.com今回は、自分なりにプログラミングを勉強したり、教わったりする上での心得や、壁にぶつかったときのマインドの持ち方などについて書きたいと思います。私もまだまだ全然新人エンジニアなのですが、同じように未経験からITエンジニアを目指している人、エンジニアになったばかりの人、プログラミングの勉強をしている人、挫折しそうになっている人にとって、少しでも参考になる部分があれば幸いです。前回の記事でも書きましたが、未経験者ににとって「聞くコミュニケーション」が非常に重要です。わからないことやできないことにぶち当たるのは日常茶飯事ですし、自分で調べたり考えたりするべきなのか、誰かに聞いたほうがいいのか、判断しづらいときもありますよね。基本的で当たり前ですが、私の場合、わからないことがあったときは1.まずは思いつくワードでググる、もしくは公式ドキュメントや解説サイトなどで調べます。それでも解決できない場合は2.わからない箇所と「そこまでの段階で自分が調べた内容や予想していること」を簡潔に答えられるようにした上で、Slackに質問を投げます。(質問内容によっては、先に疑問をSlackに投げてしまう場合もあります。paizaのSlackには、開発チームのタイムライン的な、要はなんでもつぶやいていいツイッターみたいなチャンネルがあって、そこに「○○というエラーが起きたので、今から解決方法を調べまーす」みたいなことを先につぶやいたりします。原因がpaiza内部特有のものだったり、同じエラーを経験した人がいたりしたら、その段階で解決法やヒントがもらえる可能性があるからです。)調べてもわからなくて、自力では解決できない!って場合は、開発チームの担当者、もしくはチーム全員に質問を投げます。そのときは、「ここまでこんなふうに作っていて、こんな結果になると思っていたんですけど、実際はこんなエラーが出てしまっていて...」みたいな感じで、疑問点を明らかにして、ちゃんと自分で調べたり考えたりした上で聞きます。ちなみに、明らかに内部的な部分(既存のコードや機能とか)について質問する場合は、該当する部分のコードをちゃんと読んだ上で「何行目のどこがわからない」などをなるべく明確にしてから聞くようにしています。教えてあげたいと思ってもらえる人になる教えてもらった人には、「教えてよかったな」「もっと教えたいな」って思ってもらえたほうが絶対いいですよね。解決したあとのコミュニケーションも大事で、「教えてもらったおかげで、これができるようになりました」みたいなことは積極的に伝えていったほうがいいです。Slackだと気軽に伝えやすいし。これは私が前職で教育業界にいたから(塾講師でした)思うのかもしれませんが、これがあるかないかで、教える側のモチベーションは大きく変わります。新人に仕事を教えて、できることが増えていけば、その人に任せられる仕事も増えていくはずです。それが実感できて「こいつに教えたほうが自分の得になるな」って思ってもらえたら、お互いがハッピーですよね。質問と議論を恐れない口先だけで「理解できました」と言ってしまうのは簡単です。本当に大事なのは、理解できたことにしてしまうのではなく「自分がどこまで理解したのか」を正しく伝えることです。教わっていて疑問に思うところがあれば、「なんでこの書き方になるんでしょう、自分はこうだと思ったのですが...」とか聞いたほうがいいです。「いやそれはこういう理由でこの書き方のほうがベターやねん」と教えてもらえたら、納得して理解できますよね。自分が納得できた教えは、たしかな知識として身につきます。これができていれば、後日何度も同じ質問をして「こいつ全然理解できてないやんけ...」などと先輩をいらつかせずに済みます。話に全然ついていけないときも、正直に「難しいですね...」「あとで詳しく調べてみます」とか言って、自分が理解できていないことは素直に伝えておいたほうがよいです。その場で「完全に理解しました(わかってない)」ととりつくろっても、教えている側には「本当は理解できてないな」というのがわかってしまうものです。逆に正直に伝えておけば、あとから別のアプローチで教えてもらえる可能性もあります。(教える側も、その場ですぐにベストな教え方ができるケースのほうが少ないので)仕事なので、時間がないとき、忙しいときなど、その場で詳しく聞けない場面もありますが、そんなときも「よくわかっていない部分もあるんですけど、いったんやってしまいますね!」と伝えるようにしています。あとで調べて理解できればそれでよいですし、もし調べてもわからなければ、「先日のよくわかってなかったアレなんですが...」とまた聞けばいいだけです。わかってないのに「わかりました」と言ってしまうと、あとから聞きづらくなって、わからないけど聞けないことがどんどん増えていってしまいます。楽しんで学びを続けるための取り組みエンジニアとして転職できたからといって、勉強は終わりではありません。なってからのほうが学ばないといけないことが多いですから、熱意を持ち続けて、いかに学びを継続できるかが重要です。学びの継続のために私が一番大事にしているのは、モチベーションファーストで、やる気が出るものから手をつけていくことです。そのほうが楽しいし、続けられるので。私の場合は、「前職で得た教育関連の知見をサービスにも反映させたい」「こんなアプリを作りたい」といった目標があって、それにつながりそうな勉強は、自然と「やりたい!」って気持ちがわいてきます。しんどくなってきたらそのあたりのやりたいことや目標を思い出すようにしています。やってることは同じでも、「仕事で必要だから仕方なく勉強しないといけない」よりも「やりたいことに近づけるぜ...」と思えたほうが楽しいはずです。壁にぶつかったときの乗り越え方プログラミングの勉強をしていると、どうしても壁にぶつかったり、挫折しそうになることがあると思います。そんなとき、私はいったんその壁から離れます。休憩するとか、全然違う作業をするとか、得意なこと・好きなことをやったりして、気持ちを変えて、やる気を取り戻す。それから、もう一回壁にチャレンジする。壁を乗り越えるには、これしかないと思います。何について学ぶときでも、最初が一番大変です。学習の成果は、必ずしも費やした時間に比例するものではありません。最初は、時間ばかりかかって成果がなかなか出ないものです。uxdaystokyo.com私は前職で中学受験の算数を教えていたのですが、たとえば算数が苦手な生徒が、改めて基礎から固めていこうと思ったら、6年生の夏で基礎を固めて、秋に丁寧に演習を積み重ねたとしても、冬休み(もしくは年明け)くらいまではなかなか結果が出ないこともあります。学習をしていればどこかで伸びるポイントがあります。冬休みの入試演習あたりから一気に得点が伸びて、追い込みでそれまでD判定だった第一志望に合格できちゃうケースも珍しくありませんでした。短期間でなかなか成果が出ないからと言って、基礎固めの段階で挫折してしまうのは非常にもったいないわけです。(これは余談ですが、短期で成績が上がらないと生徒よりも親御さんがしびれを切らしてしまい、すごくがんばっている子に向かって「もっとがんばれ」とキツい口調でしかったり、親子で受験ノイローゼになったりするケースも多いんです...)...って生徒たちの事例を前職でたくさん見てきたので、私は今の自分も同じ状態だと思っています。今が一番大変なときで、挫折しそうになるときもあるけど、これを乗り越えたらできることが飛躍的に増えて、楽になるはずだと考えて、日々仕事や勉強に取り組んでいます。あと、挫折しそうになったときは、それまでに自分がやってきた内容を振り返ってみると、「自分、結構いろいろやっててすごいのでは...」って気持ちになれます。勉強してきた内容は、面接で話せばよいアピールにもなりますから、挫折していなくても定期的に振り返って、簡潔に話せるようにまとめておくのがよいかと思います。まとめというわけで、プログラミングを勉強したり、教わったりする上での心得や、壁にぶつかったときのマインドの持ち方などを書いてみました。いま、私と同じようにエンジニアを目指して勉強している人の中には、もう無理、しんどい...って挫折しそうになっている人もいると思うのですが、そんなときは上記の話を思い出してみてもらえたらと思います。けのエンジニア転職サービス「EN:TRY」もあります。開発の実務経験がまったくない人や、若手で経験が少ない人でも応募できる求人票を中心に掲載しています。paizaと同様に、スキルチェック問題を解いて規定のランクを獲得できていれば、未経験者でも事前の書類選考なしでエンジニア求人への応募ができます。詳しくはこちら「paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。詳しくはこちらそしてpaizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。Appeloこんにちは。Hendricksこんにちは。