見出し画像

仕事ができない感から完全脱却してみる

わたしは未だに自分が「仕事ができない」感がある。いや、たぶん思い込みじゃなくて、本当にそうだと思う。周りと比べても意味はないのだが、明らかにプログラミングのスピードが遅いし、ソリューションや思考の精緻さに欠ける。アメリカのテックカンパニーの人員削減が盛んだしいつ首になってもおかしくないと思う。

「向いていない」エンジニアへのあこがれ

アメリカで自分がしたかったことは、今度こそ胸を張って「エンジニアです」といえるようになること。何かを作れる人間になること。これは今までの人生で一度もかなっていないことだ。だから、正直なところ「向いていない」と自覚している。

だから、自分と一緒に働いているVincentに聞いてみた。彼は私よりずっと若いけど仕事をしっかりできる。私よりずっとプログラミングも素早いしロジックをよく覚えているし、複雑なリファクタリングもこなせる。

同僚の要領を得ない回答

 彼にどうしたらそういうことができるか聞いたら「このリポジトリをずっと触っていたらできるようになりますよ」と言っていた。わしは同じことしても全くそうなってへんのやけど。

実は同じようなことをほかの同僚に聞いたこともあるが、要領を得たことはない。彼らはなぜ、自分が「できる」のかあまりに自然でわからない様子だ。

転機は突然に訪れた。何とかしないといけないということで、最近は自分の時間をすべてプログラミングに費やしていたのだが、やはりうまくいかない。根本的な何かが間違っているという感覚だけがあった。

そんなとき、毎日見ている Tomo Fujita というギタリストの動画を見た。彼はバークリーで世界一流のミュージシャンにギターを教えている世界一流のギターリストで講師だ。

- Tomo Fujita USA Website (tomojustfunky.com)

「なんとなく」できているから

世界の5本指に入ったことのあるとんでもない人なのだが、彼がレッスンのビデオの中でうまくギターが弾けていないことについて次のように語っていた。

「リズム詳しくわかってないので、なんとなくできているから」

メトロノームの楽しみ方 トモ藤田の「ギターは一日にして鳴らず!」

そのあとに彼が勧めていた練習方法は、たくさんのギターの教本に乗っている方法だった。ギターを置いて、両手をつかって、アクセントをつけながら、ものすごくゆっくりのテンポから、三連符の頭、真ん中、お尻、それぞれにアクセントをつけて手を叩くこと。

自分は「あああああああ、これだぁ」衝撃的な感覚を感じた。なぜ衝撃かというと、それは、きっとギターを弾いたことある人ならみんな見たことある、誰でも知ってる練習方法だった。で、自分はそれ出来ているの?

「簡単な」ことが出来ているだろうか?

昔の自分は「そんなん簡単や」とおもって、ちょっとやってみて「ああ、できるわ」とおもってちゃんと練習したことはなかった。でも、今改めてやってみるとテンポ40でもちゃんとやろうとしたら難しい。すぐにできない。「なんとなく」だったら「出来た風」に感じるかもしれないけど。

これは自分のギタープレイにも表れている。自分は速く弾くのはできる。でも、リズムがちゃんとしていないので、簡単なストロークでも、気持ちいい演奏ができない。つまるところは、誰もが知っている「基礎」がちゃんとできていないのだ。そして、「基礎」をちゃんとやるのは「誰でもできる」ことだけど習得には「時間が掛かる」のだ。


Googleプログラマ

振り返ると自分のプログラミングも全く同じ現象だった。自分は、簡単なコードは「簡単や。すぐできる」と思っていた。実際プログラムはかけるけど、覚えていないからGoogleでサーチして、「こんな感じ」でコーディングする。一応ものはできる。でも次回も調べる。多分。で、そのプログラムって本当に「できた」んだっけ?

思えば同僚はみんな、ややこしい構造でもすぐ理解できて、まるでピアノを弾くようにコーディングする。彼らのコードレビューするときに、アトミックになってなかったり、もっとこうしたほうがクリーンコード的にいいよと思うこともあったが多分私は彼らより「時間はかかるけど、やろうとおもったら誰でもできる基礎」ができてないのでは?

新たな作戦

そう思った自分は次のように作戦を変更した。

・定時後や、週末にプログラミングをするのは変わらないが、仕事はしない
・C#の言語仕様を勉強する
LeetCode(コーディングインタビューの準備のためのサイト。プログラミングの問題が出題されて、鍛えることができる)を一番簡単なレベルから毎日やる

 時間は誰もが24時間だから、時間の割り当てを変えるのが重要なので、私は今後も当面はプログラミングを最優先する。ただ、単に同じことをやっていても自分の「プログラミングが遅い、精緻ではない」という問題の解決にならない。だから、仕事をするのではなく、自分のフリーの時間に、「誰でも知っている方法で、プログラミングを0から勉強しなおす」という作戦をすることにした。

