教育行業的業務后臺系統搭建(二):排班組課

Ron
5 評論 18058 瀏覽 89 收藏 17 分鐘

編輯導語:大家都沒有對課表好奇過,系統是怎么做到把老師和學生的時間安排的恰到好處?排一節課業務后臺是如何進行操作的?本文作者從排一節課到排一個學校的課,由淺入深地詳細介紹了排課的流程,供大家一同參考學習。

排課?這玩意兒不就是指定一個時間,把老師、學生塞到一個教室,然后給他們一本書,讓他們自己玩去,很簡單呀,有啥可說的?

確實,“排課”聽起來不過如此。

不過排一節課簡單,排一個學期的課也不難。但是給一個學校排一個學期的課可就不是幾句話能說清楚的了。

為了讓大家比較容易理解,我們由淺入深得“推倒”:如何排課?

01 排一節課

其實上一篇文章就已經提到過如何排一節課。

一老師、一課件、一班學員、一個時間、一教室而已,見下圖

具體就不細說了,沒什么邏輯在里面。

02 排一個學期的課

知道如何排一節課,那么排一個學期的課就不難了。

在排一節課的時候,添加一個學期的概念即可。

那什么是學期呢?

學期指的是一學年中上課時間的一個單位。

——百度百科

說白了就是一個較長的時間內,定期循環上課,直到該學期預設的學習內容講完為止。

翻譯一下,一個學期會有以下三個要素:

  1. 起止時間:即從第一節課開課,直到最后一節課下課,經歷的時長稱之為一個學期。換而言之,一個學期是提前做好計劃的,只有明確了起止時間,才能明確“學期”
  2. 循環周期:即在一個學期內,明確課程內容。每天上哪些課,每周上哪些課,每個月上哪些課,是否有定期??嫉鹊?。
  3. 連貫的課程內容:即同一個科目,每節課上的內容必然出自同一份教材。前后課節也必然是有關聯的,通常都是由淺入深,并且定期測試學習效果,并微調課程內容,以確保一個班級內的學生不會拉開太大差距(其實上過學的大家都知道親身經歷過這個情況,此處點到為止)

然后我們抽象一下上述三要素,以及一些排課的基本要素,得出以下這張圖:

注意:要確保教材的“課程小節”與學期內“課節總數”是一一對應的。可以額外預留幾個多余的課節,用作小節考試、月考、期中考、期末考等練習課使用。

為了讓大家更容易理解什么是“循環周期”,在這里舉三個實際場景作為例子:

先定個前提:

  • 科目:數學
  • 一個學期歷時30周(相當于循環30周)
  1. 例1【每周1節數學課】:即每周只上一節數學課,且每節課都在同一天的同一個時間,那么只需要在排課的時候,確定好上課日,以及加上一個循環周期為“一周”的前提條件,再設置循環次數為30次,即可生成30節課,分布在連續的30周內,每周的同一天同一時間上課。此時,一個學期的課就算排好了。
  2. 例2【每2周1節數學課】:即隔周上一節數學課,且每節課都在同一天的同一個時間,那么只需要在排課的時候,確定好上課日,以及加上一個循環周期為“兩周/隔周”的前提條件,再設置循環次數為15次,即可生成15節課,分布在間隔的15周內,每隔周的同一天同一時間上課。此時,一個學期的課就算排好了。
  3. 例3【每周2節課數學課】:即每周上2節數學課,且每周內的所有課節時間相對固定,那么只需要在排課的時候,確定好上課日,以及加上一個循環周期為“一周”的前提條件,再設置循環次數為30次,即可生成60節課,分布在連續的30周內,每周的固定時間上課。此時,一個學期的課就算排好了。
  4. 同理如果每月1節,規則同【例1】
  5. 同理如果隔兩周、隔月等,規則同【例2】
  6. 同理如果每周同一科目數大于2,規則同【例3】

03 排一個學校的課(重點來了,做好筆記)

本文的重頭戲來了,實話實說,排課的最難點就在這里。即如何做到大量排課的同時,又不會造成時間沖突。

