EmotionTechテックブログ

株式会社エモーションテックのProduct Teamのメンバーが、日々の取り組みや技術的なことを発信していくブログです。

非エンジニアを対象にプログラミング勉強会やってみた

はじめに

こんにちは、テックリードのかどたみです。 今回はタイトルの通りエンジニア以外の方に向けたプログラミング勉強会をやってみたので、行った経緯と内容について紹介したいと思います。

この記事はエモーションテック Advent Calendar 2022の5日目の記事です。

背景と目的

弊社ではお客様に納品するためのレポート作成における統計解析を行うチームを始め、プログラムを書く人が増えてきています。このこと自体はとても良いことですが、問題も発生していました。

レポートで利用する解析をプロダクトに反映させようと他のチームからプログラムを受け取ったときに内容がわかりにくいという問題です。

我々エンジニアはチームでプログラムを共有してプロダクトを作成しますし、運用・保守という観点でプログラムを書くため、設計やプログラムでのコミュニケーションに意識を向けます。

しかし、まだ他のチームの方々はプログラミングを学び始めたばかりで動くことや結果が正しいことに意識が向いている状態です。

非エンジニアがプログラムを書くことができるだけでとても素晴らしいのですが、ビジネスの根幹に関わるプログラムになってくる場合、

  • コミュニケーションコストの増大
  • プログラムが増えるにつれて低下する開発速度

など、動くだけのプログラムを書くだけの状態の危うさを我々は身をもって知っています。 なので、プログラムの書き方を教えるのではなく、資産となるプログラムを書くためのマインドを持ってもらうことを目的として勉強会を開催しました。

内容

まず、導入として以下の点を伝えました。

  • 動くこと、バグが出ないことが本当の価値ではない
  • なぜ動くのか、なぜバグっているのか「伝えられること」が価値である
  • 自分にしかわからないプログラムを書くことは良くない
  • 同僚が読んでわかりやすいプログラムを書こう

その後、読みにくいコード(クソコード)を紹介しつつ、どこが悪いか、どのように改善すればよいかを紹介しました。今回題材にしたプログラムの仕様は我々のサービスとは切っても切り離せないNPSの算出で、用いた言語は解析によく使われているpythonです。

NPSの算出

  • 推奨度(0~10の11段階の数値)の集合が与えられている
  • 推奨度の集合における推奨者(推奨度 9 ~ 10)の割合(%)を求める
  • 推奨度の集合における批判者(推奨度 0 ~ 6)の割合(%)を求める
  • 上記2つの割合の差分を求める

今回のクソコード

def main():
    # 推奨度の配列
    array = [0,1,2,3,4,5,6,7,8,9,10]

    num1 = 0
    num2 = 0

    # 0から6までの割合を計算する
    for num in array:
        if num >= 0 and 6 >= num:
            num1 = num1 + 1
    num3 = num1 / len(array) * 100

    # 9から10までの割合を計算する
    for num in array:
        if num >= 9 and 10 >= num:
            num2 = num2 + 1
    num4 = num2 / len(array) * 100

    ans = num4 - num3
    print(ans)


if __name__ == "__main__":
    main()

改善点

今回紹介した改善点は以下です。

  • 変数名
  • コメントの書き方
  • 関数化
  • 抽象化

これらの改善を経て、プログラムを読んだだけで仕様がわかるようなコードに改善してみました。 この記事で紹介した答えは紹介しませんが、ぜひ自分なりに改善案を作ってみてください。

反響

話している最中にもかなり納得されている方もいて、こういう書き方はダメですか?みたいな質問や、すでにダメなコードはどうやって改善していけばいいかなど、紹介した改善を試して貰えそうな反応がもらえたので良かったです。 今後は練習用のコードではなく実際に書かれているコードのレビュー会などをやってみるのも面白いかなと思いました。

おわりに

いかがでしたでしょうか? 私にも記憶がありますが、プログラムが書けるようになってくると動くだけで楽しかったり、正しい結果が出るだけで達成感に浸りますよね。 他の人が読んでわかりやすいかどうかを考え始めるとプログラミングに苦しさを感じるかもしれないですが、そこを乗り越えると別の楽しさを感じることができるようになるので今回勉強会に参加してくれたメンバーには頑張って欲しいですし、もっと僕も貢献していきたいと思います。

エモーションテックでは顧客体験、従業員体験の改善をサポートし、世の中の体験を変えるプロダクトを開発しています。プロダクトに興味のある方、資産となるコードを書くために試行錯誤したい方、ぜひ採用ページからご応募をお願いいたします。

hrmos.co

hrmos.co