猿神大学

数学についてあまり書きません。

一年間働いてみての振り返り

こんばんは。

三角関数ちゃそです。

 

今回は、タイトルの通りの内容です。ひねりのないタイトルでごめんなさい。

内容も、個人の備忘録的な内容で、僕自身第三者に読んでほしい気持ちもなく記述している記事になるので、わかりにくいしつまらない内容かと思いますが、何卒よろしくお願いいたします。

 

1年前の現状

  • 大学院では数学(解析学、主に変分問題)を専攻していた。元々は博士課程への進学を希望していたが、諸事情により進学を断念。まともな準備もせずに就活を始めた。労働のモチベーションはなかった。
  • システムエンジニアとして現在勤務している企業より内定を取得。ただし、プログラミングは未経験だった。正直、システムエンジニアが何をどうする職業なのかのイメージさえ乏しかった。

当時考えていたこと

そもそも、消去法的に就活をしていたので、労働に関するモチベーションは皆無だった。モチベーションを生むために意識的に以下の着眼点を持って入社後の研修に励むようにした:

  • 何をするか。エンジニアという仕事は何をするのか。何をしてお金を稼ぐのか。何をすることで信頼を得られるのか。プログラミング未経験の自分がエンジニアとして働くには何をすればいいのか。
  • どう取り組むか。エンジニアという仕事とどう向き合うのか。どのようにお金を稼ぐのか。どのような所作が信頼を生むのか。数学科出身の自分だからこそ、どうエンジニアとして振舞えるのか。
  • どう在りたいか。仕事とプライベートのバランスはどうするか。どのようにお金を使うのか。どのような信頼が欲しいのか。どうしてエンジニアなのか。

 

以降、上記3点についての自らのフィードバックを記述する。

何をするか。

「自分の仕事に興味を持とう」という着眼点。何をするかの輪郭が曖昧だと、どう取り組むかの工夫も曖昧になる。対象へのピントを合わせる感じ。

エンジニアという仕事は何をするのか。

ざっくり言えば、「ものづくり」なんだろうけど、ざっくりしすぎている。

 

正直、1年働いてみて、一言でこれ!と言えるような答えみたいなのは得られていない。

例えば、「家を建てる」という例を持ち出せば、設計士から大工みたいな作業まで全部やることもあれば、階段の手すりだけ作るみたいな作業をやることもある。

日によって、「設計士」でもあるし「大工」でもあるし「手すり職人」でもある。

 

そのくらい、エンジニアという仕事は幅が広い。

 

とりあえず、現状の自分はまだまだ新人のひよっこなので、ここで「エンジニアとは~」と語るのは早い気がする。かといって、「ものづくり」だとふわふわしすぎているので、やや具体的に「顧客のニーズに合ったものづくり」程度の認識でよい気がする。

f:id:sarugami_univ:20210401234102j:plain

この画像を見て「あ~~」と思う程度には仕事をした。

何をしてお金を稼ぐのか。

「顧客のニーズに合ったものづくり」をしているのだから、顧客のニーズを聞き、ものをつくることで、お金を稼ぐ。

 

何をすることで信頼を得られるのか。

品質と納期を大切にする。

これらがないと、「ものづくり」の機会さえ与えられない。面白い仕事が降ってこない。

品質を上げるには、技術がないといけない。

期限を守るためには、技術がないといけない。

要するに勉強が大事。勉強する姿勢が信頼を生むのでは。

あ、何か意識高そうで嫌なフレーズだな。おっぱい。おっぱい。*1

 

プログラミング未経験の自分がエンジニアとして働くには何をすればいいのか。

技術がないので、とにかく勉強する。以上。

 

...これがすべてなのだが、「じゃあ何を勉強するんだ」という話ではある。

 

「品質と納期を大切にする」ための勉強であれば、目の前の問題を解決するためだけの勉強が中心になり、視野が広がりづらい気がする。

持っている道具が少ないと、将来的にできる仕事が減りそうだが、それ以上に持っている道具の増やし方がわからなくなってしまいそうなのが怖い。

 

「品質と納期を大切にしなくてもいい」という状況下でも勉強するのが大事なのかもしれない。

 

そうなると、仕事とは本来分断されるべきプライベートな時間に、趣味で何かテキトーにものをつくるのがいいのかもしれない。

いや、仕事中に、成果物とは別にテキトーなものを作る時間を設ければいいのでは...。

 

と考えた結果、最近は勤務中に30分はテキトーなものを作る時間を確保して、仕事以外にもテキトーにものをつくっている。

