若手ソフトウェアエンジニアが感じる不安

この記事を読んだ。

実装できる人がいない?大丈夫かこの業界 - orangeitems’s diary

コンピュータを詳しく知らず、色んなツールを組み合わせることしか出来ない人が増えてるのでは?と提言している。

IT業界を知らない方のためにもう少し補足する。IT技術はどんどん簡単に扱えるようになっている。コンピュータの仕組みが分からなくても、やりたいことに対してカタログのようにツールを選択して組み合わせることで実現できたりする。

私が怖いのは、具体的な仕組みが分かってなくても、動くものを作れてしまう事だ。40代くらいの人たちはインターネットの発展をその目で見てきたので、コンピュータの仕組みを理解しているだろう。だから、新しいツールが出てきてもすぐにキャッチアップ出来るし使いこなせる。何なら、前のツールとの比較も出来るので使い勝手のイメージもすぐつくだろう。

しかし、我々若手は勉強しなければ身に付ける機会がない。なぜなら、仕事ではコンピュータの仕組みを理解する機会を直接得られないからだ。仕事では出来るだけ簡単に成果を上げることを求められるので、出来るだけ便利なツールを使うことを推奨される。そういったツールは出来るだけコンピュータの仕組みを理解せず使えるようになっているので、コンピュータの仕組みを理解する機会を得られない。

だからこそ、意識的に勉強していく必要がある。そうしないと、既存のツールで出来ないことは解決できない。加えて、いい設計も出来ない。システムは動けばいいんじゃないの?と思われるかもれないが、そうではない。システムは安定して動かし続ける必要があるし、機能追加や変更もしやすくしなきゃいけない。これらの要求を実現するには、良い設計をする必要がある。そのためには既存ツールを使うだけじゃなく、中身や思想を理解して使わなければならない。

という背景があって、私も具体的な仕組みが分からない状態は怖いと思っている。だから、出来るだけツールを深く理解するようにしている。例えば最近だと、WebSocketプロトコルRFCと呼ばれる仕様書を見ながら作ったりしている。若手も少しずつ深い部分を理解していく必要があると感じる。そうしないと新しく入ってくる若手に取って代わられてしまうだろう。

 

ブログを2ヶ月書いてて分かったこと

大体30記事くらい書いた。結構好き勝手、思いのままに書いてる。ブログ書いてることだけが原因じゃないと思うが、自分の思いが明確になってきた気がする。

・せっかくなら仕事では色々挑戦したい。

・プライベートも楽しみたい。自然が好き。

・もっと技術を理解したい。特定の分野とかは決めてないけど、とにかくもっと知りたい。

この辺あたりかな。

このブログでは日常の考えを書くことが多い。ぼやーっと考えてることを言語化しているので、自分にとって気持ちを明確に認識できるようになってきた。

そして気持ちを明確に認識すると行動も変わってくる。現に仕事ではもっと行動的になり、プライベートも自然がある場所に行く回数が増え、技術を勉強する時間も増えた。多分、自分の考えと現実にギャップがあるのに耐えられなくなって行動できてるんだと思う。

元々は言語化能力を高めようと思って始めたブログだけど、自分の考えの言語化を繰り返すことで、少しずつだけど日々の行動まで変わってきた。これは実際に書いてみないと分からなかったことだ。これからもブログを書き、仕事でもプライベートでも色々やってみて、新たな発見をしていきたい。

タイパなんて判断できるのか

だいぶ前からタイパという言葉が流行っている。だけど、そんなこと判断できるのか、と思う。

タイパとは短時間で良い結果を得るということだと思うのだけど、良い結果を得るの判断がすごく難しいと思う。なぜなら、今はすぐ役に立たないけど将来役に立つこともあるはずだからだ。つまり、良い結果には時間軸の観点も含まれる。未来を見通すことなど出来ないのだから、現時点で未来も含めた良い結果なんてわからない。だからタイパの判断は難しいどころか出来ないと思う。

例えば、新卒でホワイト企業に入った人と、残業がすごく多い企業に入った人がいるとする。一見、ホワイト企業の人が良さそうだ。だけど、残業が多い企業に入った人はたくさん経験を積んで能力を高められてるかもしれない。確かに短期的には辛いかもしれないが、長期的に見て生きやすいだろう。世間でいうタイパの観点ではホワイト企業だろうが、長期的な観点を持てば、人によるけど残業が多い企業の方が良いかもしれない。

