close
プログラミング クラウド Microsoft Azure 情報処理資格 基本情報技術者 IT基礎 応用情報技術者 開発・設計方法 オブジェクト指向 内定者・新人研修 プログラミング基礎 アルゴリズム コンピュータ数学 内定者研修 新人研修 ヒューマンスキル プロジェクトマネジメント プレゼンテーション リーダーシップ 組織マネジメント ネゴシエーション ロジカルシンキング Java UI/UX HTTP JavaScript基礎 情報処理資格 ネットワークスペシャリスト ネットワーク インターネットルーティング応用 IPアドレス データベース応用 SQL応用 パフォーマンスチューニング データベース設計 ER図 概念設計(データベース) 論理設計(データベース) IT資格 Linux基礎 OS・システム基盤 セキュリティ TCP/IP OSI参照モデル データベースセキュリティ ファイアウォール 標的型攻撃 SQLインジェクション ネットワーク基本設計 CCNA Cisco プロジェクトマネジメント資格 情報処理資格プロジェクトマネージャ 情報処理安全確保支援士 人事給与 財務会計 管理会計 簿記 生産管理 在庫管理 ERP バランススコアカード 情報処理資格 ITアーキテクト 情報処理資格 ITストラテジスト 情報処理資格 ITサービスマネジメント 情報処理資格 システム監査 PMBOK® PMP® プロジェクト計画 WBS リスクコントロール ITIL ITサービスマネジメント 要求定義 要件定義 見積手法 ビジネスインダストリ 業種・業界知識 業務知識 提案力 ソフトウェアテスト基礎 情報処理資格 データベーススペシャリスト ハードウェア基礎 外部設計(基本設計) 内部設計(詳細設計) データベース基礎 SQL基礎 RDBMS 物理設計(データベース) C++ Ruby MVC基礎 Webアプリケーション開発 JavaEE Javaプログラミング応用 フレームワーク MVC応用 Spring フレームワーク ソフトウェアテスト応用 テスト手法 JUnit スマートフォンアプリ開発 Androidアプリ開発 C# 基礎 C# 応用 負荷テスト Javaプログラミング基礎 ソフトウェアテスト コーチング メンタリング HTML/CSS サーバー構築 仮想化技術 KVS (NoSQL) アジャイル スクラム ファシリテーション C言語 ITパスポート JSTQB データサイエンス 単体テスト ユニットテスト キャリアアップ インターネットルーティング基礎 パケット解析 LAN構築 データベース データサイエンティスト トレンド 障害対応 インフラ監視 HTTP/2.0 コンピュータサイエンス VPN ネットワーク物理設計 データベース障害 JavaScript モダンJS (Modern JavaScript) 応用 MVS応用 バックアップ/リカバリ 分散処理 Hadoop Hive Python AI 深層学習(DeepLearning) CentOS Linux応用 Zabbix シェルスクリプト Infrastructure as Code Windowsサーバー基礎 内部設計 Docker DevOps Windowsサーバー応用 NginX chef Ainsible ロジカルライティング R テスト自動化 Jenkins Git 継続的インテグレーション (CI) バージョン管理 Vagrant 要求分析 Redmine 継続的インテグレーション(CI) 継続的デリバリー (CD) ヒューマンリソース管理 Web API マイクロサービス コミュニケーション 業務知識/業界知識 マーケティング 語学 AWS 法務 IoT ビジネスマナー OJT 業務効率化 表計算ソフト オフィスソフト コンプライアンス フロントエンド Subversion PHP 関数型プログラミング Laravel モダンJS (Modern JavaScript) 基礎 Android Studio 機械学習 iOSアプリ開発 ぷプログラミング React 次世代高度IT人材 共創 IPA Raspberry Pi Xamarin スクリプト言語 GoF CUI VBA 資格 ビジネス文書 jQuery 研修参加レポート マネジメント OSPF テーブル設計 アンガーマネジメント クリティカル・シンキング PDU 経営改善 Pマーク 問題解決技法 サイバー攻撃 エンジニア 参加してみた エンゲージメントマネジメント 労働関連法 新人育成 ネットワーク構築 情報セキュリティマネジメント デザインパターン リファクタリング マルチスレッドプログラミング ベンダーコントロール Modern JavaScript 冗長化 VLAN インフラエンジニア チームビルディング テストケース リーダブルコード セキュリティ入門 ネットワーク入門 Node.js npm gulp ビルドツール Python入門 冗長化入門 インフラ実機演習 プロジェクト管理 Active Directory ネットワーク管理 コンテナ 正規化理論 Haskell 品質管理 OpenStack シンギュラリティ DBA中級 プロトコル UX 基本設計 FinTech トラブルシューティング 並列処理 見える化 PMO ロジカルコミュニケーション Deep Learning インデックス設計 超上流工程 BGP Excel C-CENT Selenide プライベートクラウド アセンブラ コンピュータ基礎 工数見積 CCENT 法律知識 失敗から学ぶ プロジェクト失敗事例 PDCA プログラミング入門 非エンジニア向け 4Biz DNS セルフマネジメント 片付け術 サーバーダウン サーバー タイムマネジメント GO言語 プロダクトマネジメント プロダクトマネージャ LVS ロードバランサー 負荷分散 仮想通過 犯罪心理学 情報漏えい SEカレッジ導入事例 IT研修制度を聞いてみた CentOS7 開発環境構築 数字力 財務 IT人材 UI Machine Learning Go言語 (golang) データマイニング 統計学 新人教育 やり直し数学 RDB つながる工場 モチベーション WebSocket WebWorker HTML5 CSS3 Bootstrap 微分・積分 システム設計 決断力 LAMP環境 教育研修担当者向け ルーティング Linux入門 図解術 目標設定 試験対策 インタビュー技法 Vue.js ブロックチェーン DHCP 仕掛け学 BSC 財務諸表 自己分析 RIP スタティックルート バッファオーバーフロー DoS攻撃 システム開発 Wireshark パケットキャプチャ 管理職研修 部下育成 文章力 情報システム部門向け プロジェクトリーダー プロジェクトマネージャ 塗り絵 リスク管理 法改定 会社の仕組み Chainer AI人材 会話術 テスト技法 会社規模199名まで 会社規模49名まで 会社規模99名まで アプリ開発 サーバサイドJava 営業知識 Cloud 栄養学 基本コマンド ウォーターフォールモデル ヘルスケア 論理設計 ニューラルネットワーク ハンズオン UML 顧客ヒアリング マウスで学ぶ Apache EC2 Lightsail M5Stack DevSecOps プロジェクト成果 画像認識 チャットポット コマンド レビュー 基本用語 自動構築 LPIC-1 サーバーサイドJavascript キャリア形成 ワークライフバランス インバスケット テック用語 GitHub Windows エディタ 教養 令和時代 RESTful API 物理設計 会社規模300名以上 データモデリング サーバーサイドJava Webサーバー基礎 Webサーバー応用 Watson IBMWatson Learning Topics OS モバイル コンテスト トレーニング手法 アーキテクチャ 人材モデル インフラ CI/CD Infrastructure as a Code チーム開発 制度づくり Special_Intro AI市場分析 研修ロードマップ 仕事術 デジタルトランスフォーメーション 財務分析手法 情報整理 PowerPoint 新しい研修 オンライン研修 見どころ紹介 統計分析 ディープラーニング G検定 情報処理技術者試験 販売管理 C# テスト計画 Linuxサーバー WEBサーバ構築 http/2 Postfix イーサリアム プロジェクト・メンバ 正規化 パケット実験 作業分解 トラブル調査 ネットワーク設計 Windows server 2016 ネットワーク機器 DX 管理職 最新動向 ポストコロナ時代 IoTデバイス マイコンボード センサ サーバー仮想化 仮想ルータ WAN インターネットVPN 若手エンジニア ITプロジェクト 人事面談 DX人材育成 Java基礎 ZAP 脆弱性診断 NWサービス構築 イノベーション・マネジメント ネットワークセキュリティ ストレッチ Google Cloud Platform 不動産業界 テレワーク(WFH) ドリル GCP ( Google Cloud Platform ) システム業界 PMS テレワーク ビッグデータ NoSQL OWASP CentOS8 ネットワーク技術 データ分析 デザインシンキング 保険業界 会議リーダー システムエンジニア 段取り術 プロジェクト原論 文章書き換え術 ノーコード No Code MongoDB Redis Cassandra 運用管理 Windows10 仮想マシン リモートワーク 働き方 生産性 IPSec Office セキュリティマナー ソフトウェア・レビュー ライフハック 新しい働き方 エクササイズ ビジネスモデルキャンバス 状況認識 ストレス 必須コマンド Web 今日わかる きほん 状況把握 意思決定 心の健康 IT書籍 書籍紹介 営業マン 類推法 クラス プロセス指向 PdM 共用 ウェビナーレポート 地方創生 GraphQL CSS OWASP ZAP セキュリティマネジメント 問題解決 ソフトウェア 新技術 雑談力 テスト見積もり Scala Go Rust Relay Cloud AI

