はじめに
おつかれ様です。ここ数年を振り返って考えたことを記事にしました。
私自身の経験などについては、後続に記載します。
目次
なぜいまコンピューターサイエンスを学ぼうと思ったか
自己紹介
対応業務
CSの基礎を何となく理解できたら次にやりたいこと
さいごに
なぜいまコンピューターサイエンスを学ぼうと思ったか
記事の本題です。
改めてプログラムを学び直したり、新たな言語を学び始める前に、
コンピューターサイエンスの基礎知識を得たほうがよいのでは?と思いはじめました(※以下「CS」と記載)。
それは、今後WEBアプリや、デスクトップアプリ、組み込みソフトの開発業務を志望するにあたり、それらの違いは、主に入出力や制約条件の違いであると理解したためです。
イベント処理、並行処理、メモリ管理などの根本的な構造が大きく変わらないことから(※領域固有の特性はあれど)、
その処理がコンピューター側でどのように実行されているのか?を理解することが、あらゆる開発領域で応用できる土台になると考えました。
また、昨今ではAIツールを用いた開発が発達し、プログラムを書くハードルは下がっている一方で、安全な設計と運用が、より重要視されている認識です。
安全な設計と運用というのは、以下を想定しています。
・想定外の入力や操作が行われても破綻しないこと。
・並行処理や非同期処理において、状態が不整合にならないこと。
・障害発生時の原因特定がスムーズであること。
以上の理由から、
今プログラミングの学習に手を出すよりは、CSの基礎を体系的に学ぶ必要があると考えました。
これらの理解に誤りがあった場合、コメントにてご指摘いただけますと幸いです。
内容を確認次第、記事を修正します。
本記事を作成、公開した目的
主に、自身の状況を整理するためです。
案件の潤沢な企業へ転職すべく、転職活動を始めました。
来年の4月に、今の会社に勤め始めてから四年目を迎えますが、近年は運用や管理が中心でプログラミングを伴う開発業務にはありつけない状況が続いています。
主な理由は案件の枯渇です。
入社一年目には、予定されていた案件が予算の都合で頓挫し、白紙となりました。
同じタイミングでBPの契約が終了となったため、今いる現場に配属となった経緯があります。
当初は、「将来的に案件を増やすので、時が来たらばあなたを受託へ戻します」という話でしたが、今現在に至るまで状況に変化はありませんでした。
とはいえ、もっと実力があれば何かしらにねじ込んでもらえた可能性もあったと思うので、会社に対するネガティブな気持ちはありません。
話を戻します。
転職しようと思い立ったものの、対応業務の棚卸がうまくできていないせいか、必要書類の出来が悪いのです。
そこで、自身の状況を公の場で説明できるかたちに整理し、本記事を公開しようと考えました。
自己紹介
後続の内容では、自身の置かれている環境や経験などについて記載します。
私は、顧客企業に常駐しているSEです。
開発業務における要件定義と設計に関わった経験が無く、プログラムはほとんど書けません。
元々は、システムの設計や実装に関わる開発業務を志望して、都内のSES企業に未経験で入社しました。
現在も、継続して勤務しており、会社規模は社員数が30名に満たないほどです。
選考時のSPI試験は悲惨だったため、おそらく人柄的な部分を評価してもらえたのかなと思っています。
こればかりは人事のみぞ知ることですね。
対応業務
入社一年目は、研修後に受託開発の案件に参加しました。
ここで担当したのは、既存のデスクトップアプリやWEBアプリの改修、それに伴うドキュメントの改造やテストなどです。
これらの対応は単独で進められていたのでなく、先輩のフォローありきで遂行できていました。
仕様全体の理解についても、都度レビューしてもらっていた認識です。
プログラムをいじるよりも、大量のドキュメントを読み込んで理解することに苦労した記憶があります。
常に人手が少なく、かつ放牧された環境だったため、迷うことも多かったです。
進捗管理には主にRedmineを使用しました。
二年目から三年目(現在)までは、顧客先のシステム部にて、下記を対応中です。
IT資産管理
・ハードウェアとソフトウェアの選定、導入可否判断、導入、運用、保守ベンダーへの対応、廃棄までの一元管理。
・トラブル時の原因特定。
セキュリティ管理
・セキュリティポリシー、ITガバナンスの策定。
業務自動化
・Power AutomateやAppsなどのRPAツールを用いた自動化。
・Powershellを用いたバッチの作成。
・自動化の提案。
その他
・WSUSの運用。
・Office 365、Windowsに関連したトラブルシューティング。
・海外拠点へのネットワーク機器の導入、運用。保守ベンダーへの対応。
・社内ユーザーからの問い合わせ対応など。要望により変動。
その他には、自社内のトラブルシューティングや、IT資産の管理、第二新卒者へのOJTなどに随時対応しています。
修行中の身であることは一年目から変わりません。
CSの基礎を何となく理解できたら次にやりたいこと
・C#を学び直したい。
現時点では、既存のサービスを決められた要件通りに改修した経験しかありません。
そのうえ、二年近くのブランクがあります。
再学習の目的は、何となく暗記しているような状態から抜け出すことです。
例えば、「asyncしてるから呼び出してる方でawaitする、っと.. とりあえずOK」
↑こういうのを自分の中から駆逐したいと思っています。
・新たにJavaを学びたい。
エンタープライズ開発では需要が高い言語であるため、興味があります。
また、オブジェクト指向の理解を深めるためにも、C#とは異なるエコシステムでの開発経験を積みたいと考えています。
・新たにC、C++を学びたい。
将来的に、組み込みシステムの設計や開発に関わりたいと考えています。
また、チャンスがあるならば制御にも挑戦したいです。
というのも、自動運転の船や車が目的地へ到着する仕組みや、工業用ロボットが正確に動く仕組みについて、身をもって知りたいためです。
また、近年は、家電や複合機などの身近なハードウェアの仕様を調べたり、ノートPCを分解するのが趣味となりました。
以上の理由から、組み込みや制御の仕事にも興味をもった経緯があります。
さいごに
本記事では、CSを学ぼうと思った動機、現在の業務内容、今後の学習計画についてまとめました。
今後も、定期的に記事を投稿するかたちで自身の考えや理解を整理したいと思います。
次回のテーマは「CSの各分野をどのように理解したか」の予定です。
私と同じように、開発経験が少ない状態からプログラミングの学び直しを考えている方の参考になれば幸いです。
全体的に初学者視点からの内容になりましたが、お付き合いいただきありがとうございました。
