学生に限った話ではないのですが
エンジニアになってバリバリコードを書きたい!c
と夢を抱いている人は多いのではないでしょうか?
私は前職はソフトウェアエンジニアとしてWebアプリケーションの開発をしていました。
保守も新規機能開発も一通り経験し、先輩社員座談会のようなものに出してもらったりもしました。
その時、
「兎に角書きたいマン」
があまりにも多かったので今日はこの記事を書こうと思いました。
書くことに拘っている人のコードで綺麗なコードを見た試しがありません。
そうなんです。
章題にも書いたように「コードを書く作業は9割がコードを読む作業」です。
これができない人がコードを書くと
①バグる
②ダークマターになる(保守できないコード)
③化石のような実装になる
だいたいこれのどれかになります。
既にあるUtilをオレオレ実装してみたり、今後の拡張性を気にせずにコードを書いてしまったり、自分しか読めないスパゲッティになっていたり、使い物にならない処理速度の産物が生まれたり、サポートが切れる外部ライブラリを使っていたり…。
まああげたらきりがない。
兎に角9割の時間を読むことに割けない人はエンジニアにむいて居ないと言うのが僕の持論です。
追加機能開発や保守の仕事であれば、今書かれているコードを読まなければ仕事になりません。
どういった実装がされていて、そこにはどんな意図があったのか、コードを読み解いて行く作業が発生するわけです。別名「影響範囲調査」なんて呼んでいる会社もあると思います。
次に僕はJavaマンだったのでJava Docを読んでいました。
世界中で使われている言語です。
あなたが書こうとしている処理ぐらい標準装備で備わっていることが多いです。まずは、あなたが本当に自前で実装する必要があるのか考えましょう。
プログラミングっていうのは多くのケースが「部品を組み立てる作業」です。
部品を作る作業をしたいのならばOSSにコントリビュートすれば良いと思います。それでも読む作業は絶対に発生しますが。
上記の読み物を読んだらコードをかけるのかと言うと、僕はこの段階でもコードを書いて欲しくないです。
例えばUtilクラスに追加実装をするとしましょう。Functionを1つ切るとして、
privateで作りますか?
publicで作りますか?
package privateで作りますか?
どれでつくりますか?
考えることって多いのです。
一度publicで作ったfunctionはみんなが使えます。
みんなが使います。
極端な話、一生変更することが許されないfunctionと思って作って欲しいのです。
書きたいと言う気持ちだけで、
コードが書けるほどプロのエンジニアは甘くないと僕は思っています。
とはいえ
「好きこそ物の上手なれ」
です。
本当にプログラミングが好きな人は何時間でもコードやドキュメントを読んでいます。
エンジニアはプログラミング言語のプロフェッショナルです。
他人のコードから意図を読み取ったり、他人にコードで意図を伝えるのも立派なエンジニアに必要なスキルのうちの1つです。
「書きたい!」
それは素晴らしいことです。ただし、そのために必要な地道な泥臭い作業こそエンジニアの真髄だと思いますよ。
最後まで読んでいただきありがとうございます。もしこの記事を気に入って頂けたようであればシェアをお願い致します。非常に励みになります。