現役フルスタックSEが教える身に着けて一生得する4つの技術

どうもです!わだっしーです!

今回は
「ソフトウェア開発者として身に着けたら一生得する技術」
を紹介したいと思います。

 

ソフトウェア開発者だと、
プログラム書ければいいんでしょ?
って思ってるかもしれませんが、
上級者を目指すのであれば
他の技術も身に着けたほうがいいです。

プログラミングしかできない人が多い中で、
他の技術もできるんです!
って自信をもって言えれば、
他のプログラマーより差をつけることができます。

 

僕も最初は、
「いや、俺、ソフトウェア開発者なんだけど。。」
って思っていました。

ですが、
実際にできるようになってみて、
自分の実力が倍々ゲームで上がっていくのを感じたし、
お客様の信頼にもつながって、
売上を伸ばすことにも成功したのです。

だから、
プログラミングだけ勝負することに行き詰って、
伸び悩んだら今回紹介した技術を思い出して、
学んでいただければと思います。

多言語プログラミング

プログラミングは1つの言語だけではなく、
複数の言語を扱えた方が、
高単価で勝負しやすいエンジニアになることができます。

1つの言語でプロ中のプロになれば、
1つの言語でも数千万で仕事をすることもできますが、
天才レベルの話なので、
僕たちのような凡人は複数の言語を身に着けたほうが、
大きな成果を出しやすいです。

 

僕の場合、業務レベルで使用できる言語は下記になります。

  • HTML/CSS
  • JavaScript
    • NodeJS
    • express
  • Java
    • seasaa2
  • Perl
  • ShellScript(bash, tcsh)

どれも数十KL(数万行)レベルで使用している言語なので、
業務で通用するレベルの言語です。

また、書ける程度の言語であれば下記があります。

  • PHP
  • C
  • Visual Basic

これだけ書くと業界を知らない人からすると、
やば、凄そう。。
ってなるかもなのですが、
そんなにすごい事じゃないです。
(むしろ少ないぐらいじゃないかな。。)

プログラミングの原理原則を知っていたら、
新しく言語を習得するのって、
そんなに難しい事じゃなかったりします。

1言語だけでも業務で支障なく使えるようになると、
プログラミングがどういうものかがわかっているので、
次の言語を習得するときは
最初の言語の半分以下の時間で身に着けることが可能なのです。

 

なので、
プログラミングでもっと上を目指したい!
もっと大きなものを作れるようになりたい!
プログラミングでもっと高単価で勝負したい!

そういう想いがあるのであれば、
多言語プログラミングは必要になってくるので、
挑戦してみてほしいなと思います。

 

データベース

データベースっていうとSQL使えればいいんでしょ?
ってなるかもですが、
データを引っ張ってくるだけではなく、
自分でデータベースを作れた方が、
プログラマーとしてより飛躍することができます。

 

データベースはユーザの情報を管理したり、
アプリケーションのデータを記憶したりできる、
ソフトウェアには欠かせない技術です。

スマホアプリの開発をやっていると、
SQLiteというデータベースを使用することになるので、
ネイティブ環境での開発をやっている人は、
なじみが深いと思います。

データベースというと
「データを記憶するアプリケーション」
といった感じですごく地味なのですが、
サービスとしてユーザにアプリケーションを提供するのであれば、
必ずと言ってもいいほど使用するので、
プログラマーとしては重要な技術になります。

なので、プログラミングだけではなく、
データベースも扱えた方が、
自分の作れるものの幅が広がりますし、
高単価で依頼をしてくれる
クライアントも現れることでしょう。

 

データベースはすごく地味な技術なんだけれども、
アプリケーションの世界ではすごく重要な役割を持っている。

ということを知っていただければ、
ひとまずはOKです。

 

Linuxサーバ

世の中のサーバで使われているサーバの
約8割はLinuxというOSが使われています。

Linuxがインストールされているサーバを
Linuxサーバって言ったりします。

PCで言ったらWindows, Macみたいなものです。

 

ウェブアプリケーションだったり、
世の中のサービスの裏で動いているアプリケーションたちは、
基本的にサーバ上で動いています。

