教育行業的業務后臺系統搭建(二):排班組課
編輯導語:大家都沒有對課表好奇過,系統是怎么做到把老師和學生的時間安排的恰到好處?排一節課業務后臺是如何進行操作的?本文作者從排一節課到排一個學校的課,由淺入深地詳細介紹了排課的流程,供大家一同參考學習。
排課?這玩意兒不就是指定一個時間,把老師、學生塞到一個教室,然后給他們一本書,讓他們自己玩去,很簡單呀,有啥可說的?
確實,“排課”聽起來不過如此。
不過排一節課簡單,排一個學期的課也不難。但是給一個學校排一個學期的課可就不是幾句話能說清楚的了。
為了讓大家比較容易理解,我們由淺入深得“推倒”:如何排課?
01 排一節課
其實上一篇文章就已經提到過如何排一節課。
唯一老師、一課件、一班學員、一個時間、一教室而已,見下圖
具體就不細說了,沒什么邏輯在里面。
02 排一個學期的課
知道如何排一節課,那么排一個學期的課就不難了。
在排一節課的時候,添加一個學期的概念即可。
那什么是學期呢?
學期指的是一學年中上課時間的一個單位。
——百度百科
說白了就是一個較長的時間內,定期循環上課,直到該學期預設的學習內容講完為止。
翻譯一下,一個學期會有以下三個要素:
- 起止時間:即從第一節課開課,直到最后一節課下課,經歷的時長稱之為一個學期。換而言之,一個學期是提前做好計劃的,只有明確了起止時間,才能明確“學期”
- 循環周期:即在一個學期內,明確課程內容。每天上哪些課,每周上哪些課,每個月上哪些課,是否有定期??嫉鹊?。
- 連貫的課程內容:即同一個科目,每節課上的內容必然出自同一份教材。前后課節也必然是有關聯的,通常都是由淺入深,并且定期測試學習效果,并微調課程內容,以確保一個班級內的學生不會拉開太大差距(其實上過學的大家都知道親身經歷過這個情況,此處點到為止)
然后我們抽象一下上述三要素,以及一些排課的基本要素,得出以下這張圖:
注意:要確保教材的“課程小節”與學期內“課節總數”是一一對應的。可以額外預留幾個多余的課節,用作小節考試、月考、期中考、期末考等練習課使用。
為了讓大家更容易理解什么是“循環周期”,在這里舉三個實際場景作為例子:
先定個前提:
- 科目:數學
- 一個學期歷時30周(相當于循環30周)
- 例1【每周1節數學課】:即每周只上一節數學課,且每節課都在同一天的同一個時間,那么只需要在排課的時候,確定好上課日,以及加上一個循環周期為“一周”的前提條件,再設置循環次數為30次,即可生成30節課,分布在連續的30周內,每周的同一天同一時間上課。此時,一個學期的課就算排好了。
- 例2【每2周1節數學課】:即隔周上一節數學課,且每節課都在同一天的同一個時間,那么只需要在排課的時候,確定好上課日,以及加上一個循環周期為“兩周/隔周”的前提條件,再設置循環次數為15次,即可生成15節課,分布在間隔的15周內,每隔周的同一天同一時間上課。此時,一個學期的課就算排好了。
- 例3【每周2節課數學課】:即每周上2節數學課,且每周內的所有課節時間相對固定,那么只需要在排課的時候,確定好上課日,以及加上一個循環周期為“一周”的前提條件,再設置循環次數為30次,即可生成60節課,分布在連續的30周內,每周的固定時間上課。此時,一個學期的課就算排好了。
- 同理如果每月1節,規則同【例1】
- 同理如果隔兩周、隔月等,規則同【例2】
- 同理如果每周同一科目數大于2,規則同【例3】
03 排一個學校的課(重點來了,做好筆記)
本文的重頭戲來了,實話實說,排課的最難點就在這里。即如何做到大量排課的同時,又不會造成時間沖突。
首先,我們要考慮,排課的核心關鍵點就是“能開課”。那什么情況會導致不能開課,或者說開課無意義?
第二次引用這張圖:
究其根本,還是上面提到的一句話:唯一老師、一課件、一班學員、一個時間、一教室而已。也就是說,只有同時滿足以上5個條件,才是一節有意義的課。反過來說,以上5個條件缺少至少一個,這節課將毫無意義。
那好,為了讓一節課變得有意義,我們先來梳理所有條件(或稱之為維度):老師、學員、課件、時間、教室
看下來,上面這幾個維度,好像沒什么交集。如果一定要有,也只能是時間維度。
- 同一名老師,在不同時間,可以教不同的課程;
- 同一名學生,在不同時間,可以學習不同的課程;
- 同一處教室,在不同時間,可以被許多課循環使用;
- 課件沒有時間交集,隨時可以被重復使用。
這么看來,一旦老師、學生、教室三者之中任一維度,同時做多件事,都可能會造成這節課變得毫無意義:
- 同一名老師,精力有限,不可能同時教多門課程; ?
- 同一名學生,精力有限,不可能同時學習多門課程; ?
- 同一處教室,物理空間有限,不可能同時開多個班級。 ?
所以我們在設計系統時,一定要避免上述任一場景發生。
那么該如何避免呢?繼續往下看
1. 如何確保一個學校能夠排出有意義的課?
最重要的是確保各維度在同一時間線,只能安排一件事(即單線程):
- 同一名老師,同一時間,只能安排教一節課;
- 同一名學員,同一時間,只能安排學習一節課;
- 同一個教室,同一時間,只能安排一個班級上課。
有沒有發現,好像又回到了最開始的“排一節課”,只不過現在的場景不再是排一節課了,而是排若干個“一節課”。
第三次引用這張圖:
既然知道了排課時要注意各個維度“單線程”,那么為了排好一節課,我們應該在排課前就把一切可能造成“多線程”的“意外”排除在外。
2. 如何排除“意外”?
想要排除“意外”,無非就是在系統中操作排課時,添加限制:
- 同一名老師在一個時間只能安排在一個班級上課;
- 同一名學生在同一時間只能安排在一個班級學習;
- 同一個教室在同一時間只能安排一個班級上課。
但身為資深挖坑人,不得不告誡大家一句:真實場景遠比我們想象中的復雜得多。
在此舉4個實際業務場景給大家做參考:
場景一:一名學生買了多門科目,但同一時間只能上一節課。
針對這種情況,我只能說,一定要給時間加上限制?。。〔蝗粚W生一看同一時間有多節課,學生學得一臉懵逼,家長看著暴跳如雷,順便發起退費。
為什么呢?因為雖然教育行業直接服務的是學生,間接服務的是家長,但是家長的實際控制權比學生要大得多。如果排課混亂的事情被家長發現,家長內心肯定會認為該教育機構不專業,退費也將成為必然。
所以,面向客戶一定要做到嚴謹、專業。因此,該加的限制必須加,不容馬虎。
場景二:一名老師,一個可排課時間只能安排一節課。(這個時候就要分場景了)
- 如果是全職老師,那這個時間限制其實可以不做控制,因為老師都是自己人,畢竟再亂的排課,只需要面對面一句話就搞得定;
反過來說,如果為了所謂的“專業嚴謹”,而在系統中加上時間限制,那么恭喜你,排課端同事正拿著板磚朝你走來。(有的時候,所謂的“專業嚴謹”,給一線業務人員造成的困擾遠大于便利。而且,如果因為所謂的“專業嚴謹”最終導致業務方使用系統降低了工作效率,那這系統不用也罷);
- 如果是兼職老師,此時又必須“專業嚴謹”了。
因為兼職老師是外人,相比給自己人帶來不便而言,給外人帶來困擾影響更大,范圍更廣,同理“學員家長”。因此系統必須確保兼職老師一個時間有且只能有一節課。
場景三:老師的休息時間,不能排課。
無論是自己人還是外人,在非工作時間給他安排任務,都會在上班那天拿著板磚來找你你(手動滑稽)。
場景四:一處教室,同一時間,只能排一個班級的課程。(此處也需要分場景)
- 線下課程:最好還是不要加時間限制。完全由排課端同事自行處理教室問題。同理“全職老師”。
- 在線課程:沒有物理教室的說法,無需做任何判斷。
3. 排一個學校的課
其實到了這里,大家對于如何排好學校的課程,心里應該都已經有一個大致概念了。
我再給大家梳理一遍注意事項:
- 同一名學員,同一時間,只能安排學習一節課;
- 如果是兼職老師,那么同一名老師,同一時間,只能安排教一節課;
- 找出排課規律,根據規律,設置合適的“循環周期”和“循環次數”;
- 要確保教材的“課程小節”與學期內“課節總數”是一一對應的。
- 可以額外預留幾個多余的課節,用作小節考、月考、期中考、期末考等練習課使用。
根據注意事項,我們來按照業務步驟排課:
(注意:不同的業務場景,可能排課的流程不同,此處我根據一個虛擬場景進行排課)
場景一:創建第一個班級
- 我要在一所學校,名為阿里巴巴的教室,創建一個三年級數學的班級,教材為人教版;
- 這個班級在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有意義,只有兩種選擇:
- 當學員固定時:換一個上課時間;
- 當時間固定時:換一批學員。
如果排課同事堅持要同樣的時間,同一批學員開兩個班級。我建議換一批排課同事(手動滑稽)。
總結
至此,大家了解了如何排一個班、如何排兩個班,我相信僅憑各位看官的舉一反三能力,想必只要資源允許,排多少班對大家來說都是易如反掌的事情!
#相關閱讀#
本文由 @Ron 原創發布于人人都是產品經理,未經許可,禁止轉載。
題圖來自 Unsplash,基于CC0協議
這個是不是不適用于 每周課表不一樣的場景
不適用,建議每周挑一天(一般是周末),用excel導入形式,創建下一周的課表
比如班級ID一致,上課時間批量導入(如果有大量班級)
行云流水,重點突出,會講故事
寫得太棒啦~
感謝支持!