このようにタイパなんて判断できない。タイパなんて考えてる暇があったら、何か手を動かして作って世に出すのが良いと思う。その過程で得た知識は無駄にならないし、もしフィードバックを得られれば最高だ。人からの反応はモチベーションになるし、フィードバックに有益な情報が含まれていれば学びにもなる。

偉そうに言ってるけど、私もつい効率的に進めようとしてしまう。効率的に進めようとしすぎて身動き取れなくなることがある。無駄になるのが嫌だからだ。そういう時こそ、まずやってみて、人にぶつけて、フィードバックを得よう、と自分に言い聞かせてる。このブログもその一つだ。とにかくやってみよう。

 

やって得られる情報量はすごく多い

タイトル通りだが、やって得られる情報量はすごく多い。私はできるだけ効率的に進めようとする癖があるので、このように考えてないとつい考えすぎてしまう。

最近感じるのは、軽く方針を立てたら作業してみる方が早いということ。作業して得られた情報を方針にフィードバックする。言葉にすると当たり前だけど、私にとっては中々難しい。考えすぎてしまったら、いつのまにか作業を達成することが目的にすり替わってたりする。私の場合は前者が多いので、とにかく作業するようにしている。

仕事だけじゃなく勉強にも当てはまる。ソフトウェアエンジニアをやっていると、色んな技術が出てくる。どれもこれも合わなきゃいけないような気もするし、色々手を出したら中途半端になる気もする。じゃあ優先順位つけようと思い順位づけするんだけど、本当にそれでいいんだっけと不安になる。みたいなことが自分にはよくある。

そういう時はとにかく作業する。何か作ったり本を読んだり。そうして得られた情報をもとに優先順位を変更する。一定の理解度になるまでやると知識も無駄にならないので理想的だ。

最近はパフォーマンスチューニングに興味があり、isucon本に取り組んでいる。取り組んでるうちに、WebSocketとかGolangとか他にも興味あることが出てきてしまった。なので早く一定理解まで進めて、次なることに取り組んでいきたい。

ちょっと散文になってしまったけど、言いたかったのは手を動かし続けるのとの大切さ。多分ゴールに対して最短で行くのって現実だと中々難しいので、螺旋状に進んでいくのではないか。下手したら下ってるときもあるかもしれないけど、長期的にみて前進してればいいんじゃないかなと思えるようになってきた。ずっと何が正解か分からず不安でいるのも勿体無いしね。そうやって今のうちに色々経験しておいて、30代に備えたい。

 

すごく気持ちが乗らない時も仕事に行くと、意外と楽しい

基本的に社会人は平日は仕事に行く。プライベートでよほどのことがない限り行く必要がある。しかし、1年に1回くらい、どうしても行きたくない時がある。

そういう時はとにかく基準を下げる。会社に行くだけで良い、なんなら、外に出るために着替えれば良い、みたいに。それくらいならやってみるか、と思えたら少しずつ動く。そして出社する。出社できたら自分を褒める。

次は簡単な作業から着手する。うだうだ言っててもやる気は出ないので、とにかく手を動かす。するとだんだん集中できてきて、気分が少しずつ乗ってくる。

そして一見不思議なのが、こういう日こそ進捗が出る。理由としては、仮説だが、何か物事に詰まってると仕事に行きたくなくなるんだと思う。それが徐々に蓄積されて最終的に会社に行きたくないほど強いネガティブな気持ちになる。しかし、実はその間も考えてるから解決に進んでいて、あとはやるだけみたいな段階になってるのだと思う。つまり、このやるだけになるタイミングと、私が強く仕事行きたくないと思うタイミングが被るんだと思う。

そう考えると、進捗が見えるってすごく大事。今までは機能開発が多かったので進捗は分かりやすかったが、最近は研究開発寄りなので作業して必ず進捗を得られるわけではない。進むっちゃ進むのだが、必ず成果を産むわけじゃないということだ。

少し話が脱線したが、やる気が出ない時は、やることを分解して簡単なことから少しずつ進めて、進捗感をデザインすること、大事になると思う。