サーバ上に作ったアプリケーションを
動かすための設定をしたり、
他のソフトウェアと連携するための設定をしたり、
そういったことをやらないと、
せっかく開発したアプリケーションを
世の中に提供することはできません。

なので、
その環境がないとソフトウェア開発者としては、
元も子もないのでできたほうがいいというわけです。

そういった技術を持っている人を、
サーバエンジニアだとか、
インフラエンジニアと言ったりするのですが、
彼らほどプロになる必要はなくて、
自分で作ったアプリケーションを動かせるようになる
ぐらいはできるようになったほうがいいのです。

 

個人でアプリケーションを開発して、
世の中にサービスを提供したいとなっても、
サーバ技術がないとできませんし、
上級者になるとできない人がいないぐらいです。

 

それに、自分が作ったサービスで問題があったときに、
アプリケーションの範囲でしか問題を分析できないと、
そもそも問題の原因すら見つけられなくなってしまう可能性もあります。

エラーが出ている個所を直したのに、
なんで直らないんだ!!
ってなって分かる人が見たら、
実はサーバの設定が問題だった。

何てことはよくある話なのです。

なので、
プログラマーもサーバのことを知っていたほうが、
問題解決がすごく楽になりますし、
実力は右肩上がりに向上します。

 

プログラミングができるというだけではなく、
サーバ構築もできたほうが案件も取りやすいですし、
高単価で勝負できるようになるので、
より上を目指したなら身に着けたい技術ですね。

 

ネットワーク

ネットワークっていうと、
ピンとこない人もいるかもですね。

マルチ?ねずみ講?

ぜんぜん違います笑

 

ネットワーク技術というのは、
デバイス同士で通信するための技術です。

普段使っているPCやスマホからこのブログにアクセスするのにも
PC、スマホ←→サーバ
を接続して実現しています。

通信にかかわるものには、
すべてネットワーク技術が使われているのです。

 

IPアドレスっていうのは聞いたことあると思うのですが、
それもネットワーク技術の一つです。

IPアドレスはインターネットに接続された
全ての機器に割り振られています。

IPアドレスとは住所のようなもので、
インターネット上でそのデバイスがどこにいるか?
というのを識別するためのものです。

で、デバイス同士の接続は、
そのIPアドレスの情報をもとに、
通信の道筋を確保して成り立っています。

 

例えば、
AさんとBさんで手紙をやりとりするときに、
お互いの住所がわからないと、
郵便屋さんは手紙を届けることはできないですよね。

ネットワークも同じで、
ネットワークを制御する機器は、
通信するデバイスのIPアドレス(住所)がわからないと、
デバイス同士で通信させることができないのです。

このためにIPアドレスという仕組みが存在しています。

 

といった感じの知識をプログラマーが持っていると、
「え、プログラマーの人ってそこまで知ってるの?」
ってなるので高単価での交渉がしやすいです。

また、自分でクラウドサーバを契約して、
自分でサービスを作ろうと思ったら、
こういった知識も必要になるので、
より開発の幅を広げるのには、
必須の技術だったりします。

 

色んなエンジニアがかかわるシステムに対して、
プログラマーとして参加するのであれば、
ネットワークエンジニアとも連携しやすくなので、
仕事をスムーズに進めるという意味でも
大きな役割を果たしてくれます。

先のサーバの話もそうですが、
自分の領域でとどまっているだけだと、
他のジャンルのエンジニアと連携することが
難しくプロジェクトがうまく進まなかったりします。

知識があるだけでも重宝される存在になるので、
ネットワークというよくわからん分野にも
挑戦してみてほしいなって思います。

 

自分の領域を広げれば上に行くのは簡単

ここまでで、
身に着けたほうがいい4つの技術を話してきました。

僕のレベルで言ったら、
プログラミング、データベースはプロレベル、
サーバはもうちょいでプロレベル、
ネットワークは基礎レベル、
ぐらいです。

 

