Site icon imageTomoMemo.dev

Memo on programming for Junior SWE. Provided by Tomo with passion.

成果を出すために、まず量をこなす

母校の先生が書いていた記事を読んで、あらためて気づきを得られたので言葉にしておきたい。

こちらは思うように成果が出ず、日々悶々としている2025年5月に書いた。1年後の自分はどんなことを考えながらこれを読むのか、楽しみ。

24時間は誰もが平等に持つ資産

概念として、人に与えられている1日の時間は24時間。

住んでいる場所、勤めている会社、通学している学校、家庭環境、、関係なく誰もが平等に持つ資産。

これを踏まえて話を進める。成果を出すために、24時間をどう使うのか?

ここでいう成果とは、目標を達成すること、と定義する。

ゼロからイチを生み出す、収入を上げる、など多種多様に存在する。

行動目標を立てる【定量化】

目標を立てる、つまり目的地を明確にする、これはマラソンでいうゴール地点を決めることと同義。ゴール地点がないと、どこに向かって走ればいいかわからなくなる。

マラソンを例に出したので、そのまま話を進めていくと、1秒でもタイムを縮めたいのだからゴールがどこか走りながら探していると余計にエネルギーを消費してしまうため、燃費が悪くなる。結果として、ゴール地点に辿りつくことが遅くなる。

最近、仕事でこうなりがちだった。解像度が…とかウンタラカンタラ話していたこともあったけど、難しく考えすぎていた。

では、10km走ることがゴールだとすると、10km走れた日はゴールに到達している。9km走れた日は1km足りないのでゴールに到達していない。

開発のゴールはデプロイ・本番環境へリリースすること、とも定義できる。運用保守もあるけど、これは一旦省略。

そのために必要なのは、要件定義、外部設計(基本設計)、内部設計(詳細設計)、実装、テスト。これらの要素が必要となる。

では、要件定義に必要な情報は…?外部設計に必要な情報は…?…(略)。

これらがゴール地点への到達に必要なマイルストーン、ゴールまでどれくらい進んでいるのかの目印となる。

当たり前といえば当たり前だが、念のため言葉にするなら、ゴール地点を決めて、今自分はゴール地点から何キロメートル離れたところにいるのか?現在地を知る。ここから行動目標の設定が始まる。

やったのかorやってないのか

できる、できないではなく、やったか、やってないのか。これを指標にする。

そもそも、”できないこと”を目標にしてはいけない。

なぜなら、できないことを目標にすると字の如くできない。これは目標というか、最初から達成することを前提に考えず、ただ壮大で絵空事の目標を語る自分に満足しているだけ、とも言える。

ただし、今の自分にはできなさそうだけど、行動を変えて行けばできそうな目標を立てるのはあり。

壮大な目標を立てる前に、その目標に対して今日からできるスモールスタートは何か?こちらを踏まえて出来そうなら目標に設定する。

量にこだわる

量をこなす。時間をかければ成果が出る確率は高い。結局のところ、物事はどれだけ時間をかけられるのか?

未経験で事業作りを通してプログラミングを学び、資金調達はできなかったが、プログラミングスキルを活かしてキャリアチェンジし、理想の環境を整えるために転職、今に至るまでプログラミングへの時間は相当数費やしてきた。

幼い頃からプログラムを書いてきた人と比べたら、めちゃくちゃコードが書けるわけではない。しかし、ゼロの状態を1にすることはできた。

するとどうなるのか、質が上がってくる。

「量」をこなすと「質」が後からついてくる

「量は質を凌駕(りょうが)する」。ドイツの哲学者、ヘーゲルは「量質転化の法則」を唱えた。

これは、量を積み重ねていくと、質的な変化が起こるということ。

質を高めたいのなら、「質が変化するまで量をこなす」ことが根底にある。

これを学術的に提唱したのは、K. Anders Ericsson(K. アンダース・エリクソン)。フロリダ州立大学の心理学教授。「意図的練習(Deliberate Practice)」の概念を提唱した人物だ。