休日くらいは東京から離れてみる

私は東京に住んでいる。プライバシー観点から地名は言えないが、かなり人が集まる場所に住んでいる。

こういう場所に住むと、徒歩圏内に生活に必要なものは揃っている。飲食店はたくさんあるし、スーパーもある。カフェもたくさんあるし、洒落た服屋や商業施設もあるので、本当に困らない。めちゃくちゃ便利だ。

便利なんだけど、いくつか不満がある。まず、徒歩圏内に全てがあるということは、徒歩圏内に詰め込んでるということだ。元々田舎に住んでた身からすると、かなり窮屈に感じる。遠くを見ても、ビルばかりだし、同じような景色が広がっているので、何だか気が滅入る。

次に人が多すぎる。カフェに行こうにも、商業施設に行こうにも、みんな考えることが同じなので、とにかく人が多い。渋谷や新宿なんて休日に行けたものじゃない。それ以外の場所にも人が集まっているので、休日に人を避けて出かけるのが難しい。

あとは臭い。申し訳ないけど、栄えている場所、特に飲食店が多い場所は本当に臭い。条例で禁止しないのが不思議なくらい臭い。なので、できるだけ近寄らないようにしている。

最後に、自然がなさすぎる。会社や人が集まりすぎてるので当たり前なんだけど、自然のような金を産み出さないものがどんどんなくなっている。ちゃんと情報を追ってないが、明治神宮の樹木伐採もその流れだと考えている。

総合すると合理的に設計され過ぎた都会に人間が集まりすぎており、休日も同じ行動を取るから色々歪みが起きてる、のではと仮説を持っている。

上記のことが、結構ストレスになるので、月に1回くらい田舎に出かけるようにしている。大体長野県が多いが、今日は甲府に来てみた。東京からなら特急で1時間30分くらいで着き、手軽に行けるのが良い。甲府駅はほどほどに栄えているし、少し電車に乗れば温泉も行ける。周りを見渡せば丘や山が見えるので、すごく落ち着く。

というわけで、東京に住んでる人もたまには田舎に行くのも良いのでは、と思った話でした。

なるべく理論を理解して、仕事する

何かに習熟する際に大事なことの一つに、理論を理解し実践すること、があると思う。ただ実践するのと、理論を理解して実践するのとでは、成長角度にすごく差が出てしまう。

私は大企業に勤めたことはないけど、多分大企業に勤めるメリットはここにあると考えている。大企業ではある程度仕事が型になっているはずで、その型は職務内容の理論に基づいてるはずだ。したがって、大企業に入れば、仕事を通じて自然に理論に触れられると思う。もちろん、ちゃんと理解するには自学自習も必要になると思うが。

ところが、ベンチャー企業だとそうはいかない。そもそもそういった仕事の型を自分たちで作っていく必要がある。そのためには事前に理論を知っておく必要があるし、少なくとも、この仕事にはこれを勉強しなきゃ、と気づく必要がある。自分で気づくのは結構難しい。だから、世の中にはメンターがいるんだと思う。困りごとを聞いて、この辺の知識が必要だよ、とか、こういうことやってみたら?と進むきっかけを与えてくれる存在はとてもありがたい。逆に、あまり理論を知らない、かつ、気づかなかったり教えてくれる人が居ない場合は、苦労するはずだ。

私がこのことに気づいたのは大学のソフトテニス部に入って、4年生になった時だ。その当時あまりにも上手い1年生が入ってきたので色々話を聞いてたら、彼には技術や試合運びにきっちり言語化できる理論を持っていることが分かった。ベースの理論や中学や高校で身につけ、実践しているから強いのだと分かった。

もちろん、こういった理論に自分で気づける人もいるだろう。そういう優秀な人もいる。しかし、自分で気づくよりも学んだ方が早いのだから、学んだ方が良いと思う。

話が長くなったけど、とにかく最初ほど理論を学んだ方が良い。何から学べば良いか分からない場合は、優秀な人に聞いたり、ネットで調べてみれば良い。特にソフトウェアエンジニアをやっていると、知識と習熟度によるパフォーマンスの差が大きいので、常に精進していきたい。