👶

ITエンジニアと子育てと勉強と

2020/09/23に公開

はじめに

新卒でエンジニアになって数年経ち、ある程度の経験がついてこれからだという頃、ちょうど結婚、出産、育児と人生の転機が訪れるタイミングの人も多いのではないでしょうか。
私もその一人で、大学院を卒業して 5 年ほど経験をした 31 歳の夏に、第一子が誕生しました。(大学院生 & 1 浪のため 25 歳で新卒でした。)
そんな中で伊藤淳一さんの以下のツイートをみて、自身の経験も誰かのためになるかもしれないと思いこの記事を書きました。
https://twitter.com/jnchito/status/1308547334876270592

前提

「エンジニアは勉強すべきである」という価値観を誰かに押し付けるものではありません。
しかし、進化のはやいIT業界に身を置くとなると、好む好まないを別として勉強せざるを得ないと多くの人が感じているのではないでしょうか?
ということで、簡単のために「エンジニアは学習をするもの」として、いかに時間がない育児中に学習をするかというのを主題に記事を書いています。
また、私自身はこのような戦略をとっている、という個人の経験を書いているので、すべての人に参考になる保証はできません。
しかし、考え方や時間の制限など、共通する箇所は多くあると思うので、「じゃあ自分の場合はどうしようかな」と考えるきっかけにしてもらえれば幸いです。

想定読者

そろそろ子どもが欲しいプレパパ・ママ、ちょうど同じくらいの同期パパ・ママのエンジニアが想定読者ですが、ちょっと先輩パパ・ママでもこんなことあったなぁと思い出に浸ったり、部下がちょうど子供ができたという上司の方、また、エンジニアにとっての学習というのは終わりのない道だと思っているので、新卒の方やシニアの方にも参考になるかもしれません。

基本戦略

戦略1:新しい技術× 基礎になる技術〇

ITの世界は本当に日進月歩で、日々新しくて便利なものや考え方が増えていきます。例えば Docker、kubernetes、マイクロサービス、サーバーレス、などなど名前しか知らない技術や考え方、方法論などがたくさんあります。
このようなものをたくさん見聞きすると、自分は何も知らない、このままでは後れを取ってしまうのでは、と恐怖心すら感じます。
しかし時間は有限で、さらに子供がいると自分のための時間はさらに限られてくるので、すべてを学んで理解し、実際に利用することはおそらく不可能です。
そこで、1つ目の戦略として「新しい技術× 基礎になる技術〇」というのを実践しています。

なぜこのような方法をとっているかというのを、新しいプログラミング言語を学ぶときを例に説明します。
新しいプログラミング言語を学ぶときに、たいていの言語は if, for, while , 変数の宣言 など基本的な文法の使い方を理解する、クラスやインターフェースなどオブジェクト指向の書き方を理解する、実際にフレームワーク等を使って何か作ってみる、などのステップを踏むと思います。(もちろん初めからフレームワークで何か作ってみる、そこでわからないことを適宜学ぶという人もいるかと思うので、スタイルはそれぞれですが。)
この時プログラミングを初めて学んだ時2言語目以降では全く学習効率が異なるというのは多くの人が経験していると思います。
この学習効率が2言語目だと向上するのは、記述方法は違っていても、文法には似通っているところが多々あるためだと考えています。
すなわち、基礎になる箇所では共通点が多いため、応用がききやすい、ということです。
このことから、「時間が足りずすべてを学べないなら、なるべく広範囲に応用が利くものを学んでいこう」というのが私の基本的な戦略となります。
具体的にはプログラマであればアルゴリズム、ソフトウェアアーキテクチャ、OS、ハードウェアなど、コンピュータサイエンス系の学部で学ぶようなこと、PMやマネージャなどであれば心理学や行動経済学など人に関することなどが当てはまるかと思います。

戦略2:新しい技術は「解決する問題」にフォーカスして学ぶ

戦略2つ目としては「新しい技術は「解決する問題」にフォーカスして学ぶ」というのを気にかけています。
この戦略は 「新しい技術というのはなぜ登場するのか?」 という質問に答えると理解しやすいと思います。
さて、この質問に回答するために、とても古い例ですが中世ヨーロッパの宗教改革を例に見ていきましょう。(歴史的な詳細について詳しいわけではないためもし誤認識があったら申し訳ありません。)
当時、キリスト教は教会の一部の聖職者と知識層のみが聖書を読むことができ、一般市民は聖職者から聞くことでのみ神の教えを聞くことができたそうです。
そのため教会や知識層は自分たちに都合のいいように教えを説き、免罪符を販売するなどをして搾取ともいえる行いをしていました。
それに反発したルターは、95か条の論題や聖書をドイツ語へ訳版して活版印刷技術を用いて大量生産し、一般市民に広めることで宗教改革を成し遂げました。
私はここに、次のような問題点解決策という構造があると思っています。

問題点としては

  • 聖書などはラテン語のみだった
  • 一般市民はラテン語が分からない
  • 翻訳をして本を書いていてはどんなに頑張っても数日に1冊で広めることができない

解決策としては

  • 活版印刷という当時の最新技術を用いて、高速に翻訳した聖書などを生産する

このように最新技術は「何か問題があり、それを解決するために」登場する・利用すると考えています。
であれば、新しい技術を学ぶときに、その技術が解決したい問題から考えることが、新しい技術を理解する近道なのではないかと思いこのような方法をとっています。