わたしのプログラミングの教え方 ~ 冨原 祐 の場合


2021-02-25 更新

プログラミングを教える、とりわけ若い人に学んでもらうことの難しさは、覚えることが中心だった学校の授業との違いから生まれているように感じます。

というのも、プログラミングスキルの向上は、自分なりの答えを、自分で考えて導き出すことが近道ですが、若い人にそのような経験をしていない方が多いのです。

このため、同じように、若い人にプログラミングや IT の基礎をなんとか学んでもらおうと苦労している方は多く、ここでは「若い人に IT の基礎やプログラミングを学んでもらうための手法」を、

  • 「経験していなくても出来る目標設定」
  • 「学習の主役が学習者になるカリキュラム設計」
  • 「『学習者が能動的に頭を使う』講座の実施」

に分けて、触れていきたいと思います。

経験していなくても出来る目標設定(キャリアパスの設定)

目標といっても、学習目標でなく「短期・長期的に学習者が得る知識の目標」です。

短期的には「今週中にこのプログラムを書いてみる」ですし、長期的には「 1 年で Python を使って通販サイトが作れるようになる」というような感じです。

ところが、 この「目標」は、基礎的な事を広く学ぶ段階では立てにくい 面があります。

「とりあえず IT の基礎的なことは学んでおいた方がいい」みたいになりがちなんですね。そして「役に立つかわからないけど、とりあえずやってみよう」という、最悪の学習がスタートしてしまう訳です。

