マイマイ’s エンジニア日記

アラフォー女マイマイの現役エンジニアとしての成長記録

これからをどう生きるか

とうとうGW最終日となりました。マイマイです。Twitterも復活です。

10連休という長い休み、どう過ごそうかと連休前はワクワクしていたのですが、蓋を開けてみたら始まりと終わりは体調を崩してベッドを上で過ごし(ちなみに現在進行形)、中間は英会話教室の無料体験に行ったり、図書館や自宅で勉強三昧の日々を過ごしておりました。えぇ、お分かりの通り、1人で過ごしておりました。でも、寂しいというような感覚はなく、なんだかこんな休みでも悪くなかったな、というような連休でした。

 

この連休は、ひたすら自分と見つめ合う時間にしました。「令和」という新しい元号に変わったのもそういう時間を持つきっかけになったのかもしれません。今までの自分の生き方、これからの自分の生き方を考えていました。

ちょっと話は逸れますが、私は亡くなった母にだけ打ち明けていた自分の考えがありました。その考えは決して私1人だけで感じていたものではなく母も感じていたものだと分かり、その日から母は私の本当の意味での唯一の理解者になりました。そんな母が亡くなり、私が考えていたことは決定的なものとなり、その考えのもと、私はその人生を受け入れなければならないものだということをここ数か月の色んな出来事の中で忘れてしまっていました。なぜ今の私がこういう状況にあるのか、十分過ぎるくらいな理由で、その現実を受け止めるにはちょうどいい連休だったかと思います。

体調改善

連休初日から風邪を引いて寝込み、そして今日を含め2日程前から嘔吐と下痢のため寝込んでいて、せっかくの休みをベッドの上で過ごしてました。体調には気を付けていましたが、幸い、試用期間中なので、体調崩したのがこの連休だったのが救いだった、と思うようにしています。風邪から復帰した後は、運動のために一日一万歩を目標にウォーキングを行いました。そこで気づいたのは、自分の体力の無さです。本当にこれほどまで自分の体力は落ちているのかとショックを受ける程に。なので、今月末には人間ドックもあることですし、日々の生活に運動を取り入れていこうと心に固く誓いました。

スキルアップ

連休中の勉強は、ほぼ語学の勉強に時間を使いました。取り組んでいるのは、韓国語と英語です。ど素人が多言語習得は難しいとも思いましたが、仕事で必要なので、仕方ありません。お蔭で、韓国語の基本は習得出来たのではないかと感じています。この連休中に勉強の進め方も確立出来てきたので、また明日から仕事をしながらの勉強方法も徐々に確立していこうと考えています。

また英会話教室の無料体験にも行ってきました。オンライン英会話も探しているので、まだ通うかどうか決めていませんが、今って結構無料で英語の学習方法を公開していたり、無料の学習アプリなんかがあるので、それらを駆使して、会社の補助をうまく利用しつつ、出来るだけお金をかけずにやれたらいいなというところで今情報収集中です。

エンジニアとしては、先週からロードマップに乗っかる予定でしたが、体調不良等により予定が狂い、まだ手が付けれてないので、1週間遅れて、今週から着手しようと思っています。いや、着手します。

プライベート

体調面、スキル面以外では以下のようなことを考えてました。

私の趣味は手芸なのですが、最近、まったく趣味に時間をかけれてません。まぁそれでも心が疲れたりしていないので、問題はないのですが、せっかく手芸道具もそろっているので、創作活動に時間を持ってもいいのかなと思うので、趣味の時間を作って色々作っていきたいです。

あと、周囲に婚活を宣言しておりましたが、早速ですが積極的に出逢いを求める活動はしばらくお休みしようと思います(笑) 自分磨きなどの自分で続けれれる範囲では続けますが、今の私は上記に書いた通り、体質改善や勉強をやろうと思うので、単純に時間がないからです。自然の出逢いに期待します。

 

長々と書いてきましたが、この連休中に新たな目標も見つかり、それに向けて日々精一杯生きていくのみです。「令和」という新しい時代、これまでの自分の生き方を改め、しっかりと誠実に生きていこうと心に決めた連休となりました。

 

転職して環境が変わったばかりなので、連休明けは五月病にならないようにと前々職の後輩が心配してくれていますので、五月病にならないよう、日々を楽しんで過ごしていけたらと思います。優しい後輩を持ちました。ありがとう。

 

明日から仕事に勉強にプライベートに頑張ります!

 

ロードマップから計画を立てる。

先日、バックエンド開発のロードマップに乗っかる宣言をしました。

バックエンド開発のロードマップに乗っかってみる。 - 復活エンジニア!マイマイ's BLOG

 今日は、原本からこの1年でやるべきことを洗い出して、スケジュールを組み立ててみましたので、ご報告。

 と、その前に。勉強に取り組む今の私の状況を整理します。

  • 基本、残業はない(あっても1時間程度(今のところ))
  • 土日祝日はちゃんと休み
  • 昨年個人で請け負ったシステムの改修案件を立ち上げ中(夏リリース予定)
  • 勉強時間は、平日:4h(2h/d、2d)、土日祝日:8h(4h/d、2d)

 というところを踏まえて立てた計画です。

