📆

One Week Challengeをやっていきます

2021/04/02に公開1

声明文です。

One Week Challengeとは

One Week Challenge、これ自体は僕が考えたプロジェクトです。
元ネタは下記のTEDスピーチの「30日チャレンジ」というやつ。

https://www.ted.com/talks/matt_cutts_try_something_new_for_30_days/transcript?language=ja

One Week Challengeの基本的なコンセプトは、
「手をつけてなかったけど本当は触りたかった技術スタックを一週間で区切って触ろうぜ」
というものです。
一週間ごとにテーマを決めて、仕事の隙間時間やプライベート時間でやってこう、という個人プロジェクトです。

目的

目的は触ったことない技術スタックを触ることです。
エンジニアスキルの向上ですね。
思うに、ある技術スタック(たとえばRailsやNext.jsやDockerやSwiftUIやVue.js)について、習熟レベルはだいたい下記のように遷移していきます。

はじめて聞いた

名前は知ってる

入門記事をちょっと読んだ

Hello World出した

ちょっとしたアプリケーションをつくった

それ以上の開発をしたレベル(個人開発 or 仕事)

一人前、と言えるレベル

詳しい人

僕の場合、「入門記事をちょっと読んだ」だけで止まっている技術スタックが結構あります。
別に仕事上はiOSエンジニアとして働いており、触る必要がないので、何なら一生触らなくても実務上困りはしません。
そういう状況だと、「いつか触りたいなあ」と思ってる技術スタックの「いつか」が自分で気合入れないといつまでも来ないみたいなんですね。

色んな技術スタックについて、「ちょっとしたアプリケーションをつくった」レベルまでいきたい、というのがOne Week Challengeの目標です。

前提

いくつかの前提を設定します。

  • あくまで仕事優先
  • 自分が楽しい、と感じることを優先
  • Zennのスクラップを活用して調べた情報は整理する
  • 一週間でゆるく区切る
  • ハードルは下げる
  • 挫折あり。完成しなくても良い
  • 期間は2021/4〜6くらいを想定

あくまで仕事優先

これはまあ大人として。
仕事が忙しくなってきたら「今週は中止!」カードを発動します。

自分が楽しい、と感じることを優先

新しい技術触るのって、純粋にワクワクするじゃないですか。
そのワクワク感、大事にしたいですね。

あんまりワクワクしないときもありますよね。
「あれ、これめんどくさくない?」「全然意味がわかんないぞ」みたいな。
触ってみてイマイチだったらやめます。

Zennのスクラップを活用して調べた情報は整理する

↓こんな感じでまとめてこうかなと思います。

https://zenn.dev/st43/scraps/1cfcc9e6c8379a

趣味でやってる開発作業って、突然半年中止にして、そこから再開するパターンもあって、
本業の仕事以上に自分の作業ログはしっかりとっとかないといけないと思っています。
雑に記録できるけど、それなりに見やすくて検索しやすい、というのが大事ですね。

一週間でゆるく区切る

テーマは一週間で切ります。
早く終わったら次のテーマの下調べでもします。

終わらなくても、基本次週に持ち越しはあまりしたくないですね。
「終わりませんでした!」で終わるかもしれません。
続けたければ続けるし、終わらせたければ終わる。
そんなゆるさがいいと思います。

ハードルは下げる

「実用的なアプリをつくろう!」みたいな目標だと、一週間だと厳しくなるので、基本的につくるものはショボいアプリにしたいです。
Hello World以上、実用アプリ未満のラインで。

あと「Railsチュートリアルやる」を一週間の目標にする週もあるかと思います。
ハードルはとにかく低く、低くして、実際にやってみてすぐ終わったら、途中でテーマの難易度あげてもいいわけですし。

挫折あり。完成しなくても良い

あくまで目的は技術スタックを触ることなので、アウトプットの完成は目的にしません。

期間は2021/4〜6くらいを想定

とりあえず2021年の第二四半期ぐらいでやってみようと思います。
想定ではテーマを12個ぐらい消化できるはずです。

なぜこんなことをやるのか

業務の中の開発で、ちょっとマンネリ感が出てきたので、突破口を開きたいというのが第一です。

元々ソフトウェアエンジニアになったのは、手動かしてガリガリ開発したいというのがあって、
開発自体はしてるんですけど、会社でやってるとどうしても
「偉い人がこの機能つくれって言ったから……」
「会議でGOが決まったから……」
みたいな受動的な動きになりがちで、そこに不満があります。

理想は自分で仮説立てて、自分でサービス提供して、それで生活していくところなんでしょうが、
現実的に僕にそこまでのPOWERがなく、今会社からもらっている給料と同じ額を稼ぐことは無理です。

ただこのまま会社に言われるがままにつくるソフトウェアエンジニアとしてやっていくのは厳しさがあるので、
仕事は仕事としてやりつつ、その合間で「自分がつくりたいものをつくる個人開発」をやって、ストレスを発散しようということですね。
ストレス発散、という表現がいいですね。

敵「浅く広く理解してるエンジニアより、自分の専門分野をちゃんと極めてる人の方が市場価値はあるよね?」

↑こういう主張は事実だと思うんですが、ただ市場価値だけが全てじゃないじゃないですか。

僕はこの主張を信じて、2年ぐらいiOSに集中してたんですが、たまたま仕事の流れでUnityを触ることになり、視野が広がりました。
何でもかんでも極めることはできないと思うんですが、やりたいと思ってたことは「触る」ぐらいはしないと、もったいない機会損失だと思います。

根っからのエンジニアタイプなら、「え、新しい技術出てきたらとりあえず触るっしょ?w」みたいな感じなのかもですが、
僕はその辺腰が重いので、「React、興味あります!」状態がかれこれ5年ぐらい継続している気がします。

そういう状態から脱却するためにも、とりあえず一週間ずつ、やってみようと思います。

最初のテーマ

忘れてました。
最初のテーマは「WatchOS x SwiftUIで表計算アプリをつくる」というのをやっていきます。

表計算アプリというと大袈裟ですけど、最終的にはゴルフのスコアカードをApple Watch単独で入力可能なアプリをつくりたいと思っており、
そのためにApple Watchで数字入力して、それをグラフ的に表示するサンプルアプリをつくりたいな、と。

そのあとはまだざっくりとしか決めてないですが、Railsやって、Reactをやりたいと思っています。

Discussion