プログラミング素人のはてなブログ

プログラミングも電気回路も専門外の技術屋の末端が勉強したことや作品をアウトプットするブログ。コードに間違いなど見つけられたら、気軽にコメントください。 C#、Python3、ラズパイなど。

今の会社に勤めて2年になろうとしています


関東以外の生まれでその周辺の国立大学を出て、新卒で関東(東京以外の事業所)のとある電気機器メーカーの開発職として就職しました。
大学は理学部の物理系で物性の実験系でしたが、最初の会社から2つ目(外資メーカー)の会社の職歴の半分ぐらいは、材料系の開発を行っていました。
一般には材料と分類されますが、実際にはその中身は複雑で、電気っぽいことや機械(機構)っぽい職務もあったりしました。
当時(200X年代)は多くのメーカーが中国やアジアに工場を作っていて、最初の会社と2つめの会社では、年に1回ぐらいは海外出張がありました。
中国、香港、ベトナム、マレーシア、韓国。記憶にあるのはこのあたりですが、ほぼ中国でした。
中国という国は、当時偽物大国であったり、犯罪が横行していたりで、中国で治安がいいところが日本で治安が悪いところと同じぐらいの水準、と言われていました。
マレーシアも華僑が多くて中国語を母語とする人は実は多く、「仕事に役に立つかも」というのもありましたが文化的に興味があったりして、中国語を勉強したりしました。
英語はアレルギーがあって、勉強したくありませんでしたが、個人的には中国語はすんなり入ってきた感じでした。
結局、中国語検定の4級まではとれましたが、3級はもう少し、というところであまり中国に行かなくなるなどして勉強をやめてしまいました。

2社目は同業で、同様の業務をしばらく担当していましたが数年したところで、事業部内での配置換えで制御設計などをやるようになりました。
機械の動作の設計をし、ソフトウェア(ファームウェア)の仕様を作るのが主な目的です。
仕様を作成し、ソフトウェア担当者にファームウェアを作ってもらい、装置の動作確認をして、というところですがログ解析が多く、これに対してVBAをつくってもらっていました。
世の中的に、ArduinoとかRaspberryPiとかが流行りだしたころで個人的にソフトウェアに興味を持っていて、簡単なものなら自分でVBAやツールを作れるのではないか?というところで独学で勉強し始め業務に活用しだしました。
これが認められて、C#のWindowsアプリなどを任せてもらえるようになり、とある社内向けの開発者用ツールを設計から実装まで任せてもらうようになりました。

プライベートではRaspberryPiでTwitter Botをつくって収益化を目指してみたり、そんなことをやっていると「〇〇のアプリを作って、タダで」というTwitterのDMが」多発するようになりました。
こういった人をあしらうために、ココナラに登録して「そんな人はこちらで相談してください」とやっていると、本当に発注してくださる人が出てきました。
2社目は副業もOKだったので、ひっそりと受託開発も行って、経験を積んでいました。
ソフトウェアをやらない人にはイメージがつきにくいかと思いますが、業務ソフトウェアエンジニアの能力としてはコーディング(実装)は下に見られ、設計(要件定義)が評価されるという傾向があります。
私からすると、設計の方が簡単で実装の方が圧倒的に難しいのですが、世の中ではそうではなく、実際コーディング能力が高くても設計ができない人というのが多くいるようです。
そんな感じでソフトウェアの経験を少し積んでいたところでリストラとなり、JTCのソフトウェア企業へ転職します。

3社目では組込みのアプリを主に担当し、詳細設計、実装、テスト設計、テスト実施、不具合修正(設計・コード)と詳細設計以下は一通り経験しました。
ここでもやはり、私にとっては実装が一番難しかったです。
業務内容的には組込みで興味深かったのですが、組込みあるあるで残業が多く、長くは続けられないと思い2年ほどつとめて4社目となります。

4社目(現職)では、残業少な目(ほとんど無いぐらいを希望)、テレワーク週1以上という条件で探しました。
この時点で、住宅ローンは完済目途が立ち給料が下がっても大丈夫と判断しました。
気分的にはセミリタイアです。
この結果初めて主にテストですが、Webアプリを担当することになりました。
これまでに担当してきた組込み系とは、設計が大きく異なりますが、Webアプリの画面もC#でやっていたWindowsアプリと考え方はほぼ同じであることに気づきます。
Webアプリはサーバーがどこかにあるわけですが、こちらに入社して早いタイミングでプロジェクトのオンプレからクラウドへの移行という一大プロジェクトに立ち会うこともできました。
(簡単に言うとオンプレとは自社サーバー、クラウドとはAWSなどのようなレンタルです)
主な業務は、毎月のようにリリースされる機能追加のアプリ設計の査読、テスト設計と実施(不具合レポートの作成等を含む)、お客様問合せでサポートセンターで解消できない問題の調査等です。
問題の調査としては主にDBをSQLで確認しつつ、お客様の関連データが実際どうなっているかを確認したり、おかしな挙動をするページの挙動を確認したりです。
原因としては、お客様の操作ミスや勘違い、アプリの不具合(いわゆるバグ)などです。
操作ミスに関しては、例えば論理削除されたものはお客様の操作では復元できないタイプのものがあり(あえてデータの整合性のためにできないようにしている)、これに対してDBをSQLで復旧するデータ修正を行ったりします。

Webアプリやクラウドは、現在非常に大きな産業になっています。
結果的にこのような領域に入ってこれたことはラッキーであったと思っています。
一方、個人的な興味はやはり組込みの方が強く、こちらはココナラで変わらず受託開発を行っています。
最近は、生成AIを活用することで、これまで難しくてできなかったこともできるようになってきています。
というか、基本的なコードは一瞬で生成してもらい、そこから細かなところを調整していくというのが、最近のコーディングスタイルになりつつあります。
これは便利である一方、ソフトウェアエンジニアの価値というのが脅かされる日が来つつあるのではないかとも考えています。
一方世の中には、ノーコード・ローコードツールも広がっていて、ソフトウェアエンジニアが必要ない世界が来るのかと思いきや、意外とノーコード・ローコードツールも使いこなせる人が少なかったりします。

ソフトウェアエンジニアが必要なくなるのではなく、「AIを使いこなして従来の数人分の成果を出すエンジニア」と「AIを使えず淘汰されるエンジニア」の二極化が進むのが現実的な未来ではないでしょうか。
また、ゴールドラッシュでツルハシを売る人のように、AIやノーコード・ローコードツールの使い方を教えるもしくは、ツールを作るエンジニア、という職業が出てくるのではないでしょうか?
(イメージ画像もGeminiで生成しました)