プログラミングスキル習得の「手順の最適化」

「プログラミングとは、手順書の作成」ということは、このメルマガ内で何度か述べてきたことです。

プログラミングとは手順書の作成。
ただ、使っている言語が、日本語ではないだけ。
「エクセルVBA」のような「エクセルの中のこびとちゃん」が理解できる言葉だったり、「Python」のような「Pythonコンパイラ」が理解できる言葉だったりする。

自然言語での手順書作成との違いは、それだけです。

ですので、「手順書作成能力」と、「プログラミング能力」との間には、実はとても大きな相関があります。

もともと手順書作成とか引き継ぎとかといった「自分の仕事について人に説明する能力」が高い人にとってはプログラミングスキルの習得は比較的容易です。

逆に、日本語でも説明が上手でない人は、「自分の仕事について人に説明する能力が高い人」よりも習得で苦労する傾向にあります。

とはいえ、プログラミング学習によって、「自分の仕事について説明する能力」も向上します。

「説明能力が高い人」には、そのスキルの横展開として、プログラミングの学習はおすすめです。
「説明能力が高くない人」にも、そのスキルの強化のために、プログラミングの学習はおすすめです。

[参考] エクセルマクロ習得に関係する4つの能力 仕組み化、効率化能力
https://forum.pc5bai.com/article/4skills/


一方、「プログラミングスキル習得」とは「手順の最適化である」とも言えます。

たとえば、エクセルVBAであれば、「プログラミングをする」とは、

・適切な(最適な)手順でVisual Basic Editorを起動し
・適切な(最適な)手順で標準モジュールを作成し
・適切な(最適な)手順でコードを書く

という、そのすべての手続の最適化です。

最後に示した「適切な(最適な)手順でコードを書く」ということを例に挙げます。

「市区町名を「区」という文字で分割し、それぞれ別のセルに入力するということをくり返す」という作業のために、最終的に以下のようなコードを書くとします。
すると、以下のようなコードになります。(エクセルVBA未習得の方は、以下のコードは眺めるだけでよいです)
Sub SikuBunkatsu()
    Dim siku As String
    Dim ku As Long
    Dim gyo As Long
    For gyo = 2 To Range("A" & Rows.Count).End(xlUp).Row
        Range("A" & gyo).Value = gyo - 1
        siku = Range("C" & gyo).Value
        ku = InStr(siku, "区")
        Range("F" & gyo).Value = Left(siku, ku)
        Range("G" & gyo).Value = Mid(siku, ku + 1)
    Next
End Sub

このとき、「どこからどういう順番でコードを書いていくのか」という手順が重要です。

プログラミングでのよくある勘違いは、「上から1行ずつ書くもの」という思いこみです。
正しくは、重要なところから書きます。そして、その重要なところの周囲に肉付けをしていって最終形を迎えます。

ネットに落ちているサンプルコードをマネて上から1行ずつ写経している人をよく見かけますが、実は、その書き方は適切ではありません。そういう学習法を「良い」と思ってくりかえしている人は、絶対に上達しません。

こんな短いコードを書くときでさえこの手順は極めて重要です。
このくらいの小品を書く段階から「適切な(最適な)手順」でコードを書くということをしていないと、このくらいの分量と構造レベルのコードであればまだなんとかなりますが、遠からずより高度な課題で技術的限界を迎えて学習は破綻します。

「適切な工法を採っているからこそ、6階建て、7階建て、12階建ての建物を建てられるのだ」と理解してください。
平屋建ての建物、2階建ての建物であれば雑な工法でもなんとかなるかもしれませんが、より高度な何かを成し遂げようとするならば、すぐに限界がきます。

より高度な仕事を成し遂げようとするならば工法の最適化が必要です。

プログラミングスキルの状態では、「より最適化された方法を選択する」という意識を持ち続けることが大切です。

Visual Basic Editor を起動するにしても、 [Alt] + [F11] のショートカットでサクッと起動する人と、マウスを数回クリックしてようやく起動する人もいます。

標準モジュールの作成でも、 [Alt] → [I] → [M] でサクッと完了する人と、マウスを数回クリックしてようやく実現する人もいます。

こういう小さいレベルのことからでも、「より最適化された方法を選択する」という意識を持つことが大切です。
  • あなたが得意なことについての、その技術を習得したときの経過を思い出してみてください。
    特に、運動や楽器演奏にかかるものがあればすばらしいです。

    その一連のプロセスは、どのように最適化されていったでしょうか。
関連記事・関連コンテンツ
講座内のコーディングのほとんどの演習について、「タイムトライアル」を用意しています。
くりかえし同じ課題を解いて、かかる時間を測り、記録してください。
「より改善できることは何だろう」という問いを持ち、次の機会には特にそこを意識して取り組んでください。
このような取り組みは、手順の最適化のためのよいトレーニングになります。
https://forum.pc5bai.com/work/coding/


エクセルマクロ習得に関係する4つの能力 仕組み化、効率化能力
https://forum.pc5bai.com/article/4skills/

コメントをするにはログインしてください

パソコン仕事5倍速!通信は、エクセルのテクニックから、仕事術、心理学、キャリアアップのヒントまで、主に事務職のビジネスパーソンのためのパソコン仕事高速化ノウハウをお伝えるメールマガジンです。
登録は、以下のフォームから可能です。

メールマガジン登録はこちら