zizynonnoの日記

書き殴りな記事が多いですが、それは自分が「凝り性で完璧主義な書き方をしがち」なので「いつまで経っても記事が完成しない」ことへの対策です。時間のある時にきっちりかっちり成形します。よろしくお願いでごわす。

保守開発の修正業務

① 課題の把握と、修正後のどういう挙動を示すかを予想し把握する

② (ソースコードの成り立ちがわからなければ)実際にデバッグで動的に動かしながら、ソースコード全体の中のどの箇所を直せばいいか。大まかな場所(ファイル、クラス単位で)暴く

③ 暴いた箇所のソースコードを1行1行、意味を理解しながら追っていき、現在のソースコードの課題を見つける

④ ①〜③からどこを直せばいいかを仮説検証を行いながら行動していく。

プログラミング初心者が仕事に価値を生む方法

## 結論

実験表を作る。実験内容と前提条件を書き込み、その結果がどうだったかを記載する。メリットとしてここまではやったけど失敗したんだなという証明を紙に記し、上司が考える選択肢の幅を狭める。最低限の時間分の働きはできるようになる。

 

## ダメなパターン

悩んでトライして時間だけ過ぎたはいいけどどこまでやったかを説明できないこと。自分の人月が無駄になる。

 

## 実験表の例

デバッグの表を参照

新しく技術モジュールや技術用語を学ぶ時

意識

習熟期間とどのくらいの習熟度になっているかの終わりを決めて、そこ以内に必ず終わらせる意気込みでやる

  方法 メリット 期間
1 Webや書籍など複数の文献にあたり、DMACで内容をまとめる。 偏った意見を排し、情報の重心を掴む 半日(4~6時間)
2 文献等で分からなかった点をもくもく会や上司にその技術について質問をし、本質的な理解をする。分かった点をDMACに追記する。 学んだことが正しいかを理解できる。 1をしている途中に適宜実行。
3 1,2を同時並行で実際に技術を使ってみる。分かった点をDMACに追記する。 実感での理解ができる 軽いものなら1日、量のある題目なら7日

ガンプラでいう足を完成させただけなのに、「プログラミング最高!!!」となる入門書について

Hello World!が表示されました!」「URLがサイトに表示できるようになりました!」とか「ページ分割できるようになりました!」といったパーツを完成させることを、あたかもそれができると楽しい!最高!というニュアンスで書く参考書やサイトをよく見かける。

 

しかし、「URLがサイトに表示できるようになりました!」みたいなものは、現在作っているWebアプリの中のパーツの一部を作ったにすぎない。ガンプラでいうと「足のパーツができました!」みたいな感覚だ。

 

Hello Worldだって、言ってしまえばただ文字が出てくるだけだ。

 

「おっし、ここまできた。」みたいな達成感みたいなものは確かにある。それなりにテンションも上がるが、それはガンダムの足のパーツを作った達成感であって、道半ばである。

 

しかし、巷の入門書や入門サイトでは足を作っただけで「プログラミング最高!!!」「みんなもプログラミングやろう!!!」みたいなパリピで陽気な文体とテンションで迫ってくるので、(あれ...この文体ではあたかも足を作っただけで死ぬほど楽しいのがエンジニア界隈では常識みたいなテイストでかかれてるけど、書かれてるテンションほど楽しくない...)という違和感を感じ、自分の不向きを悟ってやめていく人が多いのではないか。

 

今から20年前のインターネット黎明期。インターネットが当たり前ではないようなホームページ全盛期の人にとって、ページ分割の機能を追加して表現方法を増やすことはとてもロックなことだと推察できる。なぜなら、インターネットが当たり前ではないから。その機能の拡張にレア感があったから。

 

それが今ではみんなインターネットやスマホを使っていて、「ページ分割の機能」なんて機能は当たり前に存在する。空気みたいなものだ。それを実装することに対して何か特別な感情を抱いたりしない。

 

入門書を書く人の年代なんてどう見積もっても30代以上のそこそこ経験を積んできたエンジニアであると推察できるので、当時の熱量で「ページ分割の機能が追加できる!!」「プログラミング楽しい!!!」みたいに入門書に書いてあると、今の若者にとっては熱量の差に違和感を感じるのだ。

 

さて、「ミスマッチを自分で勝手に察して離れていく」を防ぐには表現を抑えるという対処法もあるとは思う。それと同時に私は「この技術を習得するとこんないいことがあるよ!こんな広がりがあるよ!というメリットを明示的に提示すること」を提唱したい。

 

「明示的に」が大事だ。

 

例えば「ページ分割の機能が追加できる」であれば、

 

これはブログなどのWebサイトに使われる技術で、ユーザーがサイトを見やすくなるメリットがあるよ!見やすくなると離脱率が低下して、たくさん広告を見てもらえたり商品を買ってくれるよ!結果的にあなたが儲かるよ!

 

のような金銭的アプローチや、

 

「ページ分割の機能が追加できる」ことによって「この人はこれだけの技術力を持っている。だからすごい。転職市場でも有利だし、転職先でもヒーロー扱いだ!」

 

のような技術者の承認欲求を刺激するアプローチなどがある。「ページ分割の機能が追加できる」は適宜、自分の知ってる難しい技術に脳内変換して頂きたい。

 

確かに、ある程度IT業界で経験を積めば、どの技術がすごくてどの技術が当たり前かなどの審美眼が身につく。自分の中で技術を習得するメリットを作り出せる。なので「あの技術を習得しよう!」ともなる。すごくわかる。

 

しかし、相手はなにぶん初心者だ。変化も早く、業務範囲が膨大になりつつあるIT業界において、チュートリアルの段階でマイルストーンや目に見えるモチベーションくらいは提示しないとイヤになってやめてしまう。

 

魔王を倒すのに、地図とコンパスと目に見える宝物くらいは欲しい。それができなければ、IT業界の人手不足は一生なくならないのではないかと感じる。技術を習得するメリットがなければ、技術を習得しようと思わないからだ。

 

そんなことを2018年のエンジニア1年目に思ったことがあったので、記載。