年末年始を挟んで1ヶ月半くらい就職活動をしていたのだが、そこで、現役のエンジニアの方々と話すことが出来た。
大学生のとき「就職活動は様々な業界の社会人と話せるチャンス!」みたいなことを言われて「うるせえ」としか思えなかったが、今回は実際に、いい機会になった。自分が関心を持っている職種や企業だったから。
忘れないうちに、メモしておく。
いくつか注意点を。
とにかく列挙したが、そのエンジニアの方が普段から思っていることもあれば、何となくその場で思いついたこともあると思う。
だから、重要度などは濃淡がある。
あくまでも会話の流れで出てきたものを拾ってまとめただけなので、そのつもりで。
その場でメモしていたわけではないので、細部が異なる可能性もある。
複数の方が近い意味合いのことを話していた場合は、一つにまとめた。
文脈やニュアンスが様々なので、これだけ見ると矛盾するような内容であっても、必ずしも対立するものではないと思っている。
ここに書いてあるものは全て、前後のコンテクストを抜き取ってしまってあるので。
その会社固有の話なども、抜き取ってある。
それでは、列挙していく。
- GitHubの使い方は習得しておいて欲しい。
- コードはGitHubで公開したほうがいい。
- GitHubに限らず、自分のポートフォリオサイトがあったほうが望ましい。フロントエンドなら特に。
- 言語はまず1種類をしっかり理解して軸を作ったほうがいい。そうすれば、他の言語も理解できるから。
- SQLは触りだけでもやっておいたほうがいい。
- APIキーなどの管理には、環境変数を使うとよい。
- Herokuを使うと、デプロイは楽である。特にExpressで開発したアプリケーションの場合、ドキュメントも整備されているため使いやすい。
- Reactを使う場合、1つのファイルには1つのコンポーネントだけ記述したほうがよい。
- 過去の自分のコードを見てもらった際のフィードバックとして。
- ReactNativeは十分に実用的で、Reactだけでちゃんとしたアプリを作れる。
- コードリーディングの訓練としては、OSSを読むのが王道。
- 特に、同じ機能を持つものを自分で作ってみて、それと比較しながら読むと勉強になる。
- コードレビューは大切。なので、人からの指摘を受け入れる姿勢は重要。
- テキストベースでのコミュニケーションが多くなるので、それが円滑に出来ることは重要。
- 一緒に働いていく上では、お互いに尊敬できること、そして、しっかりとコミュニケーションを取れることが大切。
- 出来るエンジニアたちは、複数の言語を使えることが多く、特定の言語などに「こだわらない」傾向がある。
- フロントエンドやJavaScriptを究めるためには、複数の言語もやったほうがいい。そうしてこそ、レベルアップできる。
- 学習の対象として、Lispもいいと思う。メタプログラミングがLispの特徴。Rubyでもそういったことは出来るが、Lispで考え方を理解するのは悪くない。
- 大規模、大人数のときは、TypeScriptを採用する。型が便利というか、問題があった際にコンパイルするとエラーを出してくれるのが便利。
- 実戦でしか学べないことはある。独学では、自分の想像の範囲内のことしか出来ない。実戦だと、その範疇を越えた条件や状況に遭遇できる。
その他、感想。
「フロントエンドエンジニア」として応募したからだが、JavaScriptだけでなくCSSも重要ということは、複数の会社で言われた。
話を聞いてみると、バックエンドはRubyを使っているところが多かった。
GitHubでどんどん公開したほうがいいというのは、どこでも言われた。
まあ、それはそうだろうな。エンジニアとしての能力をアピールするには実際にコードを見せるのが一番だし、せっかくGitHubという便利なものがあるのだから。
コミュニケーション能力が重要というのは、印象に残った。もちろん、技術力や学習意欲があるのは前提だが。
これは自分もそう思う。
一定以上のクオリティのものは、一人で作り上げることは稀で、何らかの共同作業によって作られる。プルリクエストやコードレビューによって開発が行われる。
そうなってくるとやはり、他者と適切なコミュニケーションが取れることは必須になってくる。
「コミュニケーション能力」というと体育会系、リーダーシップ、飲み会の幹事、みたいなイメージが独り歩きしている感じもするが、もちろんそういうものではない。
とはいえ言語化するのは難しく、だからこそ、「コミュニケーション能力」という言葉が一部の人からは目の敵にされてしまっているのだろうけど。
建前や定型文ではなく本心で「貴重なお話ありがとうございました」という感じである。
誰かとプログラミングの話をしたことなど無かったから。