kei615ykhm’s programming learning blog

プログラミングを0から学んでいる学生の備忘録

【自分へ】エンジニアとして働くまでに身につけたいこと

エンジニアとして働くには、Web技術に対する知識や経験以外にも必要なことがたくさんあるという。

 

この記事では、技術面以外で身につけておきたいことを記録する。

 

様々な動画教材やインターネット上に散らばる意見、自身が現職エンジニアから学んだ知見を自分なりにまとめてみた。

 

 

エンジニアリングを学べ

プログラミングができる=エンジニアではない。

コーディングはあくまでも手段であり、それがすべてではない。

 

エンジニアの仕事は、物事の本質を捉えて課題定義し、解決を行うことだ。

 

具体化と抽象化のコントロール

例えば、具体とはりんご、抽象とは果物、と定義する。

このような具体と抽象を適切にコントロールは、設定と実装の間を行き来しやすくなり、柔軟な対応ができるようになる。

 

抽象的な設計を具体的な実装に落とし込んだり、具体的な実装から抽象的な設計に戻したりするというスキルは、「物事を本質から解決できるシステム」を生み出すことに繋がる。

 

また、顧客やユーザーのニーズを理解して要件定義を行える能力の開発にも繋がる。

 

 

常に「今」を求めよ

技術は日々進歩する。

新しい技術、新しい知見に敏感になり、すぐに手を動かして実践しろ。

 

特にAI技術の進化でそれらが顕著になり、半年も立てば世界は一変する。

時代の変化を追い続ける術を身につけよう。

 

Zennを読む

日々、現役のエンジニアたちが技術に関する知見を交換し合う場。

様々な技術ブログを通して、トレンドを追い続けよう。

 

技術カンファレンスに興味を持つ

いわゆるエンジニアによる学習発表会。

最新の技術から、再評価され始めた技術まで、幅広い最先端の知識が飛び交う場所。

いつか参加できるようになりたい。

 

 

アウトプット主体で技術を身につけろ

知識は蓄えているだけでは自分のものにならない。

手を動かして形に落とし込むことで始めて、身につく。

エンジニアを目指すなら日々学習していくものであれ。

 

技術ブログや記事を書く

GitHubリポジトリのような技術を記録する媒体があるだけでは足りない。

その技術を使ったことがあるという裏付けとして、ブログや記事は積極的に書こう。

 

覚えたことの整理に使う、エラーでハマったこと、なんでもいい。

自分が技術を通して得た知見を人目に付く場所に公開することが最も大切だ。

 

課題解決や定義の記録をつける

いつどこでどのような問題に直面し、どう定義して解決したか。

これらはエンジニアとして働くなら立派な実務経験になる。

 

具体と抽象コントロールを使いこなす訓練にもなる。

積極的に実践せよ。

 

 

たくさんのコードを読み書きせよ

0から1を生み出す力も大切だが、1から10を生み出す力も大切になる。

実務では、振られたタスク(Issue)から課題を定義し、実際のコードを見て問題点をピックアップする能力が求められることが多い。

 

Portfolioにオリジナル機能を実装する

実務未経験での転職でPortfolioに求められる「オリジナル機能の実装」は、実務でも同じようなことを日々行うため。

すでに出来上がったコードを読み、必要に応じて新機能を実装したり、バグ修正をするための能力を学習する段階から訓練させられていると考えれば、相当重要なスキルだ。

 

コードリーディングする

既に完成されたコードから課題定義するということは、前提として「このコードは何をしているのか」を知るところから始まる。

自分が作ったコードを何度読み返しても、得られる知識は限られる。

様々なコードを読んで、制作者の意図を掴む訓練を積極的に実践していけ。

 

仕組みを言語化する

予め全体の仕組みを理解する必要があるのは、修正したい部分のコードがどこに当たるのかを見分けやすくなるからだ。

例えば、バグ修正をする場合、「この機能は、このコードのおかげで動いている」という部分を見つけることから始まる。

そこから「この機能が動作するために必要なことが書いてある場所はここだ」と見つけられれば、大幅な時短にも繋がる。

 

初学者あるある「コードを一行書いて実行し、動くまでループする」行為は早々にやめよう。

これは「なんか動いた!」という最も恐ろしい状況にハマらないための術でもある。

 

共同開発を意識せよ

現場では常に共同開発がメインになる。

学習の段階から、ひとり黙々とやる作業ではなく、常に他人の存在を意識しよう。

 

他人にとって読みやすいコードを意識する

書籍『リーダブルコード』の内容を大切にしよう。

自分だけでなく、他人が読んでも理解しやすいコードを書けることが共同開発をする第一歩目だと心得ること。

 

個人開発でもIssue化を実践する

現場ではGitHubのIssue(Projects)を用いたディスカッションを行う。

個人的な学習でも疑似的にディスカッションを開いていこう。

 

今はChatGTPという最高の話し相手がいる。

AIを使って課題定義についてのディスカッションを積極的に行え。

 

プルリクエストを活用する

別名、業務の進捗報告である。

働き始めた時、自身の行動を的確に報告できるように訓練をしよう。