適当じゃなくてテキトー。このテンションが大事。

 

どう取り組むか。

コンピテンシーって奴かもしれない。知らんけど。

エンジニアという仕事とどう向き合うのか。

技術獲得のために勉強する必要があるが、そもそも、何を勉強すればよいのか考えるのは、実は難しいことである。

選択肢自体は無数にあるが、本当に欲しい選択肢は勉強してから気づいたりするし、闇雲に勉強するのは結構疲れるのだ。

 

で、何を勉強するかの的を絞るには

  • 知識人に質問する

が一番。結局。

やっぱり賢い人は賢いんだわ。

 

勉強の選択肢を探るために、上司に

  • やっておいたら役に立つこと
  • 勉強してみたいこと

を質問する。

勉強してみたいことが釣れた時は、協力者になってくれることが多いので、一人で勉強しなくて済むし、勉強のゴールとして「他人と理解を共有する」というのが設定できて非常に良い。

 

他人と理解を共有する意識があると、

  • 疑問や理解を言語化する(理解が深まる、議論が上手くなる)
  • 他人に伝わるように丁寧にふるまう(可読性への意識が高まる)
  • 他人からのツッコミを想定して勉強する(おのずと視野が広がる、言動に動機が生まれる)

といいとこ尽くしな気がする。

(これ、数学のセミナーをやってた人なら全員持っている意識だと思うけど。)

 

どのようにお金を稼ぐのか。

技術を学びながらものづくりをするわけだが、品質と納期も意識しないといけない。

 

なので、実際にものづくりをするときには、時間の余裕を生むために、ある程度賢く楽をする意識が必要と思う。

例えばの話、最悪コピペで済んだら、実装にかける時間はほとんどないので勉強の時間が増えるわけだ。(仮にコピペで済んだ場合、今度は保守が大変そうだが。)

何かしらで楽をする工夫を行えば、勉強時間の確保につながるわけである。

 

で。

自分の場合は、設計で楽をしたいと考えている。

 

僕は10月ごろにアーキテクチャ関連の勉強を行い、設計時に対称性やメソッド・クラスの粒度を意識するように努めた。

 

同じくらいの抽象度・似た動作を抜き出して、似たような作りで実装すると、「外装は同じで内部がちょっとだけ違う」メソッドやクラスができる。そのうえで

  • こことここは共通化できそうだから基底クラスにするか~
  • この処理とこの処理は出力先が違うだけだからインターフェース切るか~
  • この処理に関するテスト項目、似た処理にも参考にするか~

といった工夫をするだけで、全体の骨組みはある程度できていたりする。

通化がなされていると、コーディングの量も多少減るし、修正箇所も少なく収まる。

(バグの発生個所が一か所に固まるというのはメリットデメリットあるけど、これで生じるデメリットは大体依存の向きや抽象度の具合を見誤っている気がする。)

 

個人的には、この「先に大域的な設計を行い、細部はあとで詰めていく」スタイルが非常に好みである。

 

大域的な設計をどうやるか、という話だが、自分の場合は、数学の証明を書く時と同じようなものだと思ってやっているので、説明は難しい。このあたりは感覚でやっている。

うーん。定理と補題みたいな関係なんだよなあ。

本当に言いたいことは定理なんだけど、細部の難しい計算は補題に切り出す、みたいな。でも、補題も繰り返し使いたいから、仮定をなるべく抽象的にしたいし、でも抽象的すぎると補題から定理が導けることの議論が直感的でなくなるし、...みたいなのと似ている気がする(伝わらない)。

とにかく、言語化がむずかしい。

 

あと、細部ほど実装は大変だが調査は楽な気がする(検索するワードが細かいので)し、部分的な問題として切り出しやすいので、プロジェクトに無関係な他人にも相談しやすい。

 

この「先に大域的な設計を行い、細部はあとで詰めていく」スタイルが品質と納期を向上する上で大事!ということを新人の早い段階で勉強できたのは大きな収穫だったと思う。今後も継続していきたい。

 

どのような所作が信頼を生むのか。

勉強する姿勢が信頼を生むと述べたが、技術にアンテナを張るとか、勉強した内容を仕事に還元するとか、そういう勉強熱心な所作が求められると思う。

ものづくりに生かすでもよし、社員に伝えるもよし。

要は、勉強熱心だと評価されるし、信頼される。

 

逆に、周囲から自分が還元される立場となったときも、勉強の機会であるので、勉強する姿勢を見せたい。「ちゃんと考えたうえで質問をする」みたいな姿勢は見せたい。

 