23Stepあって、長いですが、お付き合いください。

 

Step1.Pick a Language

概要 言語の選択
対象 スクリプト言語Python, Ruby, PHP, Node.js)
・機能的言語(Elixir, Scala, Erlang, Clojure, Haskell)
・その他(Java, .NET, Golang, Rust)
今回やること Node.js
期間

2week
2019/4/29 ~ 2019/5/12

 

Step2.Practice what you learnt

概要 コマンドラインアプリケーションを作ってみる(ls)
対象 Step1で選択した言語。
今回やること Node.js
期間 2week
2019/4/29 ~ 2019/5/12
(Step1と同時実施)

 

Step3.Learn Package Manager

概要 パッケージマネージャーを学ぶ
対象 スクリプト言語(NPM(Node.js))
・機能的言語(Leiningen(Clojure))
・その他(maven(Java), Cargo(Rust))
今回やること NPM(Node.js)
期間 1week
2019/5/13 ~ 2019/5/19

 

Step4.Standards and Best Practices

概要  標準とベストプラクティス
対象  調査中(コミュニティで探す)
今回やること  -
期間

 1week

2019/5/20 ~ 2019/5/26

 

Step5.Security

概要 セキュリティについてのベストプラクティスに目を通す 
対象

 OWASPのガイドラインを読む

(様々なセキュリティ上の問題とそれを避ける方法を理解する)

今回やること  -
期間

 1week

2019/5/27 ~ 2019/6/2

 

Step6.Practice

概要

パッケージを作成し、ほかの人が使用できるように配布する

GitHubからいくつかプロジェクトをピックアップして、プルリクエストを送ってみる

対象  スクリプト言語(Npm registry(Node.js))
今回やること GitHub
Npm registry(Node.js)
期間

2week

2019/6/3 ~ 2019/6/16

 

Step7.Learn about Testing

概要

テストの種類、目的の違いを理解する

スタブ、モックなどのテスト用語も理解する

対象  自作アプリに単体テスト結合テストを導入する方法を調べる
今回やること  -
期間

 1week

2019/6/24 ~ 2019/6/30

 

Step8.Practical

概要

単体テストを導入する

カバレッジを分析する(テストカバレッジの計算方法についても学ぶ)

対象  Step6の実践的アプリ
今回やること  -
期間

 1week

2019/7/1 ~ 2019/7/7

 

Step9.Learn Relational Databases

概要

RDBにデータを保存する方法を学ぶ。

まずは、DB用語(キー、インデックス、正規化、タプル等)を知る。

対象  MySQL, MariaDB, PostgreSQL
今回やること  MySQL
期間

 2week

2019/7/8 ~ 2019/7/21

 

Step10.Practical Time

概要  Step1~9までの知識を使って、簡単なアプリを作る
対象  Node.js
今回やること  例)ブログ
・ユーザアカウント。登録とログイン。
・ユーザは自分のブログを投稿できる。
・ユーザは自分のブログ投稿を全部閲覧できる。
・自分のブログ投稿は削除できる。
・非公開ブログ投稿は自分だけが閲覧でき、他者からは見ることができない。
単体テスト結合テストが書かれている。
・クエリにはインデックスが適用されていることをクエリ分析で確認する。
期間

 3week

2019/7/22 ~ 2019/8/11

 

Step11.Learn a Framework

概要 フレームワークを学ぶ
対象 ・Laravel, Symfony(PHP)
・Express.js, Hapi.js(Node.js)
今回やること  Express.js(Node.js)
期間

 1week

2019/8/19 ~ 2019/8/25

 

Step12.Practical Time

概要 フレームワークを実践する
対象  Step10で作成したアプリ
今回やること  ※テストも含むすべてを移行する
期間

1week

2019/8/26 ~ 2019/9/1

 

Step13.Learn a NoSQL Database

概要

NoSQLについて学ぶ。(RDBとどう違うか、なぜ必要なのか等)

いくつか調べて、機能とその違いを比較する

対象 ・MongoDB
・Cassandra
・RethinkDB
・Couchbase
今回やること MongoDB
期間

1week

2019/9/9 ~ 2019/9/15

 

Step14.Caching

概要 アプリケーションレベルでキャッシュを実装する方法を学ぶ。
対象  Memcached
今回やること  Step12で作成したアプリをキャッシュする。
期間

 2week

2019/9/16 ~ 2019/9/29

 

Step15.Creating RESTful APIs

概要 RESTを理解し、RESTfulなAPIを作成する方法を学ぶ。
対象  Roy Fieldingの論文原著を読む。
今回やること  -
期間

 2week

2019/9/30 ~ 2019/10/13

 

Step16.Authentication/Authorization Methodologies

概要

認証と認可の方法について学ぶ。

それぞれが何か、どう異なるか、どのような場合に使うかを理解する。

対象 ・Oauth
Basic認証
トークン認証
・JWT
OpenID
今回やること ・Oauth
Basic認証
トークン認証
・JWT
OpenID
期間

 2week

2019/10/14 ~ 2019/10/20

 

