エンジニア全般

【強強エンジニアになるための習慣】技術力を高める方法

強強エンジニアの画像

reisuta

Webエンジニア | 20代中盤 | 大学時代はGmailすら知らないIT音痴でプログラミングとは無縁の生活を送る → 独学でプログラミングを学ぶ → Web系受託開発企業にエンジニアとして就職 → Web系自社サービス企業に転職 | 実務未経験の頃からVimを愛好しており、仕事でもプライベートでも開発はVimとTmuxを使っているので、VSCodeに疎いのが最近の悩み。何だかんだでやっぱりRubyが好き。

エンジニア界隈で、
しばしば「強強エンジニア」という
ワードを耳にします。

スラングのようなものなので、
厳密な言葉というわけではありません。

しかし、この「強強エンジニア」という言葉は、
一定の市民権を得ている、エンジニアのキャリアを考える上で、
そこそこ重要な言葉だとも思います。

そこで本記事では、この「強強エンジニア」というものに
焦点を当て、その意味から、
そうなるための具体的な施策を紹介します。

強強エンジニアとは何か?

はじめに申し上げたように、
この言葉はスラングのようなものなので、
厳密な定義が存在するわけではなないと思います。

そのため、人によって、
定義が微妙に異なるかと思いますが、
一般的には、技術力が高いエンジニア
指す言葉だと思います。

ただ、どの程度で技術力が高いのかというと、
難しい話題です。

本記事では、下記のようなエンジニアを強強エンジニアと
定義します。

ポイント

  • 強みがある技術についての弱いところと強いところを理解している(専門性)
  • 技術選定、コードレビューを行える(検証・査定能力)
  • 使ったことがない技術に対するキャッチアップや応用が利く(応用性)
  • インフラ、ミドルウェアなどプログラミング言語以外についての知見が深い(専門性)
  • 自分が足りていない部分を理解している(マインド)
  • アルゴリズムの理解やプログラミングスキルが高い(競技プログラミング・コーディングスキル)
  • 要件定義から保守運用まで一人で行おうと思えば行える(実務性)
  • 設計、アーキテクチャについての視点がある(専門性)

これら全てを満たしていないと強強エンジニアとして
認めないというわけではなく、これらの80%ぐらいを
満たしていれば強強エンジニアと十分言えると感じます。

特に、専門性、検証・査定能力、応用性、実務性、コーディングスキルの5つの部分を
満たしていれば、かなりの強強エンジニアだと思います。

具体的なイメージ像としては、
TypeScript/Next.jsのフロントの実装もでき、
GoやSQLなどのバックエンドもある程度でき、
AWSなどのインフラへの理解もある、フルスタックエンジニアっぽい
ベテランエンジニアとかがわかりやすいと思います。
(この場合、上記でいうと実務性が特に高い強強エンジニア)

一般的な強強エンジニアというと、
このように、「この人に頼ればなんとかしてくれそう」みたいな
ものが多いと思いますが、個人的にはこれに限らず強強エンジニアは
存在すると思っています。

ちなみに、個人的には、
このような強強エンジニア = フルスタックエンジニアという
認識ではおりません。

フルスタックエンジニアも、曖昧な言葉なので、
以前、下記の記事で考察しているので、
良ければご参考ください。

参考【凡才エンジニアの処世術】フルスタックエンジニアの本当の意味

エンジニア界隈では、しばしばフルスタックエンジニアという言葉を耳にします。 しかし、このフルスタックエンジニアとは何なのでしょうか? 「フロントもバックエンドもモバイルもインフラも全てできる人?」「フ ...

続きを見る

以下、このようなエンジニアになるために必要な
習慣について考察します。

強強エンジニアになるための習慣

専門性、検証・査定能力、応用性、実務性、コーディングスキル、マインドなどの、
部分ごとに役に立つであろう習慣を紹介します。

まず、それぞれの抽象レベルでの話をしたあと、
具体的な実行策を紹介します。

競技プログラミング

1つ目は、競技プログラミングです。
これは、コーディングスキルやマインドの面で
大きく役に立ちます。

そのため、競技プログラミングだけやっていても、
上記であげた、実務性、専門性などの能力は伸ばしにくいので、
それらは他でカバーする必要があります。

けれども、コーディングスキルという観点では、
最も寄与する習慣だと言っても過言ではないでしょう。

