見出し画像

システムエンジニアはどうやってプログラムを覚えたらいいのか?

今回は、システムエンジニアはどうやってプログラムを覚えたらいいのか?ということを僕が思うなりに書いてみようと思います。


オススメの言語はJava

僕は、Javaの経験が一番長く、自分の強みかなと感じています。

新卒で就職してから3年くらいは、ずっとJavaをやっていて、プログラミングの基礎が身に付いたと思います。

僕が今まで経験してきたプログラミング言語は、
Java、PHP、ASP.NET C#、C、VB、VB.NET、VBA、SQL、HTML、CSS、JavaScript、TypeScript、Google Apps Script(GAS)など。

RubyやPythonは経験がなく、詳しいところは分かりませんので、オススメは上記の言語の中で、ということになります。

Javaをオススメする理由は、

  • オブジェクト指向を覚えられる

  • 様々なところで使われている(業界でメジャーな言語)

  • プログラムの構文が他に応用しやすい

  • バックエンドの知識、技術を身に付けることができる

この辺りが大きな理由かなと考えます。

オブジェクト指向はシステム開発の基礎になると思いますし、バックエンドの知識、技術を身に付けることで、プログラミングによる問題解決能力が身に付くと思っています。

同様の理由で、PHPを覚えるのも良いかもしれません。
JavaよりPHPの方が学習コストが低く、始めやすいと思います。

プログラミングで大事なこと

プログラミングによる問題解決能力、ということを書きました。
僕がこれまでシステムエンジニアを続けてきて、これが一番大切かなと思っています。

どんなシステムやサービスの開発であっても、根本にあるのが何かしらの課題だと思います。
その課題を解決するためのシステム開発です。

システム開発によって、日々の業務が効率化できたり、課題を解決することで会社の売り上げアップに繋がったりという形ですね。
システム開発だけやっていると、あまり気付かないことも多いですが、システム開発による効果まで考えると、システムが与える影響ってのは大きいなと感じます。

実現したいことをプログラムで表現する力

そして、問題を解決する時に必要な能力が、実現したいことをプログラムで表現する力です。

一般的にはアルゴリズムと呼んでいたりします。
アルゴリズムとは、問題を解決するための方法や手順のことです。

解決したい課題があった時、それをどうやって解決するのか?ということですが、解決する手段を思いついてもそれを実現するってのは最初は大変かもしれません。

こればっかりは経験するのが一番だと思います。
経験する中で、問題解決までのフローを設計する力も付いていくし、経験を重ねていけば、要件定義もできるようになっていきます。

ある程度、出来るようになってくると、要件さえあれば、様々な方法を用いてそれを実現することが出来るようになっていくと思います。

プログラミングで表現する力が付くことで、開発コストを抑えることもできます。

システムは保守や流用していく前提で作る

あと、大事だなと思うのが、保守性の高いコード、分かりやすいコードが書けるかどうか、ということです。

趣味レベルの開発だったら、開発するのは自分1人ですが、仕事でシステム開発をするとなると、チームで開発することがほとんどです。

そして、自分が作ったシステムを、ずっと自分が保守することもなく、他の人に引き継いでいく、というのも多いと思います。

これはよくあるパターンな気がしますが、作った人以外は仕様が分からないとか、解読できないプログラムとか、作って終わりなシステムもよく見かけます。

動くシステムを作ることは大事なことですが、システムを継続して稼働させていき、より便利なシステムになるように改善していくことも大事なので、自分以外の人が改修することになっても、改修しやすい分かりやすいプログラムを作ることが大事になってきます。

そして、システム開発は、過去を成果物を流用して作ることが重要です。
プログラムを書く時、「同じようなことを前にも書いたな」と思うことは結構多いです。

その時、過去に作った物を参考にしたり、流用できれば、プログラム作成に掛かる時間を短縮できます。

技術は先輩など周りの人から盗む

僕自身も、今でこそ自信を持ってプログラミングできるようになりましたが、先輩から教えてきてもらったことが大きな要因になっていると感じています。

システム開発では、自分が作ったプログラムを他の人にレビューしてもらうことが慣習になっていて、僕もよくレビューしてもらっていました。

最初は、全然思うように作れず、レビューとなると、たくさん指摘をもらったりしていました。
また、先輩の作ったプログラムのレビューに参加することも多く、先輩のプログラムを見て学んできたことが、すごく多かったと思います。

そして、若いうちは規模の大きいシステム開発のプロジェクトに携わるのも良いかなと思います。
それぞれが作った機能を結合させて1つのシステムを作る、というのは、すごく勉強になると思います。
自分が作っている目先のプログラムだけじゃなくて、システム全体を見て、実際にユーザーに使ってもらうところまで意識していると、たくさんのことを覚えることができると思います。

簡単なシステムで良いから、1人で全部作れるようになる

覚えていくうちに、様々な知識、技術が付いてくると思います。

ある程度、力が付いてきたら、簡単なもので良いのでシステム全部を1人で作ってみるのが良いと思います。

僕は、本職がバックエンドのエンジニアなので、フロントエンドのHTMLやCSSは、ある程度分かるという状態です。
ただ、バックエンドもフロントエンドも自分1人で出来ることによって、システム全体がイメージしやすいですし、様々なところで知識が活きてきます。

また、作ったものを公開してみるのも良いと思います。
公開するとなると、サーバーをどうするのか?とか、ドメインをどうするのか?とか、公開する時の手順はどうするのか?とか、さらに必要なものが分かってきます。

近年、X(旧Twitter)を見ていると、未経験の人がシステムエンジニアになりたいと勉強している人が多いのですが、HTMLやCSSを勉強している人が目立ちます。

僕的には、HTMLやCSSなど、フロントのプログラミング言語ではなく、Javaなどバックエンドのプログラミング言語から勉強するほうが良いんじゃないかなと感じてます。
理由はここまで述べてきた通りです。

実現したいものをプログラムで表現する時、バックエンドのロジックを組み立てる力というのが活きてきます。

ものづくりの楽しさを感じて、プログラミングを学ぶ

システムエンジニアを続けてきて、プログラミングを通してものづくりをすることは、やっぱり楽しいなと思います。

プラモデルを組み立てたこと、パズルを完成させたこと、シミュレーションゲームをやり込んだこと、今までの様々な経験がプログラミングに似ているような感覚です。

こういう、ものづくりの楽しさがプログラミングの醍醐味だと思いますので、これからプログラミングを学ぶ人には、楽しく学んで欲しいなと思います。

オススメはJavaなので、ぜひ。

いいなと思ったら応援しよう!