言いたいこと
IDEがあるんだから、それを使ってほしい。
オンライン講座だって充実している、という事実にも目を向けるべき。
導入
知り合いの新卒の人から聞いた話。
…ん?
今時そんなことやるのか?と思い、昨年別のところでJava研修を受けた後輩に、どういう研修だったのか聞くと、
え、そういうものなの?とカルチャーショックを受けました。
開発ツールが充実しているこのご時世に、なんでそんなことやるの?と、正直思いました。
テキストエディタでプログラミング研修する意味が分からないので、なぜ止めたほうがよいか、私見で書いてみます。
事前に
テキストエディタと言っていますが、編集以上の機能を持っている、Visual Studio Code
やVim
等は除きます。
書いたソースをデバッグできなかったり、チェックする機能がないものを、テキストエディタと呼んでいると思ってください。
本質的ではない部分に時間を取られる
何よりこれです。
コーディングに集中しづらいです。
コーディング時
タイプミスをしても、誰も教えてくれません。
もちろん、プログラミング始めたばっかりの頃は、タイプミスに気を付ける必要はありますが。
ソースコードという、未知の文字の羅列を相手にしているのに、その中からタイプミスを見つけるのはとても大変です。
研修の時は、とにかく答え通りに書いて動かす行為を繰り返します。
タイピングだって大変です。決まり文句ぐらい、ささっと入力できたほうが良いです。
Visual Studio
のIntelliSense
とまでは言わないまでも、入力補助ぐらいあっても良いと思います。
そもそも、業務でそれなりにプログラミングやってきた人間だから言いますが、構文エラーなんてしょっちゅうやる*3ので、入力補助があると、エラーが減って大変助かります。
むしろ、IDE等の機能をある程度知っていてもらわないと、後からその学習コストも必要になるので、高機能なものを使い慣れているほうが良いです。
実行時
cd 'ファイルの親ディレクトリ' javac Main.java java Main
みたいに、わざわざコマンドを入れる必要があります。
はっきり言って、手間です。ファイルが増えると、さらに手間です。
学習上、トライ&エラーを繰り返すのはとても大事です。
IDE等を使えば、ボタン一つで実行までできるのに、わざわざそれを妨げる方法で研修するのは、悪手としか思えません。
現実では、テキストエディタでコーディングしない
つまり、研修が実情とかけ離れています。
どのエディタが好きか、という部分は宗教論争が始まるので特に言いませんが、少なくとも、テキストエディタでコーディングしません*4。
普段使わない言語のソースを読むとき用に、シンタックスハイライト*5が充実しているエディタが一つあると助かる場合はあります。
現実で役に立たない方法を教える研修って、役に立つのでしょうか?
…違うIDE使ったら役に立たないじゃないか!という意見はありますね。テキストエディタよりマシだと思いましょう。
今や、無料で使えるWebのエディタのほうが、コーディング用途では便利です。
Progate
やPaiza
は、無料で使える部分だけでも、使いやすい*6と感じました。
インデントが揃わない
ソースの可読性という場合、観点は二つです。
- プログラムの構造
- 文書の見た目としての美しさ
Python
がインデントルールを強制した*7ように、見た目で誤解を与えないソースは、ソースを読む労力を下げ、また、書きやすくします。
とはいえ、プログラミング未経験の人にインデントを守れ!なんて言っても、そんな余裕はない場合があるので、やはりエディタの補助はあったほうが助かります。
フィードバックが遅い
これは、前に書いたものと共通する部分はあります。
書いて即実行できる、というのは、トライ&エラーを助けます。
テキストエディタを使っていると、保存→実行が必要なため、すぐに実行できません*8。
『テスト駆動開発』では、
テストをすぐに走らせれば、ミスをしでかす確率が減っている実感が得られ、結果的にストレスが減っていく*9
という言葉があるように、テスト実行というフィードバックを、即時に得られる利点が挙げられています。
テスト駆動開発を行えるような技術者であってもそうなのです。
なのに、研修を受けるような初心者に、わざわざフィードバック効率が悪い方法でコーディングさせるのは、いかがなものかと思ってしまいます。
(結果的に)プログラミングが嫌いになる
上のような、良いとは言えない状況で教えられると、結果的にプログラミングが嫌いになるように思います。
とにかく苦行続きなので、研修内容次第では、本当に得るものが無いです。
じゃあどうすればいいの
Progate
とかPaiza
とかの、オンライン講座を法人契約すればいいんじゃなかろうか、と思います。
プログラミング学習だけなら、それで十分です。
おわりに
テキストエディタでのプログラミングは、普通はやらない。これに尽きます。
普通はやらないことを研修でやる意味とは、と考えてしまいます。
私も、Python
でプログラミングするときはVisual Studio Code
(たまにJupyter Notebook
)を使いますが、あれはもはやテキストエディタではないぐらいすごいです。
いいツールを使って、いろんなことできるの知って、プログラミング楽しい!って思ってほしいです。
新人を潰すようなクソ研修は滅べばいい
口が悪いですが、何のための研修なのか、研修実施側も受講させる側も、よく考えてほしいです。