首先,我們要考慮,排課的核心關鍵點就是“能開課”。那什么情況會導致不能開課,或者說開課無意義?

第二次引用這張圖:

究其根本,還是上面提到的一句話:唯一老師、一課件、一班學員、一個時間、一教室而已。也就是說,只有同時滿足以上5個條件,才是一節有意義的課。反過來說,以上5個條件缺少至少一個,這節課將毫無意義。

那好,為了讓一節課變得有意義,我們先來梳理所有條件(或稱之為維度):老師、學員、課件、時間、教室

看下來,上面這幾個維度,好像沒什么交集。如果一定要有,也只能是時間維度。

  • 同一名老師,在不同時間,可以教不同的課程;
  • 同一名學生,在不同時間,可以學習不同的課程;
  • 同一處教室,在不同時間,可以被許多課循環使用;
  • 課件沒有時間交集,隨時可以被重復使用。

這么看來,一旦老師、學生、教室三者之中任一維度,同時做多件事,都可能會造成這節課變得毫無意義

  • 同一名老師,精力有限,不可能同時教多門課程; ?
  • 同一名學生,精力有限,不可能同時學習多門課程; ?
  • 同一處教室,物理空間有限,不可能同時開多個班級。 ?

所以我們在設計系統時,一定要避免上述任一場景發生。

那么該如何避免呢?繼續往下看

1. 如何確保一個學校能夠排出有意義的課?

最重要的是確保各維度在同一時間線,只能安排一件事(即單線程):

  • 同一名老師,同一時間,只能安排教一節課;
  • 同一名學員,同一時間,只能安排學習一節課;
  • 同一個教室,同一時間,只能安排一個班級上課。

有沒有發現,好像又回到了最開始的“排一節課”,只不過現在的場景不再是排一節課了,而是排若干個“一節課”。

第三次引用這張圖:

既然知道了排課時要注意各個維度“單線程”,那么為了排好一節課,我們應該在排課前就把一切可能造成“多線程”的“意外”排除在外。

2. 如何排除“意外”?

想要排除“意外”,無非就是在系統中操作排課時,添加限制

  1. 同一名老師在一個時間只能安排在一個班級上課;
  2. 同一名學生在同一時間只能安排在一個班級學習;
  3. 同一個教室在同一時間只能安排一個班級上課。

但身為資深挖坑人,不得不告誡大家一句:真實場景遠比我們想象中的復雜得多。

在此舉4個實際業務場景給大家做參考:

場景一:一名學生買了多門科目,但同一時間只能上一節課。

針對這種情況,我只能說,一定要給時間加上限制?。。〔蝗粚W生一看同一時間有多節課,學生學得一臉懵逼,家長看著暴跳如雷,順便發起退費。

為什么呢?因為雖然教育行業直接服務的是學生,間接服務的是家長,但是家長的實際控制權比學生要大得多。如果排課混亂的事情被家長發現,家長內心肯定會認為該教育機構不專業,退費也將成為必然。

所以,面向客戶一定要做到嚴謹、專業。因此,該加的限制必須加,不容馬虎。

場景二:一名老師,一個可排課時間只能安排一節課。(這個時候就要分場景了)

  • 如果是全職老師,那這個時間限制其實可以不做控制,因為老師都是自己人,畢竟再亂的排課,只需要面對面一句話就搞得定;

反過來說,如果為了所謂的“專業嚴謹”,而在系統中加上時間限制,那么恭喜你,排課端同事正拿著板磚朝你走來。(有的時候,所謂的“專業嚴謹”,給一線業務人員造成的困擾遠大于便利。而且,如果因為所謂的“專業嚴謹”最終導致業務方使用系統降低了工作效率,那這系統不用也罷);

  • 如果是兼職老師,此時又必須“專業嚴謹”了。

因為兼職老師是外人,相比給自己人帶來不便而言,給外人帶來困擾影響更大,范圍更廣,同理“學員家長”。因此系統必須確保兼職老師一個時間有且只能有一節課。

場景三:老師的休息時間,不能排課。