数学科出身の自分だからこそ、どうエンジニアとして振舞えるのか。

僕自身、プログラミング未経験でエンジニアという仕事に就いたわけだが、現在は情報系出身でないエンジニアなんていくらでもいるわけだ。

その中で、プログラミング言語を学び、技術を身に付け、コーディングができるようになっていく...というのは大切だが、意義が薄いように思う。

数学科出身以外の人間も同じことできるし、それでは数学科出身の意義が薄い。

自らのアイデンティティを損なうわけである。

 

で、「数学科出身」というアイデンティティをどう生かすの?という話だが、これは大きく2つあって

  • 数学の知識が役に立つ仕事をする
  • 数学的な思考が役に立つ仕事をする

という感じ。

 

前者は言うまでもない。暗号理論は数学の知識が生きる分野だと思うし、データアナリティクスや機械学習でも、数学の知識が生きる場面はいくらでもあると思う。

僕自身、数学の知識が必要な仕事も参画させていただいた機会があるが、やはり数学の知識があるだけで重宝されることがあると実感できた。

 

後者。「数学的な思考」って言葉は、定義も何もなく、実に数学的でない言葉なんだけど。

個人的な意見として、具体と抽象を明確に切り分けて物事を判断できる思考が、「数学的な思考」の1つであると考える。

先にも記述したが、大域的な設計の際に同じくらいの抽象度・似た動作を抜き出す、ということができるのは、自身の数学的な思考の産物だと考えている。

また、セミナーで育んだ

  • 疑問や理解を言語化する(理解が深まる、議論が上手くなる)
  • 他人に伝わるように丁寧にふるまう(可読性への意識が高まる)
  • 他人からのツッコミを想定して勉強する(おのずと視野が広がる、言動に動機が生まれる)

あたりの意識と、その意識を成果物に反映するための思考も、数学的な思考の産物だと思う。

 

まあ、「数学科出身だから~」って言ったが、真剣に研究なり学術なりに打ち込んできた人間であれば、ここまで記述したことは、ある程度感覚的にできる気がするけど。グッバイ、アイデンティティ

 

僕自身、自分の仕事観みたいなのをこのように言語化したのは初めてなのだが、書いていながら、「これ、『仕事』というよりも『院生時代』に近いな」と思うことの方が多い。対象物が研究から仕事に、数学からプログラミングになった「だけ」な気がする。

 

対象物をすり替えて似た取り組みができるのは、具体と抽象を明確に切り分けて物事を判断できる思考があってこそなのかもしれない。知らんけど。

 

どう在りたいか。

近い将来。技術を学ぶことに注力した1年だったので、あまり将来を考えていなかった気がするため、以下は割とテキトー。

仕事とプライベートのバランスはどうするか。

定時絶対帰るマン。睡眠時間絶対マン。まんまん。

オフィスにえろえろお姉さんがいたら残業ないし夜勤♡するかもしれない。ぺろぺろ。

どのようにお金を使うのか。

ビール。

奨学金返済するまでは質素に生きていきたい。

どのような信頼が欲しいのか。

他人の進捗を管理するのはあまり楽しくないので、知識人ないしプレイヤーでありたいと思った。

また、そういう役割が将来的に与えられるように、知識人たる信頼が欲しい。勉強するもするし、知的な姿勢も大切にしたい。

 

以下、メモ。

 

www.ki1tos.com

 

blog.tinect.jp

どうしてエンジニアなのか。

エンジニアは結構やってて楽しいが、エンジニアでなければならない理由は明確にはない。職業柄上下関係は体系的ではないし、人間関係がある程度ドライなのは居心地がいいが。

 

もともとテキトーに就活した帰着なので、エンジニアという仕事に強いこだわりがあったわけではない。

しかし、何かのご縁でエンジニアを務めている以上は「どうしてエンジニアなのか」にこだわりを持てるといいのかもしれない。

やっていることの理由なんて後付けでもいいし。

 

「どうしてエンジニアなのか」を考えるのが、2年目の課題になりそうだ。

 

おわりに

長文乱文駄文失礼しました。

当記事は持論のデンプシーロールなので、真に受けないでください。

それでは、皆さん、ごきげんよう

 

...学生に戻りてえな。

*1:筆者は「おっぱい」こそ至高のフレーズだと思っているので、意識高そうなフレーズを書いてしまったと思った時には、隣に「おっぱい」を添えることで、相対的に意識を低く見せているのである。