Step17.Message Brokers

概要

メッセージブローカについて学ぶ。

(いつ、なぜそれを使うのかを理解する。)

対象 ・RabbitMQ
・Kafka
今回やること  RabbitMQ
期間

 1week

2019/10/21 ~ 2019/10/27

 

Step18.Learn a Search Engines

概要 サーチエンジンについて学ぶ。
対象 ・ElasticSearch
・Solr
今回やること ・ElasticSearch
・Solr
期間

 1week

2019/10/28 ~ 2019/11/3

 

Step19.Learn how to use Docker

概要 Dockerについて学ぶ
対象 Docker
今回やること Docker
期間

 1week

2019/11/4 ~ 2019/11/10

 

Step20.Knowledge of Web Servers

概要

各Webサーバの相違点、制限、利用可能な設定項目の違いを学ぶ。

上記の制限を最大限に活用したアプリケーションを作成する。

対象 Apache
・Nginx
今回やること Apache
・Nginx
期間

 3week

2019/11/11 ~ 2019/12/1

 

Step21.Learn how to use Web Sockets

概要 Webソケットを使ってリアルタイムWebアプリを作成する方法を調べて、それを使ってサンプルアプリをいくつか作る。
対象  前ステップで作成したブログアプリ
今回やること  投稿一覧に、リアルタイムで更新を反映する。
期間

 2week

2019/12/2 ~ 2019/12/15

 

Step22.Learn GraphQL

概要

GraphQLを使ってAPIを作成する方法を学ぶ。

(RESTとの違い、REST2.0と呼ばれる理由を理解する)

対象  GraphQL
今回やること  GraphQL
期間

 1week

2019/12/16 ~ 2019/22

 

Step23.Look into Graph Databases

概要 グラフモデルを理解する
対象 ・Neo4j
・OrientDB
今回やること ・Neo4j
期間

 1week

2019/12/23 ~ 2019/12/29

 

なかなかボリュームあって、ちょっと分かりづらいですね。。。これらは後ほど、自分用のBacklogで管理する予定です。

週単位で作業計画立ててたら、バッファ期間も含めて、年内でロードマップはほぼ制覇出来そうです。実際は、もう1、2Stepありましたが、まずは上記の23Stepで。

あと、やっぱり職場でもAWSを勉強するように言われているので、AWSも勉強の対象に入れようと思います。

 

具体的になりました。あとは、この計画を実行に移すのみです。

頑張ります。

「エンジニアとして終わってる」の言葉の真意。

こんな時間ですが、ちょっと思い出したことあったので、書き留めます。

 

先日、入社後の経過面談?みたいな感じで上長と2人で話す機会がありました。入社してみた感想、今の業務で困ったことはないか、今後任せたい仕事、などなど、色々お話しました。でも、その中で心に刺さることを言われました。

 

「正直言うと、今のマイマイさんはエンジニアとしては賞味期限が切れていて、エンジニアとして終わっている」

 

最終面接の面接官の1人でもあって、私を採用したのにも関わらず、ここまでハッキリ言われると、逆に清々しいくらいでした。もちろん、いきなり、こんなことを言われたのではなく、上長がエンジニアとしてあるべき姿の考えを持っていて、それを踏まえての言葉でした。

 

上長の考えとしてはこう。

・エンジニアが1つの技術で仕事が出来る期間は長くて3~4年

・新しい技術を次々に吸収していかないとエンジニアとしての価値は下がる

・1技術のスペシャリストになる道もあるが、それは一握りのエンジニアしかいない

 

確かに、上長の考えに則れば、私はすでに賞味期限切れてますよねー、って感じで、特にその考えに違和感を覚えることなく、その言葉を受け止めている自分がいました。

 

転職活動中に薄々感じてはいたけど、Java以外に特化したものを持っていないし、SIerやSESでの経験が長かったし、ブランクが2年もある今の私は、確かにエンジニアとしては終わっているのかもしれません。はっきりと言ってもらえてスッキリしました。

 

それに、上長の言葉はあくまで「今の私」に対しての言葉であって「今後の私」に期待してくれているとも感じました。「今後の私」のエンジニアとしての成長に期待されているのだと。だからこそ、改めてエンジニアとして成長していこう、と決意し、今色々と取り組みを始めた次第なのです。

 

なんか、上長と話していると、上司と部下、の関係ではなく、エンジニアとして対等の立場で話してもらっている感じがあります。そういえば、前々職で尊敬していた先輩もそんな感じの先輩だったのを思い出します。

正直なところ、上長の仕事っぷりを知りたいけど、社員の半分以上が韓国人(上長も韓国人)の環境なので、仕事の話も韓国語がほとんどです。なので、全く仕事っぷりが見えないのがもどかしいのですが、上長は尊敬するエンジニアの1人に追加されそうな予感です。

 

これまでにない環境に戸惑うことも多い日々ですが、エンジニアとして確実にキャリアを積んでいけるように、上長からの言葉を忘れずに、精進していきたいと思います。

 

朝早くから失礼しました。

今週もマイマイペースで頑張って、楽しいGWを迎えるぞー!!