SE(たぶん)の雑感記

一応SEやっている筆者の思ったことを書き連ねます。会計学もやってたので、両方を生かした記事を書きたいと考えています。 でもテーマが定まってない感がすごい。

プログラミング研修でテキストエディタ使うのは止めるべき

言いたいこと

IDEがあるんだから、それを使ってほしい。
オンライン講座だって充実している、という事実にも目を向けるべき。

導入

知り合いの新卒の人から聞いた話。

Javaのプログラミング研修で、テキストエディタ*1で書いたソースを自分でコンパイルして動かしています。

…ん?

今時そんなことやるのか?と思い、昨年別のところでJava研修を受けた後輩に、どういう研修だったのか聞くと、

最初テキストエディタ*2使ってましたけど、途中からeclipseでした。

え、そういうものなの?とカルチャーショックを受けました。
開発ツールが充実しているこのご時世に、なんでそんなことやるの?と、正直思いました。

テキストエディタでプログラミング研修する意味が分からないので、なぜ止めたほうがよいか、私見で書いてみます。

事前に

テキストエディタと言っていますが、編集以上の機能を持っている、Visual Studio CodeVim等は除きます。
書いたソースをデバッグできなかったり、チェックする機能がないものを、テキストエディタと呼んでいると思ってください。

本質的ではない部分に時間を取られる

何よりこれです。

コーディングに集中しづらいです。

コーディング時

タイプミスをしても、誰も教えてくれません
もちろん、プログラミング始めたばっかりの頃は、タイプミスに気を付ける必要はありますが。

ソースコードという、未知の文字の羅列を相手にしているのに、その中からタイプミスを見つけるのはとても大変です。

研修の時は、とにかく答え通りに書いて動かす行為を繰り返します。
タイピングだって大変です。決まり文句ぐらい、ささっと入力できたほうが良いです。

Visual StudioIntelliSenseとまでは言わないまでも、入力補助ぐらいあっても良いと思います。

そもそも、業務でそれなりにプログラミングやってきた人間だから言いますが、構文エラーなんてしょっちゅうやる*3ので、入力補助があると、エラーが減って大変助かります。

むしろ、IDE等の機能をある程度知っていてもらわないと、後からその学習コストも必要になるので、高機能なものを使い慣れているほうが良いです。

実行時

Javaでいうと、手動コンパイルだと

cd 'ファイルの親ディレクトリ'
javac Main.java
java Main

みたいに、わざわざコマンドを入れる必要があります。
はっきり言って、手間です。ファイルが増えると、さらに手間です。

学習上、トライ&エラーを繰り返すのはとても大事です。
IDE等を使えば、ボタン一つで実行までできるのに、わざわざそれを妨げる方法で研修するのは、悪手としか思えません。

現実では、テキストエディタでコーディングしない

つまり、研修が実情とかけ離れています。

どのエディタが好きか、という部分は宗教論争が始まるので特に言いませんが、少なくとも、テキストエディタでコーディングしません*4

普段使わない言語のソースを読むとき用に、シンタックスハイライト*5が充実しているエディタが一つあると助かる場合はあります。

現実で役に立たない方法を教える研修って、役に立つのでしょうか?
…違うIDE使ったら役に立たないじゃないか!という意見はありますね。テキストエディタよりマシだと思いましょう。

今や、無料で使えるWebのエディタのほうが、コーディング用途では便利です。

ProgatePaizaは、無料で使える部分だけでも、使いやすい*6と感じました。

インデントが揃わない

ソースの可読性という場合、観点は二つです。

  • プログラムの構造
  • 文書の見た目としての美しさ

Pythonがインデントルールを強制した*7ように、見た目で誤解を与えないソースは、ソースを読む労力を下げ、また、書きやすくします。

とはいえ、プログラミング未経験の人にインデントを守れ!なんて言っても、そんな余裕はない場合があるので、やはりエディタの補助はあったほうが助かります。

フィードバックが遅い

これは、前に書いたものと共通する部分はあります。

書いて即実行できる、というのは、トライ&エラーを助けます。
テキストエディタを使っていると、保存→実行が必要なため、すぐに実行できません*8

テスト駆動開発』では、

テストをすぐに走らせれば、ミスをしでかす確率が減っている実感が得られ、結果的にストレスが減っていく*9

という言葉があるように、テスト実行というフィードバックを、即時に得られる利点が挙げられています。

テスト駆動開発を行えるような技術者であってもそうなのです。

なのに、研修を受けるような初心者に、わざわざフィードバック効率が悪い方法でコーディングさせるのは、いかがなものかと思ってしまいます。

(結果的に)プログラミングが嫌いになる

上のような、良いとは言えない状況で教えられると、結果的にプログラミングが嫌いになるように思います。

とにかく苦行続きなので、研修内容次第では、本当に得るものが無いです。

じゃあどうすればいいの

ProgateとかPaizaとかの、オンライン講座を法人契約すればいいんじゃなかろうか、と思います。

プログラミング学習だけなら、それで十分です。

おわりに

テキストエディタでのプログラミングは、普通はやらない。これに尽きます。
普通はやらないことを研修でやる意味とは、と考えてしまいます。

私も、PythonでプログラミングするときはVisual Studio Code(たまにJupyter Notebook)を使いますが、あれはもはやテキストエディタではないぐらいすごいです。

いいツールを使って、いろんなことできるの知って、プログラミング楽しい!って思ってほしいです。

新人を潰すようなクソ研修は滅べばいい

口が悪いですが、何のための研修なのか、研修実施側も受講させる側も、よく考えてほしいです。

*1:Terapad

*2:sakuraエディタ

*3:VBAみたいに、どうにもならない言語だと、構文エラーで時間潰れることがしばしば

*4:スクリプトを書く場合、エディタを使うことはある

*5:ソースコードを色分けして表示する機能のこと

*6:タグの入力補完、キーワード候補表示とか、いろいろ

*7:そしてそれが好意的に受け止められている

*8:HTML、スクリプト言語は、すぐ実行できるので楽ではある

*9:テスト駆動開発』第25章 テスト(名詞)