※社内向けに書いた記事を、全体公開用に修正した記事になります。
新年度という事で、新人~若手エンジニア向け記事を書きました。
といっても、今まで色々と伝えたいことは記事にしてきたつもりなので、これまで書いてきた過去の記事をまとめつつ、足りない部分を追記しながら、新人〜若手のうちに身に付けておくと役立つであろう知識やスキル、考え方などを一通りまとめました。
エンジニアとしてのスキルアップに何かしら役に立てば幸いです。
ビジネスマナー
社会人として組織の中で働くなら、なんだかんだマナーは大事です。ただ、マナーというのは意外と難しく、これができれば大丈夫というものはありません。マナーの本質を考え、この人と一緒に働きたいと思われる人を目指して、相手の立場で考えて行動を続けるしかないでしょう。
抽象化思考
抽象化思考とは、ざっくりいうと具体的な内容を一般化して他に応用する考え方のこと。抽象化して考える能力が高いと、学んだことを別の分野へ応用できるようになります。抽象化思考の有無は新しいことを学ぶときの理解力や習得のスピードに大きく影響します。
特に、プログラミングなどの技術系の習得スピードや、ソフトウェア全般に対する設計力の高さは抽象化能力が大きく関わっていると思っています。
そのため、早い段階で抽象化思考能力を鍛えておきたいところ。
問題解決力
エンジニアの仕事は、突き詰めると問題解決に行き着くと思います。
問題を発見し、技術による問題解決を図ることが、エンジニアとして働くということ。
面倒な作業や、非効率な作業、手動だとミスが発生しそうな作業を見つけ出し、そこに対してツールやサービスを導入して課題の解決を図る。そのようなツールやサービスがない場合は、自分たちで新しいツールを作ったり、既存のツールに機能を追加することで課題解決を図る。
そのような問題解決を柔軟に実現できるよう、問題の発見力と解決力を身につけていきたい。
PC操作
PCはエンジニアにとっての仕事道具。仕事道具をうまく使いこなせてこそ、プロの職人なのかなと思います。
どんなに料理や食材の知識が豊富でも、包丁さばきが下手な料理人をプロの料理人と呼ぶのはちょっと微妙な感じがする。エンジニアにとってのPCは、料理人にとっての包丁みたいなものだと考えると、早い段階から使いこなせるようにしておきたい。
最近は仕事の中でAIとチャットでやり取りする機会も増えてきたこともあり、タイピングが遅いと仕事の効率にそのまま影響が出てしまう場合も。とりあえず、タイピングとショートカットキーを使ったPC操作にはある程度慣れておきたい。(音声入力によるやりとりがもっと一般的になれば、今後タイピングスキルも不要になるかもしれないけれど。)
タイピングが苦手な人はゲームとかで毎日少しずつでも練習すると良いでしょう。
ちなみに、最初はタイピングが遅くても、仕事で毎日PCを使っていれば自然と速くなるのでは?と思う方もいるかもしれませんが、ほとんどの場合仕事しているだけでタイピングは速くならないです。
スポーツは試合の経験だけで上達するスキルは限られています。試合以外の時間で練習を重ねることでスキルを磨き、それを本番(試合)で発揮することにより成果を出すことができる。この原理はタイピングでも同じ(プログラミングでも同じ)。意識して練習をすることが上達のコツ。
Excel活用
PCを使う仕事をしていると、なんだかんだでExcelに触れる機会は多いです。
なので、Excelをうまく使えるようにしておくと、色々な場面で仕事の効率化につながります。
ただし、Excelは本来表計算ソフト。表計算が不要な資料や、表形式である必要がない資料をExcelで作るのはExcelの強みが全く活かされない使い方なので、できればやめてほしいというのが本音。Excelを使うのが向いている場面、向いていない場面を正しく認識し、うまく使い分けてくれると嬉しいなと思います。
AI活用
今の時代、AIを使いこなせるスキルは重要。
ただ、AIを使いこなすための専用スキルがあるのかというと、実はそんなものはない気もしています。もちろん、使用するAIツールの知識が必要になることはります。けれど、根本的には、コミュニケーション力、マネジメント力、開発力、問題解決力の総合力がそのままAI活用スキルに直結しているように思います。これらの能力を磨くことが、結果としてツールに依存しないAI活用スキルになるのではないかと思っています。
AIによってソフトウェア開発のあり方は大きく変わってきているけれど、エンジニアに求められる能力というのは実際にはあまり変わっていない部分も多い気がします。
開発で直接AIを使う場合は、設計スキルが大事になってくると思います。コーディングのほとんどをAIに任せられるくらいに、AIの能力は高いけれど、設計方針は人間が主導権を握らないと、長期的にソフトウェアを成長させ続けていくのは難しくなります。
システム全体のアーキテクチャからコードの細かい書き方まで、様々な粒度で自分の理想を正確にイメージでき、かつそれを言語化できる人は明らかにAIの恩恵を受けやすい。逆に、システムの理想系をイメージできていない人が開発でAIをフル活用すると、AIに振り回されてしまい、逆に生産性を下げてしまう可能性もあります。
新人のうちは学習目的など、特定の用途に限定してAIを使うのが良いかもしれないとも思います。
マークダウン記法
マークダウン記法は、テキストを記述する際の記述方法の1つ。
エンジニア向けのドキュメント(WikiやREADMEなど)や、AIツール向けの設定ファイルや指示の出し方など、開発の仕事をしているとマークダウン記法に触れる機会は非常に多い(QiitaやZennなどのブログ記事の書き方もマークダウン記法)。Web系の開発やAI活用においては、マークダウン記法は避けては通れない知識となるでしょう。
マークダウン記法に慣れておくと、何かを学習するときのメモの取り方や、議事録を作成する際のメモの取り方としても活用できます。PCを使う仕事の場合、業種や職種に限らず、色んな場面で活用できる記法なので、できるだけ早い段階で慣れておきたいところ。
以下はQiita公式のMarkdownチートシート。
いきなり全て覚える必要はないと思いますが、こんな書き方でこんな見せ方ができるんだ、をざっくり知っておくと役に立つと思います。
ソフトウェア開発のあり方
趣味でソフトウェア開発をしていく場合は開発技術の知識さえあれば作りたいものを作れます。しかし、仕事としてソフトウェア開発をする場合は、チームとして、そして仕事としてソフトウェア開発をどう進めていくか、という観点の知識も大事になってきます。
ソフトウェア開発の手法は大きくウォーターフォール型とアジャイル型があります。それらは単に手法が違うだけでなく、考え方や価値観、ビジネス的観点でのメリット・デメリットなども大きく異なります。このような知識も早い段階で知っておくと良いのかなと思います。
開発技術
IT業界のおける技術は多種多様で、進化するのも衰退していくのもスピードが速いので、これさえ学んでおけば大丈夫!みたいな技術は正直ないと思います。プログラミング言語一つとっても、これさえできれば大丈夫、と言えるものはありません。
会社で求められている技術、現場で求められている技術、自分自身が興味のある技術、周りの課題解決のために身につけたい技術、などを整理して、バランス良く学んでいくことが大事になってくるでしょう。
現場でよく使われているメジャーな技術や新しい技術に触れることも大事ですが、一方で根本的な仕組み(コンピュータがどう動いているのか、プログラムがどう動いているのか、Webやネットワークがどんな仕組みになっているか、AIがどんな仕組みになっているか、など)を知ることも大事です。この辺りも、多分バランスが大事です。
根本的な仕組みを知っている人の方が全体的に問題解決能力や応用力は高いような気がします。一方で、メジャーな技術や新しい技術を色々と触っている人の方が、対外的にアピールできることが多くて営業的に有利になる側面もあります。
エンジニア的な観点では仕組みを知っていることの方が大事だけど、ビジネス的な観点ではアピールしやすい技術の経験がどれだけあるかが大事だったりもします。
とりあえず、今これを学んだ方が良いかも、と直感的に思ったものを学べば良いでしょう。結局のところ、学びたいと思えるだけの好奇心や探究心を持つことが大事かなと思います。