ちょっと余談ですが、エンジニアなら一度は耳にしたことはあると思うデザインパターンも、何かしらの問題がある→それを解決するために〇〇パターンを使用する、という構造になっています。

戦略3:動画や音声など、ながら勉強ができるものをストックする

さて、方針に関する戦略を2つ紹介しましたが、次からはとても具体的な方法です。
子どもがいるとなかなか時間が取れません。新生児は3時間おきにミルクをやり、ことあるごとにおむつを替えなくてはいけません。もう少し成長すると歩き回ったり遊んでほしいとねだったりがあるでしょう。
これらは親として幸せなことではあるのですが、いかんせんまとまった時間が取れません。
そこで私がとっている戦略は、「動画や音声などながら勉強ができるものを探してはストック」するというものです。
現在は YouTube でもたくさんの技術紹介がありますし、特に公式が公開している動画や大学が公開している授業など信頼性の高いコンテンツも多数あるので、上2つの戦略に合った動画を探しては再生リストに入れています。
また、coursera などは有料コンテンツもありますが、海外の大学の講義を受講することもできるため、非常に重宝しています。
具体的にどのコースをとっているかなどは後程記載します。

戦略4:時間がかかる育児中にながら勉強

育児は時間がないとは言ったものの、必ずすべての時間を100%子供に使う、というわけではなかったりします。
たとえば私の場合ミルクをあげているときは子供はおとなしいことが多く、ながら勉強が可能です。(当然子供によって個人差があるため、お子さんの状況を見てうまい方法を見つけていく必要はありますが。)
そこでミルクの時は上記の動画を流し聞く、そのあと寝かしつけたら動画を見るなどのながら勉強をしています。
出来る人であればミルクをあげながら頭で考えてみたりということができるかもしれないですが、私は何かをしているときに頭を使うというのが苦手で、一度ミルク中にアルゴリズムの動作を頭で再現しようとしてミルクが口から外れてこぼしてしまう失敗をしているので、動画を聞くだけにしています。
この方法はこちらの記事で紹介されているのを見て参考にしています。

戦略5:似た状況の人の情報をキャッチアップする

会社によっては若い人が中心で周りに子育てをしているエンジニアが少ないということもあると思います。そうでなくてもなかなか子育てをしながら勉強をどうやっているか?という話題が出ずらい職場もあるかと思います。
そのような状況ではなかなかモチベーションを保つのが難しいため、Twitter などで情報発信している人をフォローする、子育てエンジニアAdvent calendarなどを見る、自分で情報発信していくなどをするのが良いと思っています。
アウトプットについては記事を書く時間がないと思うので、最初はTwitterで育児Tipsをつぶやくだけでもいいですし、何ならうちの子かわいい…とのろけるだけでもいいと思います笑

具体的に何をやっているか

基本的な方針は上記に述べましたが、では実際何やってるの?というところですが、今は大体以下のようなことをしています。

  • Coursera の Algorithms part 1,2 を受講する
    https://www.coursera.org/learn/algorithms-part1
    https://www.coursera.org/learn/algorithms-part2

    この動画はプリンストン大学が無料で提供しており、英語もアルゴリズムについて学びたいと考えていた私にとって、渡りに船のような講義でした。当然講義は英語ですが、日本語字幕もあり、さらにアルゴリズムの動作を逐一スライドと動画で表現してくれているので非常にわかりやすいです。
    内容としては初回から Union find tree の講義でまったく知らない状態からだと難しいですが、ステップバイステップで細かく方針を示してもらえるため今のところ非常に満足度が高いです。

  • 月に2回ほど競技プログラミングのコンテストに参加する
    子供が生まれる少し前から、アルゴリズムを学習したいと思い、競技プログラミングを始めました。
    子育てをしているとなかなか毎週コンテスト参加は難しいですが、子どもを8時に寝かしつける、妻が9時には寝るという生活スタイルをしているので毎週土日のどちらかの夜9時を自分一人にすることができることもあるので、今のところある程度は参加ができています。
    また、コンテストに参加しなくても、アルゴリズムの実装がゲーム感覚でできるため、コツコツと問題を解いていくのも楽しいと思います。

  • AWS ブラックベルトなど公式が公開している動画を視聴する
    私はバックエンドエンジニアをしているのですが、サーバー・ネットワークなどインフラ回りの知識が乏しく、弱点だと認識していました。
    そこで戦略 2, 3, 4 を用いて AWS のサービスはどういう問題を解決するためにできたのか、というのを気にしながら、気になる動画をストックし、ミルク中に動画を聞くということをしています。

  • Twitterで育児中のエンジニアのリストを作成して情報収集
    最近作成したリストのため登録数は少ないですが、リストを作成して育児とエンジニアに関しての情報収集をしています。
    https://twitter.com/i/lists/1308601756566171649?s=20

  • エンジニアの育児記事を読む
    下の記事など、育児とエンジニアに関する記事を読んで日々学習しています。
    https://employment.en-japan.com/engineerhub/entry/2018/05/15/110000
    https://blog.jnito.com/entry/2012/12/11/065847
    https://adventar.org/calendars/4199

  • 自身も育児について少しづつ発信する
    この記事もその1つですが、少しでもアウトプットできればなと思っています。

最後に

育児は大変ですが、その分子どもの成長を日々見守るのはとても幸せだと日々実感しています。
ぜひエンジニアに限らず多くの人が、もっとこうするといいよ、これ良かったよ、これに悩んでるよ、と発信していって、より良い育児環境になって、キャリアをあきらめずに育児ができるような社会になるといいな、と思っています。

Discussion