あなたはプログラムを高速で仕上げる人に会ったことはありますか。「高速」というのは、普通のエンジニアのだいたい2倍速を指しています。もし会ったことがあるのでしたら、きっと彼らのように自分も書けるようになるためにどうすればよいか、と考えたことがあるでしょう。
- タイピングの速度を上げるのはどうか
- 過去の案件で使える部品を、事前に用意しておいてはどうか
- 調べる時間を極力減らして、書くことだけに集中すればどうか
このようなことを考えたかもしれません。もちろん、どれも有効な方法です。しかし、一定レベルまでの速度アップが期待できますが、高速エンジニアには及びません。もしかしたら、彼らはあなたよりもタイピングの速度は遅いにもかかわらず、短期間で開発を終わらせているかもしれません。
なぜ、これほどの違いが生じるのでしょうか?
違いは、フローチャートの仕上げ方にある
高速エンジニアとあなたの決定的な違いは、フローチャートの仕上げ方にあります。
お客様と打合せをしているシーンを例に挙げて、見比べてみましょう。
まずは、普通エンジニアの場合です。
普通エンジニアの場合
あなたは、次に作成する予定の画面の詳細設計書を読んでいます。機能の概要や入力情報、出力情報などを一通り読み終わって理解したら、コーディングに入ります。そしてどう実装するかのフローを考えながら1処理ずつ作成していきます。途中、不明点が出てきた場合は都度確認して処理を修正します。技術的な課題もなく作業を進めていきます。
よくあるシーンです。何も問題はありませんし、順調に進んでいる様子です。
では、続いて高速エンジニアの場合です。
高速エンジニアの場合
高速エンジニアは、次に作成する予定の画面の詳細設計書を読んでいます。機能の概要や入力情報、出力情報などを一通り読み終わった段階ですでに頭の中にフローチャートはできあがっています。仕様のあいまいな点を確認した後、考えたフローに沿ってひたすら手を動かします。
これが、普通エンジニアと高速エンジニアの違いです。高速エンジニアの仕事の仕方の方が、明らかに速くなるということを分かっていただけるでしょうか?
決定的な違いは、以下の2点です。
フローチャートができるまでは、コードを書き始めない
家を建てるときのことを考えてみましょう。
あなたは、念願のマイホームを買い、家ができあがるのを今か今かと待ちわびています。
そして、あなたはそのそわそわした気持ちを抑えきれず、建築現場に実際に足を運んでみました。
すると、現場では何やら話し合いがされています。
リーダー:このあたりに大黒柱を立ててみようかと思うんだが、どうだろう?
メンバー:とりあえずやってみますか。違ったら後で戻ってくれば大丈夫でしょう。
あれ?ちょっとおかしいぞ・・・
と思うのが、普通だと思います。家を建てるときは、設計図に従うはずだからです。なんとなくの位置に柱を建てることなど、言語道断です。
これと同じことが、先ほどの例でも起きています。
普通エンジニアは、フローを考えながらコーディングをしています。
高速エンジニアは、フローを考えてからコーディングを始めています。
この違いはとても大きいです。見通しが立たないうちは、むやみに動かず頭を使いましょう。
最近はとりあえずやってみることを重視する風潮がありますが、コーディングは細かいところまで注意しなければできない仕事です。「とりあえずやってみる」と「細かいところまで注意する」は、相反する特長が多く、両立が非常に難しいです。
フローチャートができるまでは、コードを書き始めない。鉄則です。
フローチャートを考える速度が圧倒的に違う
2つ目の違いはこの点です。
普通エンジニアは、仕様書を読み終わっても全体の作業イメージを立てられていません。
高速エンジニアは、仕様書を読み終わった段階で全体の作業イメージを詳細に立てています。
「仕様書を理解した」の言葉の意味が2人の中で異なる、と言えばそれまでですが、単にその言葉だけで片づけることはできません。
仕様書を読み終わったタイミングでフローチャートを頭の中で仕上げろと言われても、普通エンジニアにはとても難しいことだからです。
実際、高速エンジニアはお客様と打合せをしている段階で、すでにフローチャートやDBのレイアウトが頭の中で出来上がっています。何がポイントで、難しい処理が要求される点はどこかが分かっているのです。
高速エンジニアは、仕様の会話をした後にすぐパソコンに向かってコードを書き始めています。それを見て、それを見て、フローチャートを考えるよりも先に手を動かすことが大事だと勘違いしないでください。
あなたと違い、彼らはすでにフローチャートを考え終わっています。だからコードを書いています。
どうすれば、高速エンジニアになれるのか?
当然ですが、このレベルにすぐにたどり着くことはできません。訓練が必要ですし、さまざまな経験も必要となるでしょう。技術的な知識も要求されることは多々あります。
しかし、あなたが高速エンジニアになりたいのであれば、まず何から始めるのが良いかと言うと、
- コードを書いてみないと、どう動くか分からない
- 書いたコードを実行してみないと、合っているか分からない
と言うのをやめることからです。フローチャートが出来上がる前にコードを書き始めるということを続けている限り、このレベルには到達できません。
まずは、フローチャートを紙に書きながら悩みまくってください。そして、慣れてきたら頭の中でそれをできるようになりましょう。
1つ1つの訓練が、あなたを高速エンジニアへと導いてくれます。