SE(たぶん)の雑感記

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

プログラミング勉強会を開催することになり、今思っていること

追記:開催し、無事に終了しました!
その様子も書いたので、どうぞ。

hiroronn.hatenablog.jp


今週末、かねてよりやってみたかった、勉強会なるものを某所で開催します。*1
プログラミングをやってみたいけど、なかなか手が出ないという方を対象にした、入門者向けの内容となります。

概要

  • プログラミング未経験者の、入門向け
  • 基本的には社会人を対象とする
  • ツールインストール等は行わない*2
  • ソースを書く「体験」を重視する
  • 言語はPython

Pythonは、プログラミング入門向けとして最適だと思っています。
とにかく余計な記述*3が少なく、コードを書くのに集中できるし、それでいて型指定はかなり厳密です。

想定外の反響

勉強会を開催するにあたり、人数上限を付けたのですが、あっさり満員になり、キャンセル待ちが出たそうです。*4
これは、正直想定外でした。
プログラミングを始めるきっかけがない人が、それだけ多いのか?と思ったりもします。

考察:プログラミングは、始めるハードルが高いのか

勉強会を開く前に、エンジニアではない人と話している感じだと、やってみたいけどやれない、という人が多い印象です。
興味あるんだけどなかなか…という声も聞こえてきました。

ハードルがあるとしたら、こんな感じでしょうか。

  • どこから手をつけたらいいか分からない
  • 言語が多すぎて、どれをやれば良いか分からない
  • 何ができるのか分からない
  • どういう準備をしたらプログラミングが始められるのか分からない
  • 時間がない

もしくは、やるにはやってみたけど、

  • 入門本買ったけど、挫折してしまった
  • ネットにある情報の、どれを信用していいか分からない
  • 入門が入門向けじゃない

というようなものもあるのでしょうか。

プログラミングの必修化は、調べた感じだと確定したみたいです。*5
教育側も苦労はするでしょうが、とりあえず義務教育の中でプログラミングが扱われるのは良いことです。

問題は、大人、もしくは義務教育後の人間が、どうやってプログラミングに触れるか、だと思います。

自分なりの解

何はともあれ、経験だなと思っています。
どこから始めたら良いか分からないなら、「じゃあやり方教えるから、一緒にやってみましょう」という機会を作るとどうなるのか試してみよう、というのが、勉強会のきっかけです。

そのため、勉強会の基本方針は、自分で試行錯誤して書くです。

最初は写経でもよいのですが、この通りに書いたら、この通りに動くという知見が得られるだけで、プログラミングをやっているという気がしないのでは、と思います。写して動くのは当たり前ですし。

とある本*6に、ロッククライミング(ボルタリング?)の初心者向けの話があります。

ロッククライミングの講習に行ったら、講師から命綱の使い方を教わった後、「まずは30分程度、自由に登ってみてください」と話があり、どこかに行ってしまった。
「なんであの講師は何も教えないんだ!」と思いながら、30分程度、苦戦しながら登ったりしていた。
我々は全くうまく登れずにいたところ、30分後に講師が戻ってきて、手取り足取り登り方を教えてくれた。
一度苦労した経験がある我らは、講師の言うことが「体験として」わかっているため、簡単に理解できた。

この法則は、プログラミングにも当てはまるのでは?という考えです。

プログラミングは、実現方法やより良くする方法を試行錯誤するのが、最大の楽しみだと思っています。
そういう部分が、ちょっとでも伝わればいいな、と思います。

勉強会内容

扱う内容

  • 入出力
  • 四則演算、変数
  • 条件分岐
  • (可能なら)リストとか

時間的に、条件分岐まで扱えれば御の字です。

FizzBuzzあたりが、最終問題として相応しいように思っています。

環境

今回は、自分にも相応の縛りを設けています。
エディタ、Git以外は、クライアントインストールのものは用いないようにしています。

コーディング環境

paiza.io

スライド作成

GitPitchを使っています。

github.com

GitHub上で、マークダウンを用いてスライドを作成できるサービスです。
既にほぼ作成済みで、微調整を繰り返している最中です。

多くの機能を使ってみたので、勉強会が終わったら、改めて紹介します。

画像作成

draw.io というサービスを使っています。
一部、どうしてもフローチャートが必要になったので、そこで使いました。

無料で、綺麗なフローチャートが作れるので、お勧めです。

スライド記述

おなじみ、Visual Studio Codeを用いています。
スライド作成でGitPitchを使っていますが、これはGitHubへのコミットを前提に作成されています。
そのため、Gitとの親和性が高いVisual Studio Codeが活躍しています。

初心者向けのコンテンツは意外と少ない(気がする)

こんな、経験者しか分からないような記事ばっかり書いている私が言うのもなんですが、これからプログラミングを始める、という人向けのコンテンツは、案外少ないと感じます。
ある程度経験があったら、「これは初心者向け」とか「これはある程度できてからのほうが良い」とか、レベルの判断がつきます。

そして、経験者にはブログだったり、Qiitaだったり、様々な情報を得る場*7があるのに、初心者の方にはそれがありません。

未経験者の参入障壁は、このあたりにもあるような気がします。

おわりに

プログラミングできる人が増えるのは、とてもいいことだと考えています。
SEではないお客さんと話すときに、相手がプログラミングやシステム開発に理解があると、とても話が進めやすいと感じます。
そういう意味でも、経験者が初心者向けコンテンツを用意してみるのは、意義があると思います。

勉強会はもうすぐですが、ギリギリまで準備します。

ではでは。

*1:閉じた環境なので、一般には申し込みできない。すでに申し込み終わっています。

*2:paiza ioを使う

*3:Javaのimport、C#のclassやnamespace等の、入門としては説明し難いおまじないが少ない

*4:初めて勉強会を開催するので、私個人の実績は全くない。つまり、プログラミングを勉強したい人が集まったと思われる

*5:公式発表のソースが見つからなかったので、リンク無し

*6:発見したら、書名を追記します

*7:困ったらまずはググる、というのが常態化する