こんにちは。もんしょー(@sima199407)です。
という疑問があるかと思います。
以前に以下のようなツイートをしました。
「得意すぎていつも出来る」ということを続けても価値が上げるのは難しい。
1つのことで90点から100点にあげるより、70点から80点を取れるものを複数もっている方が有利だったりします。
プログラミングも一つの能力を求められるよりもフロントとバックエンドのどっちもある程度出来ると幅は広がる。
— もんしょー@週4時短webエンジニア (@sima199407) November 24, 2019
「得意すぎていつも出来る」ということを続けても価値が上げるのは難しい。
1つのことで90点から100点にあげるより、70点から80点を取れるものを複数もっている方が有利だったりします。
プログラミングも一つの能力を求められるよりもフロントとバックエンドのどっちもある程度出来ると幅は広がる。
これについてもう少し詳しく解説していきます!
技術を完璧にしなくてよいワケ
ポイント一つ目、技術を完璧にしなくていいワケについてです。
なぜかって言うと、一つの言語をやるとしても終わりがないからです。
現場でよくあるのが
って思うこともあったりするんですけども、一つの物を完璧にするよりも、本質的なところ、クライアントがなにを問題解決したいかの解決する手段としてのどうやったら最速でできるのかを極めていくのが大事です。
実務として使うなら、現場で使う範囲だけで勉強すればOK。良い技術をもっていても「そこまで完璧にしなくても……」ってところもあるので、ある程度のところでちゃんと解決できるレベルなら大丈夫です。
https://simablog.net/bunkei-engineer-merit/
複数の技術を持つメリット
ポイント二つ目、複数の技術を持つメリットについてです。
ずばり、色んな案件を貰えるわけなんですよ。
案件で、一つの技術だけでやってくださいってものはほとんどありません。周辺の知識とかを持っておいて、
「これメインなんですけど、サブでこれとこれとこれとかと。。。」
そんな感じで仕事が振られることが多いかなと思います。
例えば、僕はサーバサイドでPHPやっているんですけども、フロントとの共存するところのjqueryとかVue.jsとかSQLも触るのでDBの知識とかも必要ですよっていう話も出てくるので、一つだけやるのではなくて、そういった周辺技術をある程度分かっておくのも大事かなと思います。
触ったことない技術でも普通に任されます
案件を貰う時も、これがメインの技術なんですけども、こういった技術って使ったことありますか?って聞かれることもあります。それはほぼほぼ触ったこともない技術であることもあると思います。
そういった時に、結構おいしい案件があるときも
「これしかやったことないです。」
ではなく、
「そんなに深く触っていませんが、似たような言語でやったことあります。なのでキャッチアップまで少しお時間いただければ大丈夫です。」
って言うと、相手側も触っていくうちに慣れていきますよねってなって、案件が取れたりします。
新しく触ったことのない言語でも、プログラミング言語は似たようなものが結構多く、また、文法に決まりがあるので、出力こうねとかif文こうねとかと、こういった形で書くのねと、後はそれ独特の使い方も出てくるたびに覚えればいいのです。
複数のことをやっておき、ある程度分かっている状態。あの言語に近いなってところがあれば、学習のコストも下がっていくので、色んな言語を知識として入れておくのがいいと思います。
どの分野から始めるか
ポイントの三つ目、どの分野から始めるかについてです。
大体プログラミングを始めるときは、HTML,CSS,JavaScriptから始める人が多く、フロントから入る人が多いんじゃないかなと思います。そこをある程度できたらPHP,RubyだったりPythonを扱ってみたり、そして、サーバサイドのほうに移っていくのが王道の流れです。
ただ、忘れちゃいけないのが、インフラなんですよ。
インフラ周りをやっていない人が多いですね。
インフラとは、コマンドラインとか環境構築の部分であんまり触ってなかったり、教えてもらわなかったなど多いので、ここやっておくと自走するときに役に立ちます。
これは、ドットインストールとかで勉強するのがいいのかなと思います。ローカル開発の環境構築とかUNIXコマンドっていうコースがあるので、そこら辺をある程度勉強して、最低限の基礎を覚えておけばOKだと思います。
ちょっと深堀していけば、AWSとかDocker触ってみようとか、そういったところも出てくると思います。そこも出来るとすごい楽になります、環境構築とか。
そこらへんをやっておくのがいいんじゃないかなと思います。
未経験者がオフィスで誰も知らない技術使うことになった話
余談となりますが、僕が長期インターンをやっていた時、最初PHPの職場だったんですよ。PHPが主戦場の職場だったんですけども、僕がいきなり任されたのがDockerを入れてくれというクラウド環境ですね。
そういう構築をやってくれって言われた時があって、しかも周りにDockerを知っている人がいなかったんですよ。
どうやってやるんだろうって触りながら「そもそもDockerって何って?」状態から始まったんです。
そういった、本当に0の状態から色々調べながらやればある程度出来るものなので独学でやればいいかなと思います。
最初は失敗するものです
ここまでエンジニアで稼ぐなら完璧を目指さないほうがいいってところ、色んな所をやっていきましょうとか、複数の言語とか技術持っていたらほうがいいですよっていうお話したんですけども、やはり、最初の出だしは失敗することが多いです。
案件が取れないとか、仕事がうまくいかないなとかあると思うんですけどやっていくうちに覚えていくので、そこは気にしなくていいと思います。
やっていくとだんだん覚えていくので、仕事の質も上がってきます。
そうなると、ある程度仕事を回せるようになったり、案件が安定してくるので、できないから、向いていないと思うのではなく、最初はしょうがいないと、時間をかけてもいいから、ちゃんとしたものを丁寧に作って納品して、それでもだめなら直してやっていくっていうのが、最初にやるべきことだと思います。
なのであんまり気にしないほうがいいかなと思います。
僕も最初のフリーランスの2件くらいは失敗や契約問題などもありました。最初はしょうがないと、そういったこともあるよねって経験として失敗談として誰かに話せればいいかなと思うので、少しずつ頑張って行きましょう。
https://simablog.net/daigaku-freelance/
まとめ
今回のまとめ三つあります。
一つ目、仕事に必要な知識を取り入れればとりあえず良し!
完璧にしようとしないで、実務で使えるレベルまで持っていきましょう。
二つ目、一つの知識だけでなく、周辺知識も力を入れておきましょう!PHPをやっていくとなったら、JavaScriptとかVue.jsとか、Dockerやってみるとか、周辺知識も入れていくのが大事になってくるので、そういった知識も勉強しておきましょう。
三つ目、インフラ部分もやっておくのがおすすめ!
フロントエンドから入って、次サーバに移ってサービスの構築が出来ますよってところあるんですけど、土台の部分を自分で構築出来るようになるとサービスも安定してきたりだとか、自分で解決ができたりだとか、そういった知識もあるといいんじゃないかなと思います。
最初は壁にあたっては解決し、また壁があったらそれを乗り越えるみたいな、何度もこけても何度でも立ち上がるぞっていうところが必要になってくるので、地道に登っていくしかないかなと思います。
今回のまとめです。
・仕事に必要な知識を取り入れればとりあえず良し
・一つの知識だけでなく、周辺知識も力を入れておきましょう
・インフラ部分もやっておくのがおすすめ