また、明確な目標を設定しようとして、若い人に「将来、 5 年後の自分を想像しなさい」と言っても、できるわけがありません。そもそも、今からやる仕事すらイメージできていないのですから。

 

ここで、我々オトナの出番です。

「勇気をもって学習者のそれぞれのキャリアパスを構築する」ことがスタートです。

といっても、押し付ける訳ではなく、カリキュラム構築のため、学習者の将来像を考え、そうなってもらうために、興味を持って楽しんで到達できる道を考えます。

キャリアパス構築の例

例えば、「 AI に興味がある」という方がいれば、 5 年、 10 年、さらに将来を見据え、データ分析からプログラミング、 AI の知識、 AI が必要な業界の知識・・・といったような必要知識の洗い出しと学習タイミングを設定します。

そうすると、「国内でもトップクラスで、 AI の世界でテレビや専門サイトで名前がでることがあり、大学と連携するなどして日本の AI 界を引っ張っていくレベル」に「 35 歳前後でなる」キャリアパスだ!というような将来像が決まります。これを基にして「だから、今やるべきこと」を考えて作りこみます。

一方で、「でも将来はどうなるかわからないから、目標を立てられません」という人がいます(実際いました)。

将来なんて、わからないからこそ想定しておくべきで、早い段階なら修正可能です。

