新人エンジニア、未経験エンジニアに向けて

SESに所属して1年半ぐらいだった。
ので、雑感というか、所感をまとめていきたい。

いろんな意見があると思うが、あくまで「筆者はこう感じた、考えた」なので再現性などは分からない。参考になれば。


未経験エンジニアとしてどんなことに挑戦するか?

これは、最初は「自分でプログラムを作って、それを売りにして~~」みたいなことを言っていた。
考えが変わった。

エンジニアのコーディングの仕事って、
・実装する業務の知識
・プログラミングの知識
が必要。なぜかみんな、後者だけを大事にしたがる。

・実装する業務の知識ってなんぞや?
って思うかもしれない。

基本情報を勉強したことがあるとわかりやすいかもしれない。
「バブルソート」など、ソートの問題がアルゴリズムで出題されることがよくある。
それは、プログラムだけを追っていくと、わかりづらい。
だけど、正解を見たり、動画などで「そもそもどんな動きをしているのか」をイメージできると、とたんに理解しやすくなる。

なので、エンジニアの仕事も、
「まっっっったく前例のない、誰も解決したことのない問題を、未知の道具を使用して解決する」
ということはほぼありえなくて、
「誰かが経験して課題を抱えているものを、誰かが使ってことある手法で、カスタマイズしていく」
が近いと思う。

それで、その「誰かが経験した課題」を、
・コードや設計書から理解するのか
・業務知識をそもそも持っているのか
というところで、最初のとっつきやすさは変わると思う。

たとえば、生産管理システムのプロジェクトに参加するとしよう。
そもそも工場とか倉庫とかで働いたことがなければ、「出庫? 入庫? なんぞや」という感じだけど、関連したことある人なら「ああ、出庫ってああいう知識だな。入庫ってそういうことかぁ。そういえばあそこでよくとらぶってたなぁ」というとっかかりができる。

日本語から理解していくことができれば、すごくハードルが下がる。

あと、ドメイン知識、業務に関する知識がとても大切で。
たとえばSESで人を集めるときに、各グループには1~2名のシニアエンジニアが存在する。

なんで? となると、
コードを読む、直す、書く、はSESの技術者で十分できる。

だけどそのコードや仕様が「業務的に正しいのか?」
をチェックできる人が必要。

なので、経験浅くてコードを読んだり書いたりするのが苦手な人は、業務知識を成熟させていくのがよいのではないか。たぶん日本語で書いてあるし。
と思った。

業務外の時間ってなんぞや?

定期的にtwitterで「土日に勉強してるエンジニアは、してないエンジニアは・・・」みたいな話があがる。

そもそもエンジニアがする勉強ってなんじゃい???
というのを、以外と誰も具体的にしない。
なので考えてみた。

・業務で使う言語、プログラムを深堀してみる
・新しいツールなどを試してみる
・自分でアプリ開発
・まったく業務に関係ないことを調べて、やってみる

・・・などが思い浮かんだ。

自分の中で、「こうなんだろうな~」と思うのは、

知らないことをする

の一言。

たとえ簡単でも「知らないことをする」人は1年後、3年後には違った世界が見えるだろうし。

・・・でもそれってエンジニア関係なくない?
ということも思った。

自分も入社して1年は、そもそも業務で使う知識が不足していて、「ひええーこんなに覚えることがたくさんあって、土日に勉強なんて無理だよ」と思っていた。
でもそれも少しずつ時間が経つにつれて、「あぁー、知ってる~」となって、気持ち的な余裕ができた。
そのときに、
「でももっと面白いことないかなー」と新しいことを知ろうとする人
が、技術力が結果的に高くなるのではないかなーと。

なので、初心者のうちは基本的に知らないことしかないので、業務で必要なものを必死にインプットして、少し余裕ができてきたら、新人のころの十分の一の時間でもいいから、「知らないことを知る」習慣を続けていけばー、と思う。自分はまあ、そうしてる。


エンジニアの適正について

この記事を読んだり、スクールに通ったりした人はもれなく適正がある(と思う)。
ほとんどの人は、興味があってもやらないからだ。
はじめた時点で適正がある。

前述したように、未知の領域で、誰もが知らない方法で・・・というのは、学術研究の分野なので、ビジネスでそんなことは起こらない。
誰かが使った手法をカスタマイズしていったりする。
なので、「自分は実装が遅くて」と思っても、繰り返していくことで、コードを書くこと自体は慣れていくと思う。

たまにすごく適正があって、人よりコードを書くのが上手な人がいるけど。たぶんでも難しい課題を、難しいコードで解決するってことはほとんどなくて。わかりやすいコードで、次に読む人が理解しやすいコードを書ければすばらしいと思う。次に読む人が理解しやすいってことは、コードの構成としては単純になっていくはず。

・・・とそれはそれとして、「仕事としていけるかどうか?」は場所によると思う。

唯一これは才能かなぁ、若さかなぁと思ったのは、
「速さ」
である。

これはいろんな速さを意味する。
たとえば
・新しい知識をキャッチアップする速さ
・ツールを早く使いこなせる
・実装がほかの人よりも早い
・プログラミングだけじゃなくて、そもそものPC作業がはやい

・・・など。
ここの部分は、どうがんばっても、早い人には勝てない。
(早い人はその人なりの工夫をしているが、それを全部まねたとしても)

なので、この「速さ」を求める場所にいくと、
ふるい落とされる人が出てくるのではないかと思う。

なので、
・納期が明確で絶対で厳しい
・つねに最新技術を使う
・毎回、使用ツールが変わる
・英語しか説明がないものを利用する

・・・とかだと経験が浅いと厳しいのかなぁと。
えてしてそういう会社とか業界って、キラキラして憧れたりするけれど…。

pythonとAIを使ってアジャイル開発してますー・・・。
とか聞くと惹かれちゃうよね。
「JAVAで業務用アプリの運用保守」とかより、面白そうだなぁと思っちゃうよね。

迷わずJAVAに行きなさい。


発想力や想像力じゃなくて、知識でぶんなぐれる場所にいく
のも大事だと思う。

またなにかあったら。ではでは・



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