何でもできてしまう天才肌の人は例外として、ある音楽大学の例を出す。これは1万時間の法則(The 10,000-Hour Rule)とも言われている。

楽器の演奏スキルが高いグループ、低いグループに分けて、それぞれのグループのこれまでの練習時間を集計してみた。

簡潔にいうと、スキルが高いグループはみんな総練習時間が1万時間を超えていたという話。

音楽の世界だと、才能がものをいうと考えている人も多いはず。しかし、実際には才能以上に、物事の上達には長時間の修練が欠かせないということ。

親が幼少期からの英才教育をしたがるのも頷ける。おそらく親は1万時間の法則を知っているのだろう。

この研究を踏まえると、ある程度の才能の差は量をこなすことで差を縮める、押し切ることができるのだ。

専門家としての卓越性を獲得するためには、単なる練習ではなく、特定の目標に基づいた集中的で困難な練習(意図的練習)が不可欠であることも抑えておきたい。

https://psycnet.apa.org/record/1993-40718-001

プログラミングにも同じことが言える。大天才は例外として、基本的に高いスキルを持つソフトウェアエンジニアはコードを書く時間をしっかり確保している。

コピーライターがスキルを上げるために文字を書くことと同じように、ソフトウェアエンジニアの核となるのはプログラミング。背景となる考え方云々はもちろんあるが、コードを書かないと開発はできない。

プログラミング時間を確保しないと、技術的なスキルを上げることはできないのだ。

私と同じように、未経験からプロのエンジニアを目指す人はなおさら。既に先に進んでいるエンジニアを追い抜くには、そのエンジニア以上のプログラミング量が必須となる。

寝ている時間、ジムに行く時間以外は、基本的にコードを書く時間を確保すること。(がんばれ。応援している。)

覚悟・執念・ユルさ

精神論と言えば精神論。覚悟と執念は必要。限りある人生の中で、成果を出したいと思うのなら、一刻も早く成果を出したいはず。

ダラダラと月日を過ごしていると、いつの間にか半年、1年、5年…とあっという間に時間は過ぎていく。

諦めたらそこで終了。諦めない限り、あなたが実現したいことの多くは実現するだろう。

とはいえ、人生も謳歌したいものだ。その中で必要なのは、「ユルさ」。

0か100かで物事を決めるのではなく、30~50%の割合でも進めばOKという考え方。

覚悟と執念を持ち、どれだけユルさをもちながら、かつ諦めず前進し続けられるか。

人生は短距離走ではない。マラソンだ。まだまだ若造の分際だが、一丁前に言っている。これは10代で気付けた。

覚悟と執念を持って前進するのはいいが、注意点がある。

「選択と集中」、「分散と保留」

人間、特に社会人の24 時間は、すでに何かしらの予定で埋まっている。

 7h      8h     2h    3h   4h
 睡眠     仕事   筋トレ 食事  息抜き
------|--------|----|-----|------

限られた時間の中で何をやるか選び、どれだけ集中できるか。量を重視するならこれは土台となる考え方。

ただ、選択と集中にこだわりすぎると、それ以外のものに目を向けられなくなる。こうなると何が起きるかというと、自分にとって不得意なことをし続けている場合、そしてそれが自覚がない状態でやっている場合、修正することが大変になる、ということ。

だからこそ、分散と保留という視点もあるといい。これは分野の選択、やり方の選定など、取り入れ方は多岐にわたるので違う記事でまとめていきたい。

無駄に思考せず、行動に集中する環境をつくる

目の前のことに没頭しよう。いかに目の前のことに没頭、没入できるかが、あなたの次元を上昇させるきっかけとなる。

思い悩むことがある場合、もしかすると暇な時間が多くあるから、かもしれない。

行動に集中できる環境を整えよう。

参照

https://zenn.dev/taroosg/articles/20240703145044-0ccd8781820322

Powered by Tomo with passion.