上記の実務性が強いエンジニアも、
この競技プログラミングとかでのコーディングスキル面で、
強強エンジニアかというと必ずしも断定はできないでしょう。

人によっては、競技プログラミングは
意味ないと言う人もいるぐらいですからね。

個人的には、
競技プログラミングはめちゃくちゃ役に立ちます。

基本的なプログラミングの思考能力や、
実装能力や競技プログラミングでかなり鍛えることができます。

また、競技プログラミング界隈は、
自分より優秀な人がうんざりするくらいいるので、
自分より優秀な人が多くいる環境にいても、
めげずに励み続けるマインドを養うこともできます。

たしかに、競技プログラミングが直接実務に役立つとは
言い難いですが、強強エンジニアになるための、
一つの習慣になることは間違いないです。

AtCoder

具体的なアクションとして、
まずは、AtCoderでのACを
毎日必ず一つは狙うとか、
毎日CとかD問題とか、
何らかの問題を解くのがいいかと思います。

似たようなものとして、
転職サイトのPaizaとかもありますが、
習慣という意味では、やはり王道ですが、
AtCoderが一番おすすめです。

AtCoder Problemsのコンテストを毎日解いて、
毎日解説を読むという習慣を始めてみてはどうでしょう?

https://kenkoooo.com/atcoder/#/table/

Macとマグカップの画像

個人開発

次は、個人開発です。
これは、かなり万能でして、
専門性、検証・査定能力、応用性、実務性、コーディングスキル、マインドのほぼすべてを
カバーすることができる無敵の習慣でしょう。

個人開発の最大のメリットは、
実務で補えない部分を自分でコントロールできるという点にあります。

個人開発で収益化に成功すれば、
実務経験にカウントすることもできると思うので、
実務経験有りの技術を増やす手段としても有用だと思います。

Next.js/Go/AWS/Docker/Kubernetes/Redisのようなポートフォリオを作る

個人開発者として大成するのが目的ではなく、
強強エンジニアになるための習慣という文脈では、
作りたいものではなく、使いたい技術ベースで開発をしていいと思います。

その際は、タイトルにあるような、
技術スタック例でアプリケーションを作成したりすれば、
かなり役に立つと思います。

この際、どのような技術を選定して、
どういう技術構成にするか自ずと考えることになるので、
検証・査定能力も伸ばすことができますね。

実務未経験技術の定期的なキャッチアップ

これは、主に、
応用性やマインドに効果的です。

実務経験だけだと、しばしばずっと使っている技術に
慣れすぎてしまい、新鮮な気持ちを忘れてしまうこともあります。

そのため、たまにはあまり使ったことがない技術を触るのも、
自分の中での技術のインデックスを増やすことができます。

これは専門性をのばすというよりは、
自分の「詳しくは知らないけど、ちょっと触ったことがあるから、
なんとなくはわかる」という領域を増やす作業とも言えるでしょう。

Rustを勉強してみる

Rust経験者の方は、
Haskellとか、Scalaとかでも
なんでもいいのですが、
とりあえず、自分が強い言語と真逆の性質を持つ言語
を学ぶことをおすすめします。

Railsエンジニアの人は、
静的系で、非Web系のC++とか
C#とか。

JavaとかC++とかの人は、
逆にWeb系で動的言語の、
Rubyとか、Pythonとか。

本記事を読んでいる方は、
Web系エンジニアの人が多いと思うので、
タイトルではRustとさせていただきました。

VSCodeをやめる

VSCodeを使っている人は
多いと思うのですが、
一度、慣れ親しんだ開発環境から抜け出して、
違う環境で開発をするのも新しい発見とかあっておすすめです。

Eclipseとか、Emacsでも、Vimでもなんでもいいと思います。

本ブログでは、VimやNeovimについては、
割と多めに情報発信をしているので、
良ければご参考ください。

Vim/Neovimプラグイン
参考【Vim/NeoVimプラグイン】これだけは入れておきたいプラグイン10選

プラグインをどれだけ入れるかは、その人の思想なども関係するので、一概にこれがいいというのはないかもしれません。 プラグインを全く入れない人もいれば、100個以上入れる人もいます。 ただそれでも、これだ ...

続きを見る

逆にVimとかを使っている人は、
VSCodeとかもたまには使うのもいいと思います。

OSS開発