改めてプログラミングを「はじめて」みる

 自分が今、C#のプログラミングを全く知らないとすると、何から始めるだろう?おそらく、チュートリアルから初めて、データ型や、キーワード、クラスなど誰でも知っていることを勉強していくだろう。
 だから、自分も「簡単だ」と馬鹿にせず、本当に1からやり直してみた。すると、自分が「ふわっと」わかっているけど、「ちゃんと」理解していなかったり「即座にコーディングできない」ことがたくさん見つかってきた。
 
 だから私はあわてず、急がず、期待せず、先ほどの Tomo先生が言われるように、一つ一つ読んで、コードを書くようにしている。

出来るようにする練習

 また、コーディングインタビューを受けたときに半年ぐらい準備したLeetCodeも、最も簡単なBeginnerがやるコースから始めることにした。知識だけではなく、「出来るようにする練習」が必要と感じたからだ。
 以前は、コーディングインタビューを突破するためだったので、受験勉強のような感じで「出来ればいい」というノリだったが、今は1問に時間をかけて、できた、じゃあ、これLinqで同じことしたらどうなるかな?とか考えながら複数の解法でとけるようにしたり、メモリや速度の違いを見たりしている。以前やったときは、必死で正直つらかったけど、今は簡単なことからやっているので、なんだかとても楽しい。

基礎が出来ている人は少ないのかもしれない

人生もうすこしで52年だけど、振り返ってみて「人生、この秘密さえわかれば人生一発逆転」みたいな都合の良いものはなかった。結局のところ、誰もが知っていることの積み重ねなのだ。そして、自分の同僚が「できる」ことに関して要領を得ないのは、きっと彼らからしたら「誰でも知っている、どこの本にも書いている」ことを普通にして普通にできている」からだろう。

 そして、今更思うことなのだが、誰でも知っていて、実際にじっくりと時間をかければ誰でもできる「基礎」をちゃんと出来ている人というのは少ないのではないだろうか?もしかすると、これが自分が長年探し続けている「出来ない感」の解決の最後のピースではないだろうか。

継続して様子を見てみよう。

いいなと思ったら応援しよう!

ピックアップされています

今日の注目記事

  • 36,624本

コメント

4

「なんとなく出来てる感」。心当たりがありすぎました笑
でもそこから改めて勉強し直そうとする姿勢に刺激受けました!
自分も、自分の専門の分野について見なおしてみようと思います。

"「人生、この秘密さえわかれば人生一発逆転」みたいな都合の良いものはなかった。結局のところ、誰もが知っていることの積み重ねなのだ。そして、自分の同僚が「できる」ことに関して要領を得ないのは、きっと彼らからしたら「誰でも知っている、どこの本にも書いている」ことを普通にして普通にできている」からだろう。"

おっしゃる通りですね。素敵な記事をありがとうございます。

ta4 take
ta4 take

私はプログラム専門のエンジニアではないですが、コーディング、音楽、アラフィフと共通点があり、興味深かったです。

参考になるかわからないですが、私はプログラムで新しい事をしたら、「3年後の全てを忘れた自分」に向けて最小作業例付きのノートをテキストファイルで取っています。

全部StackOverflowに乗っている事ですが、自分でまとめた作業例は2回目、3回目の使い勝手が格段に良いです。事例ごとにタイトルを考えてつけておけばすぐに検索できます。入門書に載っているような簡単な事例てもまとめてあります。

一見、「練習や仕事で書いたコードを全保存」と同じに思われるかもれないですが、私はこの自分で自分がやったことをまとめ始めてから、格段に作業効率が上がりました。やったこと全部を記録するのではなく、細かく分けて、本当に新しいところだけ取るのがミソです。

リズム感は10年後に今より良くなってる可能性がありますが、記憶力は絶対に落ちてるはずなので。

KA_O
KA_O

ほんとに、基礎を極めることが1番難しかったりしますよね。逆に基礎ができていると安定感と応用力が違う。頑張ってください!

ログイン または 会員登録 するとコメントできます。
米マイクロソフトの Azure Functions プロダクトチームのシニアソフトウェアエンジニア。シアトル在住。Serverless, DevOps, Agile などソフトウェア開発のよりよいやり方に興味があります。ブログは個人の意見であり所属会社と関係ありません。
仕事ができない感から完全脱却してみる|牛尾 剛
word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1