The D is Silent: Challenges in Teaching Django

Video in TIB AV-Portal: The D is Silent: Challenges in Teaching Django

Formal Metadata

The D is Silent: Challenges in Teaching Django
Title of Series
Part Number
Number of Parts
CC Attribution 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Release Date

Content Metadata

Subject Area
What are Django's important design decisions? Maximizes for the 90% case, but allows for uncommon cases Batteries included Emphasis on documentation and testing "Configuration over convention" and "Explicit is better than implicit" What are the benefits of each choice? Good high-level documentation Easy access to quality libraries An invitation to explore. What challenges are a consequence of these choices. Do I need all of Django? What is Django and what is Python? The mixed bag of "Configuration over convention" What does Flask do differently? How does Ruby on Rails differ and which parts are harder or easier to teach. Common mistakes when teaching Django How Django lends itself well to a Constructivist teaching approach, especially Jerome Bruner's "Spiral Curriculum".
Computer animation Algebraic closure Multiplication sign Software developer Musical ensemble Quicksort Computer programming Formal language
Service (economics) Video projector Code Real number Software developer Electronic mailing list Bit Client (computing) Perspective (visual) Ruby on Rails Front and back ends Subject indexing Message passing Inversion (music) Queue (abstract data type) Right angle Software framework Text editor
Axiom of choice Mobile app Open source INTEGRAL State of matter View (database) Open set Mereology Goodness of fit Mathematics Population density Term (mathematics) Different (Kate Ryan album) Software testing Software framework Kriging Endliche Modelltheorie Data structure Scripting language Focus (optics) Arm Theory of relativity Gender Software developer Projective plane Maxima and minima Bit Word Process (computing) Software Configuration space MiniDisc Right angle Quicksort Freeware Routing Library (computing)
Scripting language Programming language Focus (optics) Arm Sequel INTEGRAL Java applet Boilerplate (text) Projective plane Electronic mailing list Staff (military) Mereology Entire function Fluid statics Word Computer animation Meeting/Interview Different (Kate Ryan album) Query language Configuration space Right angle Quicksort Series (mathematics)
Functional (mathematics) Computer file Code INTEGRAL Projective plane Division (mathematics) Grass (card game) Template (C++) Web 2.0 Programmer (hardware) Term (mathematics) Single-precision floating-point format Software framework Right angle Quicksort
Complex (psychology) Server (computing) Run time (program lifecycle phase) Java applet Multiplication sign Online help Parameter (computer programming) Formal language Mathematics Term (mathematics) Representation (politics) Software framework Endliche Modelltheorie Area Scripting language Arm Debugger Database Entire function Process (computing) Blog Right angle Pattern language Quicksort Figurate number Object (grammar)
Axiom of choice Mobile app Context awareness Multiplication sign Menu (computing) Mereology Computer programming Theory Template (C++) Number Different (Kate Ryan album) Term (mathematics) Constructivism (mathematics) Core dump Metropolitan area network Module (mathematics) Default (computer science) Arm Gender Substitute good Data mining Data management Right angle Quicksort Spectrum (functional analysis)
Point (geometry) Greatest element Constructor (object-oriented programming) Moment (mathematics) Spiral Database Theory Computer programming Kernel (computing) Computer animation Different (Kate Ryan album) Energy level Software framework Quicksort
Context awareness State of matter 1 (number) Computer programming Different (Kate Ryan album) Constructivism (mathematics) Software framework Endliche Modelltheorie Social class Software developer Moment (mathematics) Electronic mailing list High-level programming language Sound effect Staff (military) Bit Sequence Cognition Type theory Arithmetic mean Process (computing) Angle Order (biology) Website Right angle Quicksort Ocean current Service (economics) Control flow Online help Goodness of fit Structured programming Programmschleife Gastropod shell Representation (politics) Energy level Selectivity (electronic) Data structure Key (cryptography) Chemical equation Projective plane Total S.A. Peer-to-peer Word Computer animation Integrated development environment Query language Logic Pressure
Point (geometry) Context awareness Observational study Java applet State of matter Interior (topology) Multiplication sign Spiral Online help Computer programming Formal language Array data structure Goodness of fit Bit rate Internet forum Meeting/Interview Different (Kate Ryan album) Constructivism (mathematics) String (computer science) Authorization Electronic visual display Data structure Endliche Modelltheorie Address space Social class Focus (optics) Arm Electric generator Gender Software developer Projective plane Constructor (object-oriented programming) Bit Data mining Category of being Arithmetic mean Word Query language Self-organization Pattern language Right angle Quicksort
but what about the end of the time and the and and the and the you I hope this makes a band of so welcome to the data silent challenges in teaching jingo
homonyms came on my program in a handful of various languages in including Python and more easily and doing a lot of closure of development and I say I've studied of music education and I recently taught as an adjunct professor of the School of Journalism at the University of Georgia fulfill where I have they skills and to back and yes we we touching go and of those great time so I wanted to sort of take this talk to sort of reflect on some of those ideas on some you know mistakes and and uh successes that I that I had with with figuring out how to how to teachers and so that hopefully will it will help you for win-win when you're helping teach OK so all the 1st
challenge on the silent right no OK that's that's kind an easy 1 of that so it is pronounced Django OK
now what I think really is the challenge we really can't possibly see this right when no matter how big the projectors now this chart is actually made something made for Ruby on Rails I pulled it from the code follows blog on but this is all of the different skills involved right so you replace review Python replace real Django and it's all the same right so this has you can imagine right has UNIX command line and text editors right he's inversion intro and tested development and you know the list goes on the right and the and this is only expanding of from my perspective right so on the sea rich clients and I all these things on the front and the expanding on but the back-end isn't always shrinking right like is not hard to build a micro service effectively even if the back in this small right there's a lot of all there's a lot of monitoring right from and this is always changing I don't think this chart and destroy the year old I don't think it even has you know search indexes were message queues or you may these other pieces that were finding that we're adding to our back ends right also this is only growing and so I think see this is represents the the biggest challenge to teaching Django or whatever the framework is right is just there's a lot involved so you can have to unpack it stepping back from that a little bit not look and so the cooler
aspects of the design of gender and and you know I wanna say like what does that imply in terms of when you're teaching and learning Django how does it help or how is it may be present challenge so I think the Django maximizes for the 90 % case very well on but it tries to be extensible for uncommon cases also there's you know high emphasis on documentation and testing on this for this batteries included approach on when you hear a lot configuration of a convention right were assayed in isn't z Python on this this is better than implicit right so I think that's what they're like a good overview of of Genghis design so most of the
benefits of these choices right good documentation is a clear benefit I think Django has excellent topic will mentation arm and I think it serves as a model for a lot of other free norbert open-source software and that's great I I think that the tutorial the official tutorial is actually great tutorial but I think it's not perfect intro right if you've ever set someone front evidence that learn here's the official tutorial it's kind of dense and meandering and it's not the best 1st tutorial on I was certain that the gender gross tutorial is the best 1st tutorial that's excellent so thanks to the community for helping create that it's it's amazing on OK so another piece is this easy access to quality libraries right arm with some other frameworks Michael you know smaller frameworks Fhloston such on this there is there are great libraries there right but I think they V batteries included part jingle does mean that if you help someone installed Django they already have a lot a great libraries right so at 1st they probably don't need would say caching but in a few months when they do it's it's right there right and and you can't just hop steer them there so ah that's I think a benefit to batteries included are there's kind of less integration work right the other Jasper pieces flexible because János pretty hands off with respect to jobs script and not all back in frameworks or on I'm often kind surprises gender developer when I look at certain frameworks and see you know how much it gets into the funnier right how much it kind of leads into the and I think also gender makes reuse arms fairly simple in terms of you add a third-party app and he can make a lot of assumptions about the project knowing that it's agenda project right so on my can add a 3rd party happening knows that it has the access to the word right it's not always true with with with some other choices but I think that the configuration over convention has this great benefit that least to me it's always followed an invitation to explore it means that as a beginner I'm not ready to learn all the configuration is a lot right and different ways you do layouts but it means that when I'm ready to sort of tackle that I can do it and even if the radical gets kind of deep I can go look and say you know what a static route was that do what is set to and I can I can look it up right and I think if you privilege convention over configuration that peace can little harder race have heard know-how back but the framework is doing the it's more implicit OK so that said some the challenges right so there are some challenges I think 1 of them is just a tegration while I appreciate the way the changes hands off me beginners find a kind challenging because there's not a lot of structure right you if you come to Django and you've done some front in any state or how do I do Ajax right or how do on these other pieces of the for integration with Django and it's it's a little bit open right so I that's 1 challenge of that I think falls out of that design on another is that because it's batteries included you often come across this you know I'm just making a small have to I really need all Django kriging comes with all these things I'm and to that you know I would say well just because you're not using it right it's fine right you standard it's sitting on a disk somewhere in a big deal on but I think it does mean that you have to focus right you have to kind of focus your instruction when some starting Django on you don't wanna look at all the pieces yet right Thomas the only wanna make a couple views the only need a couple models with 1 relation on there's a lot of other stuff in this for the proofread Django that maybe they don't really need to focus on yet on OK and I'll lastly I think that the configuration or a convention all was what I prefer or some people find that frustrating right and with can if you privilege convention the it's a little more easily to sort hand way that way right just say well is the framework doesn't mean don't worry about it on some learners find that frustrating and I feel like I do you know I say would you show me how I got out works right arm but understand that some people appreciate that right and they said this allows me to focus on what I need to do on because the convention is were taken care of so if there's kind of a trade off there's 1 saying and so bearing that in mind from you given these various
challenges where some mistakes right there that I've made or that you often see of when people are teaching Genk to of so many mistakes
or work it's easy to teach everything it will strike is that there are all these different pieces on and so it's important to kind of think about what's important 1st right you can I think word jingle effectively armed with not knowing a whole lot of Python just yet and you learn a lot of Python along the way right just like many of us learn Java script the when did not all we're doing just a J query at staff until after a while we finally learned the actual programming language right of so that's OK you don't have to work through an entire year series of Python books to just stop drinking the other pieces were relating I'm going to duties rights a view on get into the depths of like this is everything you'd ever wanna know about sequel right like you have to go there 1st right arm and then the other piece I think this falls under the privileging configuration because we're familiar with that because it's an important part of Agenda project there's often this early focus on like layout and boilerplate pieces and answer the configuration and the things on and and the size means we hesitate like I I kind of wanna say OK here's a working project here's a layout that works here all integration you're gonna need and let's leave it alone and like not touch talk about it for a while right and Newman's relevant will look at that again and say here's the configuration and what it does right it's easy to use really gets stuck in the details are men can save list let's talk about you know exactly what static world of right for an hour and then you get people sort of lost very easily that way the OK
so you know so this grass is always greener thing again I can only think about you know what are the other so you sort of popular web frameworks and how is their design on differ from Jane and how does that reflect in how you how you would teach those right how does it make them you the easier or harder to teach in various ways
that so firstly flask use within the Python ecosystems good place to start on I think it was fair to say that it is easier stop something that's just completely dead simple right because they've really focused on we're gonna make 1 flower to make 1 function and it's just going to do anything right and a lot of beginners are attracted to that however I would say that as you move along you start to structure out the thing division looks kind like a python project right in terms of a life but and so it is possible to use Django in this way right so if you look at like we Django on the single file out that they have an example of how to do single file project and Django is shorter than the flask is actually less code on I don't think that less code is like the war anyone is trying to win with the framework this silly right but on it just you bearing that in mind I think that 1 of the challenges it presents but the fast presence is that you do have a little more package integration work and you kind of have to pick the right packages right 1 0 and 0 in wet templating engine do I need and if you're a programmer has been doing this while you might really appreciate the design and not saying that's that supporters on eyeball on but if you knew that it's easy to see how that can be frustrating right like just demystify I me I don't know what these things do right I the OK so the next
node well it's not really a framework and I know it's a runtime but expressed yes you pick your framework so I think you know what what the common sort of arguments you here is that you're gonna need on jobs strip from the front end see miserly is it on the back in less complexity there were done and OK so that there is no argument there however I think that learning Python is not a serious area right to to dinging right like but I think Python is by design a much simpler language lot right when you learn Java script they're good pieces but there's a whole lot of entire patterns that you kind of have to learn about right on so as a 1st language it's a little it's a little dicey right on an HMO important and that I think is that this the vented model of that node gives you to 0 well you may or may not been appreciated for your own from engineering team as a learner on it means all of a sudden that I get stuck in callback help and someone sees as all you need is promises and someone else says no you need concurrent futures and 1 says what are you talking about right this is likely going to advanced for what I'm trying to do which is built just my 1st basically have right arm and so hopefully I need to worry about concurrent futures for that right again and 1 thing that I think is very beneficial to nodes approach on is something I I see a people stumble on a lot as a learning Django which is sort of marshalling J. and and that sort of thing right so typically on you know you have these big objects as an internal representation on the server you gotta figure out a way to serialize it you know and you can all this work it is a much simpler mental model to just say I pledge a son out of the the you know the database and I threw Jason across the wire and right now you can decide for yourself if you think that's a good approach should not right but in terms of the mental model learning and I think that that's that's actually a lot simpler than the more we typically the I was change so
rails as I was saying it's kind easier to him way way convention there or certain benefits there and there are drawbacks on I think it's there's more emphasis later on in sort of how I work around rails conventions when they don't help me which is kind of difficult right and I think that really is by design is is naturally bit more opaque of so In my opinion is is sort of a less of an invitation 1 which to me is an important facet but but I understand that some people that are beginning with rails on do do appreciate the design by DHH sort of summarized what he thought the design rails was by this blog says that rails on costs and if you're not superfluid that led to look it up is is talking about if you go to a sushi restaurant you pay like a hundred dollars or something the master shuffle common give you all the sushi and they pick what they know you will like OK and that very much it is I think that's sort design of rails the framework picks you know the conventions and they know you're just gonna like it right if you don't like it the you eventually acquired taste right the 1st time I think they're trying to make the OK so I bite if
that's true then I encourage you to think of all of these different things on spectrum in terms of design in terms of what falls out of them in terms of how you how you teach them so if Wales Omar costs a I think that notice fondue so this is where you you pick all the small little tiny ingredients and you pay extra because you get to be the 1 that gets it in the cheese so when you because you could have this man modules and you get to tie them all together and so as a as a teacher or where there's a lot of times that like how I put this thing together right I've got this piece that he used melting pot of program uploads how light Titus isn't right that's the cheese on flask is are caught you look at the menu you pick your and you pick templating engine of its you know kind of further along in the spectrum you have to make those choices I think 1 of the things that falls out of that is package management is still very important and you have to teach early on it the anything in industry is a little harder right arm if I have some third-party app it might say on a flask third-party app and I also need this over and I need this template intentions right on OK so I encourage you to think of gender was a watch special and so if I wanna a vegetarian special number 7 and I know it comes to breeders an enchilada when thinking here is I don't know why am I did a templating engine by default right I know it comes without much special I don't have to know that much about how to make a breeder or what kind of inch lot I want it's part of the lunch special however when I'm ready when familiar with these things and I'm ready to start kind of ordering things or Lockhart I can make substitutions and special right I want number 7 but I wanna cheese and London's so I can add subtract mean imaging aware or I can add ginger templates or I can add this other piece right the all so I think that's where it falls on spectrum and was said you know realism MacCoss a and so on this means that you know it's of I think more opaque a little harder to doing on but it does mean that you come in and it can take care for you to the price just here's your sushi you only have to choose your done so I I do not include you thinking at each of these approaches has merit on you just have focused on different core aspects of what you know what you really need to to teach or learn to excel at using that tool OK so they're not just wasn't mine on it's
important to think about like the different theories of learning and how this can help with effective teaching in the 20 century the the 2 had major schools are behaviorism in constructivism and behaviorism is more in the sort of early 20th century on constructivism as is very common on across different disciplines are these days
and the people that sort of brought this on into the 4 in North America was drawn bring end In his theoretical framework it's based on this theme that learners construct new ideas based on their existing knowledge right so within that but but he talks about what
he calls the spiral curriculum and I think this is a very effective way to to think about tackling the big topic like back in programming so in the constructors viewpoint the foundations of any subject we talk to anybody at any stage if it's an appropriate form in with the spiral curriculum you work at the bottom and this is a learner that's that's very new to to whatever they're dealing as you move around the spiral you're visiting different topics at a high level so you're touching just a moment on this is what HTTP verbs or you're touching just a moment on this is generally what Siegel database does it and so on as you move up you revise their ideas build on what they already know at that point you add new content and as the scope increases and they're learning more different kinds of things they're moving up and the difficulty increases and this is how they lead to to mastery so at the bottom again is high-level overview and we get to the top that's we're in the depths of was talk about what Angelina's and with talk about using containers in Munich kernels and crazy stuff OK the
and in this framework of good talks about or constructivism more broadly talks about seeing the instructor's role as scaffolding and instructors are sort of facilitators for learning 1 of the key the ideas is that the learning environment is designed to support but also challenge learner's thinking the so sometimes lowered and the effective teaching techniques is to ask just the right question to help someone question some of the intuition or assumptions on and it was lastly with with scaffolding the teacher's role is also just sort of select kind of what what's going to be focused on its where the scope of everything on in in the sequencing and will type of sequencing in just a moment so
constructivism to give you kind of overview of how this is used in CS 1 of the in the CS education in general 1 of the ways this is done is 0 with logo right so how many how many of you in many fourth-grader so like we looked at logo and play with a little bit bath out at the right side of but yes as the school teaching tool it's all roughly they kind of based the design on list but what they did was they removed enough staff trying to make it really appropriate for 4th on and is something they can understand you know it's a total brain and the total workers in state in the program right is this visual representation and is not always to do the same thing so on it demonstrates program stayed interactive development and eventually you can get 2 loops in structured programming on but you know 1 of the things you might ask to help someone sort of question their own intuition would be a candidate for a bold move backward if you don't have a backward the right and the solution that is you know you turn angle break move forward and then turning back right so with constructivism you're sort of always thinking about what what is the current level of knowledge and where the current assumptions and how do I have to move past those in an sort of question ones that that we need to so 1 of your the encore skills as a teacher of within using constructivism is cognitive modeling and so modeling more broadly is where you just kind of do something to demonstrate how it's done of the cognitive modeling means showing how you're thinking about something which can be very challenging right because its internal so 1 of the ways to do this is with pair programming and if you're helping someone learning the process of pair programming it's a bit different than you know working directly with a colleague and and peer pressure right and so on we pair program with someone that you're trying to mn into war I encourage you to think about verbalizing your thinking and so we'll talk about the problem solving steps right decompose the problem and sort of explain how you're thinking about each piece and invite them to kind of follow longer or question you along the way and this will have a model for them on here the cognitive process that you're going through so another piece is called sequencing and really this is putting of structuring instruction into logical order right starting with 1 thing that's the sort subpoena sort of a simpler peace and and sort of slowly moving on the right the and you'll hear people argue about this kind of stuff sometimes in and say things that I I think a little silly like the site you should really learn C before you learn high-level language that and I don't think that's true but sequencing more specifically as to you want to d contextualize and contextualize so e decontextualized you practice or word articular piece in isolation so you might say well let's look at the Django R M in a Python shell and practice making different kinds of queries and looking at the data that we get back and then contextualizing is then putting it back into the Huallaga project or a larger piece and you say OK we're seeing what we did with the ORM now this do that in our view so that we get the data we need right and along the way with sequencing I encourage you to really think hard about the appropriate balance of structure and flexibility that and this can be a difficult balance other the more structured learning it's harder for learners to construct meaning based on their own conceptual understanding into the next in their meaning into other contexts in other words if instruction is incredibly structured the it's harder for someone to leave that on class workshop whatever and apply all those skills the however if you don't have enough structure there's not really been clear guidance right on and and people find it frustrating will just tell me you know what's the best practice you xyz right thus it so there's a balance there Tisch service an
example although inflexibility arm having Java specifically but uh it serves an example of inflexibility in your instruction many of us have had attended or witness sort of of freshman sort of CS class where the approaches wearing a focus on a given language the Java or it could be Python and the approach is something like OK in this session where your everything you ever wanted to know about anonymous inner classes OK so that was the problem with that right well we have so much structure here it would have going on each topic really deeply instead of following the spiral curriculum right and display the logo probably has an opportunity to see why an anonymous inner class whatever helpful right so so instead the constructive approach constructivist approach that I would recommend would be to start with just the basic concepts in isolation societies a strings these arrays and so on and then it is soon as you can contextualize them and say with work on a simple project that just does the small blind and what you find is that as they work on more projects and you increase the scope and you add more concepts right as they gain mastery they will find these language features and things on their own right go eventually say how you know I'm trying to do this and they'll explain a problem and you don't even need to say OK then we need to have a lecture about anonymous inner classes all you have to say is it looks like you need the decorator pattern maybe google that and look for in a classes and that's all you need is set right now the learner has enough context enough meaning that they can go research that can empower themselves and learned on you know so in Python that might mean something more like decorators your generators or something like that as you know a fairly advanced concept right arm is not effective to say I'm going to tell you everything you wanna know about the yield state right here but instead as the encounter that problem naturally a prior and processing this huge Apache log in it can fit an array element you say off you need to generate then often RAM go look it up right and then help them you if they need it but I the I think it's important to kind of keep that flexibility going
OK so people often ask about sort of various prescriptions idle always honestly feel that I know enough to say these are these are the resources because there's so many great resources right and it's really hard to order them to write a lot of interest in different things on but if if on helping someone the word I can think about is that I think the gender roles tutorial again is the best 1st intro to gender it after that I think with some coaching the official denote no tutorials good again with with some help after that I think someone's ready to kind of do a small self-guided project on their old maybe just a couple of user couple models that sort of thing incursions kind of look up the gender documentation and can kind of do that after that TD in Python by Henry Purcell's great book for them to sort of self study and and kind of and and moving on from there by the time they're ready to collaborate with folks and on on on sort of moderate size project that's what it's really great like let's skip this person hires a junior Belper somewhere right on the get and get held all these kinds of things on that's really hard to do by yourself right on OK so these are some of my ideas about about some good some good learning tools or and roughly good order on but again I I can I hesitate to say this is 1 size fits all in the end all be all of our you know how you structured Jaina learning the so I did 1 specifically thank the creators contributors and Zhang ON OFF also authors of documentation tutorials stuff because you made gender really a joy to teach you know I talked about what some challenges on some the pain points and some things that maybe can be better on but the really teaching gender was great and it's because of how many of you including community organizers and also wanted to think mine in a minute Towards a cactus that you copy Django and thank you for listening it thank you so this time we can do some work 9 should the so I think he's asking on if people are learning at different rates and is that that's the idea right OK right so the people that ahead is kind of harder to to catch the other people or thing is what he's saying and so on the yeah I don't know I I feel like 1 of the things certainly is while I was a cactus the culture was always very much into warring culture of the people that were further ahead in spending some time sort of helping OMB and so I don't know exactly where all that's that's coming from within the organization but I would say it's it's good if you can sort of privilege the idea of you know the developers and stuff take taking some time to kind of help people and maybe that's pair programming it may that you know is is different kinds of things that I made this lunch talks and I don't know but the I I think we want to sort of foster a community in which so that the people that are MIT naturally sort of further ahead or something more are willing and able to to this sort of take the time and sort of foster growth and other people should so she's she's asking on if you're encouraging people to run into their own problems and then find the solution right beings prescriptive and saying here's your anonymous inner classes or whatever else right there then how do you help them identify mean that's a need on to and 1 of the things is that's country can with this is I think that there's a bit of all internal armed there has to be some motivation so what what the issues as I've seen people before that you know they're they're doing some of was just say query spaghetti and someone says you really need you back like this is going to help you you structure everything all but the last and with what they're doing they're saying all this works like this is fine right of and so the idea is difficult sometimes but I think they found through the way that I I can try to do it is to let them use their hammer for a little while to screw in right let them feel the pain a little bit and you know all because that is is a really good teacher itself right like once they've once they've gotten deep into the you know whatever GE query soup they've made right they can eventually sigh of this is why you're trying to show me another way to do it all so hope that addresses the question well a great feel free to ask me I'll sort of thing right here but my hands and my