OSS開発は、主に、
専門性、検証・査定能力に大きく寄与することが
期待されます。

それ以外の部分にも寄与してくれると思いますが、
OSS開発は、基本的には難易度が高いコードを読むことになると思うので、
大抵の場合自分の強い技術を更に強くするために役立つ習慣と言えるでしょう。

普段使っているライブラリのコードを読む

いきなりPRを出すのは、
ハードルが高いと思うので、
まずは、よく使っているライブラリとかの
コードを読む習慣をつけるのがおすすめです。

Railsとかだと、
Gemとかがたくさんあって、
読みやすいものもたくさんあるので、
おすすめです。

数学・CS

これは、応用性やコーディングスキルに間接的に
寄与すると思われます。

新しい技術も根本的には古い技術と似ているところがあったりしますが、
そういう部分の理解は、こうした数学やCSの造詣があると、
スムーズな印象があります。

数検準一級を取得する

理系の人は、不要なのですが、
文系エンジニアの方は、数検準一級を
取得してみるのも面白いのではないでしょうか?

なんだかんだで数学の知識が必要になってくる場面も
たまにあるので、最低限の数学の知識はやはりほしいところです。

数検準一級は、ちょうど高校卒業レベルぐらいなので、
レベル感もちょうどいいかと思います。

UoPeopleや放送大学

CSの勉強手段として、
シンプルに大学に行くというのも、
有りだと思いますが、
社会人だとなかなか難しいですよね。

そんな中、選択肢として出てくるのが、
オンラインの大学のUoPeopleとか放送大学です。

特にUoPeopleは、CSの学位がもらえるので、
おすすめです。(私は挫折しました)

学位とかより、シンプルに知識を身に着けたいという人は、
放送大学とか、JMOOCとかgaccoとかでも
いいと思います。

https://gacco.org/

Udemyとかでもいいと思いますが、
有料の割に、かならずしも質が高いかというと
微妙なので(主に専門性の深さの点で物足りなさを感じる)、
個人的には可もなく不可もなくという印象です。

Udemyは実務未経験技術のキャッチアップという文脈では、
取っ掛かりとしては悪くないなと思います。

おすすめしない習慣

上記で、強強エンジニアになるための、
習慣をざっと述べましたが、
それとは逆に、
強強エンジニアっぽくない習慣も少し紹介しようと思います。

あくまで、私個人の意見ということと、
ここにあげる習慣が悪いというわけではなく、
こればっかりやるのは良くないという意味
だということは
ご了承ください。

公式ドキュメントよりもQiitaや個人の技術ブログとかを読む

技術ブログを運営している私としては、
あまり言いたくないことではありますが、
強強エンジニアの人って、そもそも
技術ブログとかQiitaをあまり見ていない印象があります。

なぜかというと、彼らは公式ドキュメントで足りているからです。

公式ドキュメントは、正確性・網羅性などの、ほぼすべての点で、
個人のブログなどの情報よりも勝っています。

そのため、まず公式ドキュメントを読むということは基本といえば
基本です。

これを軽視して、公式ドキュメントを読む前に、
Qiitaとかを漁ってしまうのは、
あまり良い習慣とは言えないでしょう。

Qiitaや個人のブログは、
使ったことがない技術に対するキャッチアップや応用が利く(応用性)の面で、
寄与するのに対し、公式ドキュメントは、
専門性に寄与すると言えるので、
Qiitaとかは、自分の技術のインデックスを増やす
ために活用するのがいいのかなと思います。

プログラミング言語やFWの技術書ばかり読む

これも、決して悪いことではありません。

むしろ、全然技術書を読まない人に比べると、
大変素晴らしいです。

ですが、プログラミング言語の学習やFWの学習というのは、
煎じ詰めると、Qiitaの場合と同じく、
自分のインデックスを貼る作業に近く、
使える道具を増やすスキルになるので、
専門性を極める作業とは言い難いです。

強強エンジニアは、基本的に高い専門性を持っているので、
色々な言語やFWを広く浅くやっていては、
専門性を身につけるのはどうしても遠回りになってしまいます。

なので、これらの学習は、あくまで
インデックスを貼る作業と割り切って、
やるのがおすすめです。

個人的には、こういった技術書よりも、
設計手法やアーキテクチャー、ミドルウェアとかの
技術書を読む方が、プログラミング言語に関わらず活かせる知見になるので、
使える領域が増えるのでおすすめです。

