1 of 34

Going Rogue

How Code.org Created a

Curriculum Development Platform,

Without their Engineers

Josh Caldwell

Curriculum Development Manager

josh@code.org | @mrjoshida

2 of 34

Recovering Middle School Teacher

Curriculum Developer

Not an Engineer

Glutton for Punishment

@codeorg | @mrjoshida

Who am I?

3 of 34

Who is Code.org?

@codeorg | @mrjoshida

4 of 34

#HourofCode

Our vision:

in every school

every student

opportunity

5 of 34

@codeorg | @mrjoshida

We’re a small team

Who is Code.org?

6 of 34

@codeorg | @mrjoshida

With a big reach

Who is Code.org

7 of 34

Our engineers make great tools

@codeorg | @mrjoshida

Who is Code.org

8 of 34

@codeorg | @mrjoshida

Elementary school

Middle School

High School

CS Fundamentals

CS in Science

CS in Algebra

CS Discoveries

AP CS Principles

That we use in great courses

Who is Code.org?

9 of 34

@codeorg | @mrjoshida

Written on not-so-great tools :/

Multiple writing formats (md, gdoc, pdf)

Manually created/updated overview docs:

(Standards alignment, pacing guides, resource lists, lesson/unit summaries, vocab lists, and on and on)

No meta data

Inconsistent style and format

Too much tribal knowledge

Who is Code.org?

10 of 34

@TeachCode | #TeacherCon

Learning objectives

Materials and prep

Digital resources

New vocab

New code

Overview and purpose

Tags and keywords

Related extension lessons

Assessment info

Aligned learning standards

11 of 34

Famous Last Words...

“All we need is a slightly

customized CMS,

why don’t I just

set one up myself?”

@codeorg | @mrjoshida

“Improving” our writing process

12 of 34

+

Phase 1

@codeorg | @mrjoshida

“Improving” our writing process

13 of 34

Pitching

to the

Engineering

team...

@codeorg | @mrjoshida

“Improving” our writing process

14 of 34

A few simple requirements...

  • Avoid interacting with main site
    • Actually, stay out of the ecosystem entirely
  • Minimize organizational dependency
  • On your own for everything
  • Must support > 100k teachers
  • Budget of $0

@codeorg | @mrjoshida

“Improving” our writing process

15 of 34

@codeorg | @mrjoshida

“Improving” our writing process

16 of 34

New plan:

Go Static

@codeorg | @mrjoshida

17 of 34

Phase 2

  1. CurriculumBuilder hosted on premises, internal only
  2. Opinionated models and md filters for consistency
  3. Django-jackfrost to generate a static site
  4. Django-storages to push to S3 bucket
  5. Point curriculum links at bucket

@codeorg | @mrjoshida

CurriculumBuilder Phase 2

18 of 34

Successes:

More consistent lessons

Control over formatting

Writers can self publish

Easy to update

Easy to create meta views

@codeorg | @mrjoshida

CurriculumBuilder Phase 2

19 of 34

Challenges:

Multiple sources of truth

No comm between tools

More internal users

Evolving curricula

Big project

@codeorg | @mrjoshida

CurriculumBuilder Phase 2

20 of 34

Phase 3

(in progress)

@codeorg | @mrjoshida

CurriculumBuilder Phase 3

21 of 34

Consolidating Truth & Communicating

LevelBuilder

CurriculumBuilder

Level progressions

Student instructions

Teacher tips

Starting code

Exemplars

Teaching guide

Additional resources

Lesson description

Assessment information

Objectives & Standards

Vocab

etc.

JSON!

@codeorg | @mrjoshida

CurriculumBuilder Phase 3

22 of 34

Don’t Cross

The Streams!

23 of 34

Django Rest Framework

+

Django-jackfrost

=

Reliable Read Only API

@codeorg | @mrjoshida

CurriculumBuilder Phase 3

24 of 34

25 of 34

More Users & Evolving Curricula

Need for auditing and recovery

@codeorg | @mrjoshida

CurriculumBuilder Phase 3

26 of 34

django-reversion & django-reversion-compare

@codeorg | @mrjoshida

CurriculumBuilder Phase 3

27 of 34

Big Project

Still working on that...

@codeorg | @mrjoshida

CurriculumBuilder Phase 3

28 of 34

Takeaways

There’s a package for almost everything

@codeorg | @mrjoshida

mezzanine.jupo.org

django-rest-framework.org

github.com/kezabelle/django-jackfrost

github.com/jschneier/django-storages

github.com/etianen/django-reversion

github.com/jedie/django-reversion-compare

github.com/semente/django-smuggler

29 of 34

Takeaways

Sometimes too many...

@codeorg | @mrjoshida

Shout out to djangopackages.org

30 of 34

Takeaways

Start small

@codeorg | @mrjoshida

Don’t be afraid to iterate

31 of 34

Takeaways

There are a lot of tutorials out there

@codeorg | @mrjoshida

But most are not great instruction

32 of 34

Takeaways

Take advantage of the community

@codeorg | @mrjoshida

Like I didn’t

33 of 34

Takeaways

Beware of “I betcha can’t…”

or

When all you have is a hammer...

@codeorg | @mrjoshida

34 of 34

Thanks!

Thank You!

@codeorg | @mrjoshida

code.org/about/jobs

code.org/volunteer