もうクリスマスまで一週間を切りましたね
今年のクリスマスは平日ですが皆様はどう過ごされるでしょう?
私は通常営業で仕事に邁進いたします
それではパーソンリンクアドベントカレンダー19日目になります。
##はじめに
軽い自己紹介です。
私が今の会社に勤めてから九ヶ月ほど経過しているのですが現在はWeb系のエンジニアとしてバックエンドを担当しています、それ以前は別の会社でITエンジニアをしており三年ほど生命保険のシステム開発に携わってきました。その時主に触っていた言語が「COBOL」です。ITエンジニアと一口に言っても種類によって扱う言語や環境は大きく変わっていきます。この記事ではそんな違いについての実体験をまじえて書いていきたいと思います。
##システム開発の種類
Web系、オープン系、汎用系、組み込み系、ゲーム系...と細分化していくとなかなかの種類になりますが今回はweb系と汎用系を中心に見ていきます。
-
Web系
身近なものだとホームページやSNS、通販サイトなどWeb上のシステム開発を行います。おそらくもっとも一般的なITエンジニアとしてのイメージが強いのがこの系統ではないでしょうか。
Web系の業務はフロントエンド(クライアントサイド)、バックエンド(サーバーサイド)に分かれています。
簡単にまとめるとフロントエンドはユーザーから見える部分を担当します。バックエンドはその逆でユーザーから見えていない部分の担当です。
図引用元
例えばWebサイトで考えてみましょう。ボタン操作や入力ができる部分、画面表示などのUI、UX部分、ここはフロントエンドの領域です。ログインに使用するユーザーやパスワードを管理しているデータベース、サーバー構築部分、ここがバックエンドの領域になります。
担当している業務が変われば扱う言語も変わっていきます。フロントエンドで主に使用する言語はHTML、CSS、JavaScriptなど、バックエンドではJava、Python、PHP、Ruby、Golangなどでしょうか。この他にも言語は多岐に渡って存在しますので使用用途によって使い分けていきます。
またWebの開発と密接に関わってくるものがフレームワークです。
フレームワークを一言でいうととさまざまなシステム開発を効率化してくれる機能群です。ソフトウェアの骨組みが用意されており、目的に合わせて修正、追加を行っていくことで開発にかかる時間的コストを軽減、エンジニア間でのコードの統一化、一から自分で組み立てるよりバグが出づらいといったメリットがあります。
メジャーなフレームワークとして、Ruby on Rails、React、Laravelなどがあり、こちらも多種多様に対応言語も分かれています。
このようにWeb系の分野においては非常に多くの技術がありその流行り廃りも日々変化していくため常に学習し続けること、新しい技術をいち早くキャッチするアンテナを立てていくことが重要になっていきます。 -
汎用系
こちらは汎用機(メインフレーム)と言われる、企業の基幹システムなどに利用するコンピューターを用いてシステム開発を行います。主に保険会社、銀行、クレジットカード会社などの金融機関や企業の基幹システムの構築や運用保守の業務に使用します。汎用系の業務は一つの機器のみで完結するクローズドなもので、主に言語はCOBOLが使われます。
OS・アプリケーションソフトなどはほとんどが企業独自のものになります。私の以前勤めていた現場でも例にもれず独自の製品を使用していました。ただ同じ業界であれば基本的なシステムの構造は似通っているため独自のものを使っているからと言って全く応用ができないわけではありません。
また長年稼働しているところが多く安定してシステム運用が行われています。
##両者を経験して感じたこと
大きく違うのは開発時の考え方です。現在は使ってみたい技術があるから試してみよう、こうした方がより早く処理ができるからこっちに変更しよう、とより良いものができる可能性があればとりあえず試してみます。一方、汎用系での開発の場合、安全性を求めて開発します。障害を発生させないことを第一に考えるため既存を踏襲して設計します。既存を外れた設計をした場合、安全性の証明に膨大な検証をして既存に影響が出ないことや新規に追加部分のバグを潰していくためコストが多く発生するのでクライアントからも今まで通りで設計するように指示されることがほとんどです。汎用系はクライアント先が銀行や保険、行政機関等なのでどうしても保守的な考えになってしまうのは致し方ありません、
個人的な考えですが汎用系の場合だと新しい技術に触れることがないため業務を通して技術者としての成長はあまり無いように感じます。どちらかというとクライアント先の業務知識が身についていくためその分野での活躍を今後も考えているのならば意味はあるでしょう。
どちらを選ぶかは個人の考えによるかと思いますが、今後エンジニアとしての技術を伸ばしていきたいと考えているのならWeb系へ進むことをオススメします。