ちなみに、おすすめの技術書のついては、
下記の記事でも紹介しているので、
良ければご参考ください。

参考【技術書マニア厳選】エンジニア必読、技術書おすすめ26選

エンジニアにおすすめの技術書 書籍学習は、エンジニアの嗜みみたいなところがありますが、 良書というものは、意外とそこまで多くもありません。 そこで本記事では「技術書マニアの筆者が厳選した技術書20選」 ...

続きを見る

資格取得にこだわりすぎる

しばしば議題にのぼる、
資格論争ですが、
これも基本的には、
こだわりすぎる必要はないと私は考えます。

もちろん、あるに越したことはありません。

ただ、強強エンジニアになるための、
近道ではないかと思います。

自分が勉強したい分野があり、
そのための手段としてついでに資格も取るというのが、
最も合理的かと思います。

資格取得を目的にして、
闇雲に受験するのは、
おすすめしないです。

副業ばかりで本業をおろそかにする

これもあるあるですね。

副業が忙しくて、
本業の仕事を雑にしてしまうことです。

これは、処世術としては、
悪くないのですが、
技術力を伸ばして、
強強エンジニアになるという点ではあまり得策ではありません。

というのも、副業で得られる技術的知見と、
本業で得られる技術的知見とでは、やはり
本業の方が遥かに多いからです。
(もし本業のほうが少ないとしたら、
それはある意味で転職のサインかもしれません)

転職の面接とかでも、
基本は本業でどのようなことをしてきたか聞かれます。

本業でのらりくらりやっていただけでは、
良い回答はできないかもしれません。

強強エンジニアと普通のエンジニアの違い

最後に、強強エンジニアと普通のエンジニアの違いとして
いくつか、独断と偏見で思いついたものを並べておきます。

 

強強エンジニア 普通のエンジニア
エラーへの捉え方 話し相手。出てきくれて嬉しい 面倒くさいから出てくんなよ
技術興味の領域 設計・アーキテクチャ・ミドルウェアなどプログラミング言語によらない技術寄り プログラミング言語、FWなど
技術への興味 強い。土日も開発してる 普通。土日はプログラミングしたくない
普段考えていること 何らかのプログラミングのこと プログラミング以外のこと
情報収集手段 公式ドキュメント Qiitaとか
使ったことない技術について ワクワクする キャッチアップ面倒くさい
自分の技術力について まだまだ未熟と考える そこそこ習得していると考える

  • この記事を書いた人
  • 最新記事

reisuta

Webエンジニア | 20代中盤 | 大学時代はGmailすら知らないIT音痴でプログラミングとは無縁の生活を送る → 独学でプログラミングを学ぶ → Web系受託開発企業にエンジニアとして就職 → Web系自社サービス企業に転職 | 実務未経験の頃からVimを愛好しており、仕事でもプライベートでも開発はVimとTmuxを使っているので、VSCodeに疎いのが最近の悩み。何だかんだでやっぱりRubyが好き。

おすすめ記事はこちら

Vim/Neovimプラグイン 1

プラグインをどれだけ入れるかは、その人の思想なども関係するので、一概にこれがいいというのはないかもしれません。 プラグインを全く入れない人もいれば、100個以上入れる人もいます。 ただそれでも、これだ ...

VimとNeovimの比較 2

本記事では、VimとNeovimの違いについて、解説します。 VimとNeovimの違いについては、普段頻繁にVimなどを使う方でなければ、正直、あまり気にしなくてもいいかなと思います。 ただ、Vim ...

Ruby変数やすべてがオブジェクトについて 3

本記事は、Rubyの基礎文法である、変数や真偽値、論理演算子に触れると同時に、「すべてがオブジェクト」というRubyの特徴的な思想についても解説します。 この思想は、Rubyの文法の根幹になっているの ...

4

エンジニアにおすすめの技術書 書籍学習は、エンジニアの嗜みみたいなところがありますが、 良書というものは、意外とそこまで多くもありません。 そこで本記事では「技術書マニアの筆者が厳選した技術書20選」 ...

5

エンジニアになるには? プログラミングは、専門性が高く自分一人で勉強するのが大変に感じることも多いですよね。 そこで本記事では「おすすめのプログラミングスクール5選」を特徴と、現役エンジニア目線で優れ ...

-エンジニア全般