実際、新入社員研修でチームを組んで開発演習する時は、何もわからないながらに「自分の役割」を明確にして、「データベース担当」や「チームリーダー」などの責任を自分で選択してもらいます。これにより学習者は「役割を成し遂げるため、何を学んでどう行動するのか考える」ようになります。

プログラミング学習のカリキュラムでいえば、将来 AI のスペシャリストになるための、第一歩としてデータ構造を学ぶ、というのが正しいアプローチです。講師は「基礎だから、初歩だから、とりあえず学びなさい」という言葉に逃げないことが重要です。

「学習の主役が学習者になる」カリキュラム設計

カリキュラムの設計で大切なのは、講師が「いつどんなことを学びますよ」というスケジュールを作りこむことではありません。前述のキャリアパスが定まれば、学ぶ内容は誰が作ってもそこまで差はないものです。

大切なのは、学習者が学ぶものに対してどうアプローチするように設計するのか、です。

 

「このコマンドを打ちこんでください。はい、 AI が動きました」と言われた学習者が、「よし! AI を使って世の中を変えよう!」と思うだろうか?という疑問を持つべきです。

その分野に興味を持ち、その分野で能力を活かすための知識をどん欲に吸収する。そういう環境を作るために、「学習の主役は学習者」という点を意識してカリキュラム設計します。

知識を押し付けるのでなく、学習者が必要としたものをスムーズに提供する、一段階進むために、何を調べ、何を聞けばいいのか考える、そういった学習者主体のカリキュラムになっている必要があります。

学習者が工夫できる余白の時間を入れる

実際にカリキュラム化するときに「教えること」を詰め込みすぎず「ここで考えさせる」「ここは自分で解決させる」ポイントを組み込みます。講座中に Web で調べる時間も考慮します。

問題を解くのであれば正解を導き出すだけでなく、学習者なりのゴール設定をして、工夫してみる時間を設けるようにします。

 

人に教える場合、教えるのが上手であることは有利ですが、教える能力よりも大切なのはこういったカリキュラムの設計だと思っています。

明確な目標があり、それを達成できる環境(教材)があれば、少しのサポートで学習者は自身で学習を始めます。そこで、手が止まった時のために講師がスタンバイしている、という状況を作り出します。

「学習者が能動的に頭を使う」講座の実施

カリキュラムが定まったら、実行段階です。

そもそものカリキュラムが「主役は学習者」なので、この段階でも「学習者が頭を使う」ことに重点を置きます。書いてあることを覚える、手順を学ぶというのは 1 人でもできるので、考えて動いてみて、そこに結果が伴わないときに講師を使う、という流れを作ります。

この時に注意すべきは、まだ学習者自身で試行錯誤するのか、今、講師に質問するのか、その判断基準を示しておくという点です。

学習者は「このタイミングで聞いていいのかどうか」がわかりません。事前に「試せることが無くなってしまい、手が 1 分以上止まったら聞く」「 Google で検索した 1 ページ目を全部見て解決できなかったら聞く」などの指針を示して、判断基準を作ります。

 

そうすると、 講座の時間 = 脳を使う時間、になっていれば、学習者は非常に疲れます。

一方で、よくわからない、何をやっていいかわからないという状況の人は、手が止まり、疲労が少ないので、講師は見分けながらフォローすることも必要です。

最後に ~講師はサポーター

結果として、目標設定から実施まで一貫して「学習する人の成長した姿をベースに組み立て」れば、おのずと「学習者自身が学習に対する裁量権を持ち、頭を回転させて学んでいく」という結果になる、ということです。

これらを意識することで、講師としては「ちょっともどかしい」状態ではありますが、個々の成長に(学習者自身が)こだわった学習環境ができると考えています。

午前免除 FAQ

タグ一覧