ここまでいうとなんだか、
フルスタックエンジニアにならないとダメなの?
ってなるかもですが、
プログラミングのほかに1つスキル追加されるだけでも、
とても希少性の高いプログラマーになることができます。

 

1つの言語はプロフェッショナルだけれども、
ほかの言語は基礎は知っているよ、
となれば多言語プログラミングができるということで、
高く評価されることができます。

データベースの設計ができるプログラマーとなれば、
より大きなアプリケーション開発を任されるようになります。

ウェブアプリケーションを動かすサーバは作れるよ!
というプログラマーは問題解決能力が高いと判断されます。

ネットワーク技術の知識を持っているプログラマーであれば、
一握りの人しかできない通信プログラマーなんてのにもなることができます。

 

こういった感じで、
プログラミング×〇〇
というスキルはすごく強みのあることなのです。

高単価ですし、
そのような人材が欲しい企業、クライアントは、
メチャクチャ多いのが現状です。

なので、
せっかくプログラミングができるのですから、
その域でとどまっているのは、
本当にもったいないなって思います。

 

世の中の仕組みを考えたらわかりやすいのですが、
一つの仕事で成り立つ商売ってほとんどありません。

例えば、コンビニだって
かなりの仕事が入り組んで成り立っています。

  • フランチャイズ元
  • フランチャイズ契約者(店長)
  • 不動産
  • 食品メーカ
  • 運送会社
  • アルバイト

別に詳しくないけど、
思いついただけでこれだけありました。

これだけのものを一人でやるのが大変だから、
多くの仕事が連携して成り立っているんです。

もし、これだけのことを全て一人で出来るとしたら、
三人分ぐらい給料渡してでも雇いたいって思いませんか?

でも、現実問題、
一人の人間が複数人でやるような仕事をこなすのは、
とても難しいことです。

 

それに対して、
ITスキルはバケモノみたいなスキルで、
知識・技術さえあれば一人で何人分もの仕事をこなせる
という特徴があります。

プログラミング×プログラミング

プログラミング×データベース

プログラミング×Linuxサーバ

プログラミング×ネットワーク

こういったスキルセットを持っていると、
人の何倍もの生産性を発揮できますし、
仕事を断るぐらいのレベルで依頼されるようになります。

プログラミングが持つ、
自動化のポテンシャルというのは、
こういうところで大きな力を発揮するのです。

だからプログラミング単体で満足するのではなく、
もう少しほかの領域に踏み込んで挑戦することで、
より飛躍して活躍できるプログラマーになれるでしょう。

 

活躍したい!稼ぎたい!って思うのであれば、
こういった世界もあるっていうのを知ってもらえたらうれしいです。

 

 

ここまで読んでいただきありがとうございます!

以上、わだっしーでした!

稼ぐエンジニアの考え方を凝縮した電子書籍をプレゼント中

僕はシステムエンジニアとして
年間6000万円以上売り上げています。


才能があったわけではないし、
昔から超がつくほど要領が悪いです。


そんな僕がプログラミングを習得したり、
心から尊敬する先輩や上司から影響を受けて、
エンジニアとして成長することができました。


酸いもあまいも経験してきましたが、
普通の人よりもたくさん失敗してきて、
それをガソリンにして結果にフォーカスしてきました。


その経験から
「ポンコツでもエンジニアになれる」
と思っているし、
成長して理想の自分を手に入れられると信じています。


そして、今は同じ道を志す仲間を
1人でも多く増やして、
エキサイティングでより生産性的な社会を
作っていこうと夢見ています。


そういった理念をもとに、
僕の知識や経験をふんだんに絞り出して、
エンジニアとして成長し、
結果を出すにはどうしたら良いかを
体系的にまとめた電子書籍を作りました。


僕のストーリーも交えて作っていて、
20分程度でサクッと読める内容なので、
もし興味があれば読んでみてください。


→電子書籍『エンジニアという生き方で人生をデザインする。』


メールアドレスを入力すれば、受け取れます。


最後まで読んでいただきありがとうございました。


もしこの記事が役に立った!と思われたら
SNS等でシェアしていただけるとすごく喜びます。
(すぐ下のボタンからシェアできます)