次の2月1日で、前職から(おそらく広義の)エンジニアとして現会社に採用していただき、前職病気離職⇒リスキリングしながらの自宅療養だった状態から社会復帰して丁度1年になります。今回はこの1年を通して感じたり学んだりした、自分のようなプログラミングスクール・公共職業訓練利用者がIT業界ないし、それに準じる業界の会社で中途で働くことになったときに気をつけるべきこと(≒勝手にやってはいけないこと)をとりあえず思いつく限り残しました。
各職場で若干の違いはあると思いますが、自分の現職場はProgaku(無料プログラミング学習コミ二ティ)で他のエンジニアの方と話していても、かなりセキリティきつめだと感じるので、いずれの職場においても通じるものはあるかと思います。(※「報連相の徹底」「基本的なあいさつ」「社会人としてのマナー」のようなどんな業種でも基本的に求められるようなことはここではなるべく除きます。)
今後、同様の立場から転職を検討されている方の参考となれば幸いです。
※転職活動時の記録は以下の通りです(あくまで自分の場合です)
なお現勤務先の会社は、IT業界とメーカーの中間のような立ち位置のかなりニッチな分野を攻めている会社です。純粋なIT企業ではないため、SES?受託?自社開発?どれなん??と聞かれると返答に困りますが、あえていうならおそらく全部で、今は提携先に出向いているので自分はSESか受託に近いと思います。
C#等でシステムを組んだり、Python等で解析したりしている部署もあるのですが、現部署ではプログラムを組むというよりは、内製 or 市販のシステム・ソフトやVBAマクロを使って、納品するデータやシステムを日々作っています。(ただ、プログラミング関連の学習は実際役に立っているように感じます。どのように役に立っているかは後述します。)
本題 気をつけるべきこと(≒勝手にやってはいけないこと)
(1)何でもかんでもすぐにインストールできない
詳細
プログラミングスクール・公共職業訓練では、基本的に私用のPCを使うことが多いと思うので「インストール」は基本的に「できるもの」として話を進めると思いますが、大概現場ではセキリティ対策か、プロキシに引っかかります。 安全性が担保されていない (もしくは安全性を上層部が認めていない)ものは基本的にはインストールできません。
「依頼された業務で扱うものだけインストールできる」と思ってもらって差し支えないと思います
※VScode等の広く使われているIDEのインストールとかも以下のような感じでシステム管理権限を持っている人(いわゆる情報システムの人)に申請して許可してもらう必要があります。 自分もつい最近申請を認めてもらって入れたばかりです。
※以前、以下のような記事もありましたが、これはガチです。
転職二日目でVSCodeを勝手にインストールしたら注意された @MAsa_min さん Qiita より
https://qiita.com/MAsa_min/items/d6cd3d6248d4b17b4cb7
プロキシとは
プロキシというのはざっくりいうと「各社員がそれぞれどのシステムやOSSを使えるかに制限をかけるもの」になります。 これも基本的にシステム管理権限を持っている人が権限を握っています。
参考 初学者の為のプロキシってなに? @gen10717913
(genki hiroshima) さん Qiita より
https://qiita.com/gen10717913/items/38af624757a05d22adde
ただ 「依頼された業務で扱うものだけインストールできる」 というのは、裏を返せば 「依頼された業務の中にプログラミングを使うものがあれば、それに必要な(認可の下りたものでの)環境構築は可能となることがある」 ことを意味します。実際、今もPythonやJavascriptを中心に学習を続けているということを、自分も度々上司との面談で伝えていて、そのような業務をする可能性が出てきたため認可をもらえました。
また例えば、「作成に必要な『提携している常駐先では使えないもの』を本社では使える(またはインストールできる)場合、本社で提携先に需要のあるプログラム・システムを作り、テストをして安全性が担保されればそれを売って儲けてもいいのではないか」という考えの上司や先輩の方もいたりします
(2)全ての部署がGithubとかでデータをクラウド管理できるわけではない。社外秘のものは不特定多数の目に付くところに載せない
詳細
プログラミングスクールで行うチーム開発ではGithubなどでコードを共有することが多いと思いますが、サービス・データによってはGithubのように誰でも目が通しやすい場所に載せてはダメなものを扱っている場合があります。自分が現在勤務している部署もそちら側です。下手すると賠償責任が発生したりします。
※そのような場合ローカルのサーバーでデータを管理することになります。(そのような形態をオンプレミス(on-premises)と言います)
また、オンラインのスクールを利用していた場合、画面共有機能をよく使ったと思いますが、社外秘の資料を共有することも当然アウトです
(3)技術発信するなら慎重に行わないといけない
詳細
プログラミングスクールでは、「日々の学習をSNSやQiitaなどの技術記事で発信しましょう」と謳っているところが結構あると思いますが、上記のGithub同様、社外秘の情報を不特定多数が目にしうる場所についうっかり載せると当然何らかの処罰の対象となります。(自分もQiitaやXをするときはビクビクしながら使っています)
また、社外秘でなくとも勤務先の利益に関わる内容の情報発信には気をつけましょう。
(4)(私用PCと会社PCが分かれている場合)自分の私用PCで作った物をメールで会社PCには送らない
詳細
たとえ、どんなに便利なプログラムを家で作れても、そのメールがバックドア(コンピューターやシステムに不正に侵入するための経路)になる可能性があります。 (私用PCと会社PCが分かれている場合)会社で使うものはアイデアだけもっておき 「上司の許可を得てから」「会社で」 作りましょう。
(5)「技術的には可能であっても」法律的にアウトな場合があるし、所詮1~2年の学習歴・勤務だし、そもそも「してもいいことなのか」よく確認しよう
詳細
例えば先日、私は現常駐先の上司の方に「常駐先で使っているシステムを自動化できないか」みたいなことを尋ねられました。そのシステムは常駐先が属するグループの「親にあたる会社」が常駐先の会社が提供しているシステムでソースコードを見た感じ、「JavascriptがSeleniumを使って、そのシステム内のスクリプト」を回せば実現できるように感じました。
ただ、念のため学生時代から情報・プログラミング等を学んで新卒で情シスとして採用されて数年働かれている方に「~~でこういうことをしたいのですが」と許可をもらおうとしたところ、「もしかしたらそれ、ハッキングの可能性がありますよ・・・」 と言われました😇(そういや日本は法治国家やったわ・・・)
(※ただ、これについては「壊すわけでは無く」あくまで別にシステムを作って、それで対象のシステムに業務の範囲内で働きかけるという流れなので、今後さらに上の上司と相談してOKあり進展有ればQiitaに起こそうと思っています)
また、PythonやGAS(Google Apps Script)などを勉強していると後半に「スクレイピング・クローリング(≒Webページなどから特定の情報をJSONとかで取得する)」が出てくるかと思いますが、Webサイトによってはスクレイピング・クローリングは禁止されており、これも処罰の対象となります。(以下で紹介されているもの以外にも例えば、X(Twitter)でのスクレイピングは現在は禁止されています)
(6)プログラミングを全く習っていなかったときの自分を覚えておこう
詳細
私の勤務先の会社は、現部署が今はPCで作っているあるものを「昔ながらの職人さん」が文字通り「マンパワー」で作っており、それが主力製品でした。そのため私は、今は日々の仕事の中で+@で業務に必要なシステムやソフトを学んだ一定数の「昔ながらの職人さん」だった方と働いています。要は、「IT企業またはそれに準じる企業であっても、プログラミング経験者でない方とも協働しうるし、システムエンジニア以外のエンジニア職種も多くある」 ということです。(実際、「engineering」とググると最初に出てくるのは、「基礎科学である数学・化学・物理学などを工業生産に応用する学問」、つまりは工学です。)
また以前以下Qiitaにも書きましたが、純粋なIT企業だけがプログラミング経験者を求めているわけではないし、転職活動中、転職フェア等に7~8回は行くなどしていろんなIT企業を見た限り、取引先がITとは全然違う専門分野の方なんてことはざらです。そのような方々と仕事・普段のコミ二ケーションでプログラミング関連の話をする必要ある場合、あくまでプログラミングやプログラミング関連の知識は「英語が喋れる」「数学が分かる」などと同等のスキルの1つであることを念頭において説明しないと大概伝わりません。 例えば、最近だとよく仕事を教えてもらっている工学系の先輩に尋ねられて「Python ≡ AI」というのは誤りであくまで、「AIはPythonで実装できることの1分野の1つであること」や「JuliaやRなど他にもAIを作るのに使われている言語があること」を説明しました。
〇終わりに:プログラミングスクール・公共職業訓練は役に立ったか
正直答えると半分Yesで半分Noです。Noの部分はこれらのカリキュラムの内容が実際の現場に対応しているたかと言われると、プログラミング関連に関しては「自分の場合は」対応していなかったからです。 例えば、現に現勤務先での採用面接や現勤務先で役に立った・求められているのは、プログラミングスクールや公共職業訓練後に各地域における言語需要ニーズの差異を知って自分で始めたPythonやJavascriptの学習でした。(※プログラミングスクールでは主にPHP、Laravelを学習していました。)ただ、これらを独学する上でいずれも素地になったとは感じています
〇他のいくつかの役に立ったと思える部分
詳細
①スキーマとかバリデーションとかIT関連の用語
自分でコードを書く機会はまだ少ないとは言え、現部署に現部署でよく使う内製のシステムを組まれた方がいたり、情シスの人とシステムの改修依頼やPC関連の設定の話をしたりするときに、プログラミングを学習し始めるまではしらなかった単語が結構出てきます。 それらの言葉が全てプログラミングスクールのカリキュラム内ででてきたかと言われると??ですが、少なくとも学習のきっかけにはなりました。
②エラーメッセージor公式ドキュメントを読むという姿勢・文化
入社当初、一瞬現部署とは3人だけの別のグループにいたとき、仕事に必要なあるソフトをインストールできず、一瞬作業が止まったことがあったのですが、自分はそのソフトを公共職業訓練の過程で私用PCにインストールして訓練していたので、公式ドキュメントのありかも分かっておりインストール時のエラーメッセージから認証に問題があったことを突き止め、その後無事その作業を完遂できました。
③学習姿勢(大概の情報はググればどこかにはある)
スクールと併行して受けていた職業訓練で、カリキュラムの一環としてある会社のPR活動の提案(あくまで「案」)をする機会があったのですが、そのときに私はその会社のHPを刷新するという案を出しました。そこでプログラミングスクールで当時習っていたLaravel(verは9)で新HP案のプロジェクトを作成したのですが、当然「カリキュラム外」ということでプログラミングスクールの講師に質問しても質問には答えてもらえず、(当時はエンジニアコミ二ティProgakuにも入っていなかったため)しばらく「Chat-GPT3.5」大先生に質問しながら実装に必要そうなサイトを漁る日々が続き、その過程で大概の情報はPCに載っていて、プログラミングが強い人は、情報収集や検索の能力が高いんだなと感じました。 なお、このとき作ったサイトは後に作るポートフォリオのベースとなりました。また、皮肉にもこのときに少しいわゆる「自走力」が養われたように感じます。