医療系の専門学校を中退して、プログラムのプの字も書けない状態からIT企業に就職しました。現在はエンジニア歴5年目です。エンジニアになりたての時により早くプログラムが書けるようなるために意識していたこと・心掛けていたことを紹介します。
同じような境遇でスタートした方や、しようとしている方の何かのヒントや・参考になれば幸いです。
1.とにかくコードを書く、わからなくなったら図式化する
まずは、なんでこう書くのかとか考えずに、こう書くもの!と身体に覚えさせる感覚でとにかくコードを書くようにしてました。(考える前に指がカタカタと動き出すくらいに☜大げさ)
なのでエンジニアスタートして、1年くらいはソースレビュー時に「なんでこう書いたの?」と質問されても、「うーん、感覚的に?⭐️」みたいな感じでした。今思えばめちゃくちゃ危険ですね。
もちろん、最初から理論を理解できて、書ければそれに越したことはないですが、私の場合、それができなかったのでとにかく反復練習で身体に覚えさせました。
今すぐに全部を理解しようとは思わずに、まずは知識の"点"をたくさん作るようにしていました。そうすると私の場合は3年目くらいの時に「あれはそういうことだったのか!」とか「だからこう書いているんだ!」と点と点がつながっていくような感覚がありました。
そして、処理がどう流れていくかイメージを掴みやすくするために、よくコードや仕様を図式化してました。
draw.ioやAstahを利用して綺麗に描くときもあれば、とりあえず作法は気にせずにメモ帳に殴り書きで描く時もありました。最初はやはりイメージを掴むということが大事で、これができればコードもチャカチャカかけるようになるのかなと思います。
2.何かわからないけど、動いたらとりあえずめちゃくちゃ喜ぶ
何事も辛いことばかりだと続かないと思っているので、まずは開発するにあたって自分なりの喜びややりがいを見つけることは大事だと思います。
私の場合は、初めてプログラムを書いてコマンドプロンプトに"Hello World"が表示された時に、とてもとても嬉しかったです。なのでどんな時も一旦ソースの良し悪しは置いといて、動いたらスキップして喜びました。
気持ちをリセットしてから、ソースコードの良し悪しを考え改善できると、さらに大きな喜びが待っていると思います。
3.人のコードをたくさん読む(見る)
学ぶことは真似ることから始まると言われるように、まずはいろんな人がどのようにコードを書いているのか知ることが大事だと思います。
当時はWEB上に転がっているコードをよく見ていましたが、今思えば会社ごとにコーディング規約なども異なりますし、先輩方が書いたコードをたくさん見ていく方がいいのかなと思います。今でも合間時間などに自プロダクトのコードをPRで見ています。
最初は訳わからなくても、人のコードを見ていくうちにだんだんコードを読み解けるようになり、こう書けばいいのかという知識になっていって、気づいたら自分の知識になっていると思います。
4.質問をする時には頭の中で整理してから質問をする
はじめは自分がわかっていないこともわからずに猪突猛進的に質問をしていたので、
上司「何がわからないの?」
私「....何がわからないんでしょう。」
とただの時間泥棒になっていました。
調べたらわかるじゃんとも思いますが、この時はそもそもなんて調べたらいいのかわからない状態なのでこれも時間を溶かすだけになってしまっていました。
そのため、10分自分で調べてわからなかったら、人に聞くと決めて、聞くときには⇩をまとめてから聞くようにしました。
1.実現したいこと
2.うまくいかないこと エラーが出ているのであれば、エラーの発生箇所やエラー内容
3.自分で調べてわかったことや、考察
人に聞く(伝える)ためには頭を整理してから聞くため、聞こうと思ってまとめているうちに自分の中で閃いたり、話しているうちに自分の間違いに気付けたり、そういうことも多々あると思うので、まずは頭の中で整理してから質問をするといいと思いました。
5.プロフェッショナルという自覚をもつ
これは今でも一番大事にしてます。
エンジニアなりたての頃は、何か問題があっても初心者だからという言い訳を自分の中でよくしていました。
今思えば、入社して半年くらいは、"仕事"をしているという感覚ではなく"勉強している"という感覚だったと思います。
しかし、クライアントから見ると初心者が書いたコードとか熟練者がコードかとかは関係なく、「会社」からリリースされているもので、その責任は会社が担うものとなります。
その自覚があるかないかで仕事への取り組み姿勢に雲泥の差が出ると思います。
私はプロフェッショナルという気持ちで仕事をすると、時間を効率よく使おうと努力しますし、いいコードを書くために"勉強する"ようになるため、この心の持ちようで仕事の効率も、技術のキャッチアップ力も向上しました。