無論是自己人還是外人,在非工作時間給他安排任務,都會在上班那天拿著板磚來找你你(手動滑稽)。

場景四:一處教室,同一時間,只能排一個班級的課程。(此處也需要分場景)

  • 線下課程:最好還是不要加時間限制。完全由排課端同事自行處理教室問題。同理“全職老師”。
  • 在線課程:沒有物理教室的說法,無需做任何判斷。

3. 排一個學校的課

其實到了這里,大家對于如何排好學校的課程,心里應該都已經有一個大致概念了。

我再給大家梳理一遍注意事項

  1. 同一名學員,同一時間,只能安排學習一節課;
  2. 如果是兼職老師,那么同一名老師,同一時間,只能安排教一節課;
  3. 找出排課規律,根據規律,設置合適的“循環周期”和“循環次數”;
  4. 要確保教材的“課程小節”與學期內“課節總數”是一一對應的。
  5. 可以額外預留幾個多余的課節,用作小節考、月考、期中考、期末考等練習課使用。

根據注意事項,我們來按照業務步驟排課:

(注意:不同的業務場景,可能排課的流程不同,此處我根據一個虛擬場景進行排課)

場景一:創建第一個班級

  • 我要在一所學校,名為阿里巴巴的教室,創建一個三年級數學的班級,教材為人教版;
  • 這個班級在2020年10月1日,下午13:00(周四)正式開班,下午14:30第一節課下課;
  • 且每周只上一節課,即每周四有課,上課時間為周四下午的13:00 ~ 14:30。
  • 該班級總歷時15周;
  • 上課老師是業內知名的數學老師麥斯
  • 學員是路人甲乙丙丁….

在業務明確的情況下,我們開始排課:

Step1.創建一個班級,命名班級A。這個班級只是一個空殼子,沒有起止時間、沒有老師、沒有學員、沒有對應的科目。

Step2.給班級A添加一個學期的上課時間。

  • 開課日期:2020年10月1日
  • 上課時間:13:00
  • 下課時間:14:30
  • 循環周期:“每周”
  • 循環次數:15次

Step3.給班級A設置上課年級:三年級。

Step4.給班級A設置上課科目:數學。

Step5.給班級A設置上課教材版本:人教版。

Step6.給班級A設置一名老師:麥斯。

Step7.給班級A設置若干名學員:路人甲乙丙丁….

Step8.給班級A設置一名班主任:小麗。

得出下圖:

到了這里,場景一的班級A想必已經能夠開班了。

(注意:實際業務場景中,創建班級可不是像例子這樣窮盡,一定要根據業務做變通!?。?/p>

場景二:創建第二個班級

在創建好班級A以后,如果還想再創建同樣上課條件的班級B,這個班能創建以后會有意義嗎?根據我們總結的注意事項來看,答案顯然是不能的。

原因:同一批學員,在同一時間,不能上兩門課。(可不考慮教室全職老師

所以為了是班級B有意義,只有兩種選擇:

  1. 學員固定時:換一個上課時間;
  2. 時間固定時:換一批學員。

如果排課同事堅持要同樣的時間,同一批學員開兩個班級。我建議換一批排課同事(手動滑稽)。

總結

至此,大家了解了如何排一個班、如何排兩個班,我相信僅憑各位看官的舉一反三能力,想必只要資源允許,排多少班對大家來說都是易如反掌的事情!

#相關閱讀#

教育行業的業務后臺系統搭建(一)——基礎模塊搭建

 

本文由 @Ron 原創發布于人人都是產品經理,未經許可,禁止轉載。

題圖來自 Unsplash,基于CC0協議

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 這個是不是不適用于 每周課表不一樣的場景

    來自湖南 回復
    1. 不適用,建議每周挑一天(一般是周末),用excel導入形式,創建下一周的課表
      比如班級ID一致,上課時間批量導入(如果有大量班級)

      來自上海 回復
  2. 行云流水,重點突出,會講故事

    來自北京 回復
  3. 寫得太棒啦~

    回復
    1. 感謝支持!

      回復