A Dagstuhl Discussion about Social and Professional Practices

March 9, 2016 at 8:00 am 2 comments

Another of the breakouts that I was in at the recent Dagstuhl seminar on assessment in CS learning focused on how we teach and assess in CS classes social and professional practices. This was a small group: Amy Ko, Lisa Kaczmarczyk, Jan Erik Moström, and me.

Amy and her students have been studying (via interviews and surveys) what makes a great engineer.

  • They’re good at decision-making.
  • They’re good at shifting levels of abstraction, e.g., describing how a line of code relates to a business strategy.
  • They have some particular inter-personal skills. They program ego-less-ly. They have empathy, e.g., “not an asshole.”
  • Senior engineers often spend a lot of time being teachers for more junior engineers.

Since I’ve worked with Lijun Ni on high school CS teachers, I know some of the social and professional practices of teachers. They have content knowledge, and they have pedagogical content knowledge. They know how to teach. They know how to identify and diagnose student misunderstandings, and they know techniques for addressing these.

We know some techniques for teaching these practices. We can have students watch professionals, by shadowing or using case-based systems like the Ask systems. We can put students in apprenticeships (like student teaching or internships) or in design teams. We could even use games and other simulations. We have to convey authenticity — students have to believe that these are the real social and professional practices. An interesting question we came up with: How would you know if you covered the set of social and professional practice?

Here’s the big question: How similar are these sets? They seem quite different to me, and these are just two possible communities of practice for students in an intro course. Are there social and professional practices that we might teach in the same intro CS — for any community of practice that the student might later join? My sense is that the important social and professional practices are not in the intersection. The most important are unique to the community of practice.

How would we know if we got there? How would you assess student learning about social and professional practice? Knowledge isn’t enough — we’re talking about practice. We have to know that they’d do the right things. And if you found out that they didn’t have the right practices, is it still actionable? Can we “fix” practices while in undergrad? Maybe students will just do the right things when they actually get out there?

The countries with low teacher attrition spend a lot of time on teacher on-boarding. In Japan, the whole school helps to prepare a new teacher, and the whole school feels a sense of failure if the first year teacher doesn’t pass the required certification exam. US schools tend not to have much on-boarding — at schools for teachers, or in industry for software engineers (as Begel and Simon found in their studies at Microsoft). On-boarding seems like a really good place, to me, for teaching professional practice. And since the student is then doing the job, assessment is job assessment.

The problems of teaching and assessing professional practice are particularly hard when you’re trying to design a new community of practice. We’d like computing to be more diverse, to be more welcoming to women and to people from under-represented groups. We’d want cultural sensitivity to be a practice for software professionals. How would you design that? How do you define a practice for a community that doesn’t exist yet? How do you convince students about the authenticity?

It’s an interesting set of problems, and some interesting questions to explore, but I came away dubious. Is this something that we can do effectively in school?  Perhaps it’s more effective to teach professional practices in the professional context?

Entry filed under: Uncategorized. Tags: , , , .

Notional Machines and Misconceptions in CS: Developing a Research Agenda at Dagstuhl Helping Adults to Learn while Saving Face: Ukulele and MOOCs at Dagstuhl

2 Comments Add your own

  • 1. Alan Fekete  |  March 11, 2016 at 3:21 pm

    Thanks, Mark, this is a very interesting post. But it’s not just about the cultural norms, where there is a tension between teaching what is, versus what should be (perhaps one could say “current-practice” versus “best-practice”). Given the appalling track record of failed IT projects, similar issues arise in teaching the technical topics: should we teach students how software projects are usually done, or how we believe they can be done better? The University of NSW for a long time centered its Software Engineering degree around formal methods, in with very deliberate goal of changing the practices of the community to which the graduates would join (see Ken Robinson’s acocunt in Teaching Formal Methods 2004 – doi:10.1007/978-3-540-30472-2_13). There are also several university curricula that espouse Functional Programming, even though that is clearly not yet standard in the likely employers of graduates.

    My own view is that one MUST teach students about what actually happens, even if one hopes they will see the drawbacks, and even if one also teaches them alternative approaches as a contrast. I think we do students no favors to hide them from ugly reality. For example, a graduate should be aware that many open source communities are deeply sexist and disparaging (see the work, unfortunately now ceased, of adainitiative.org), many database applications do not deal properly with concurrency (see the fact that Oracle’s DB and SAP HANA still don’t actually offer even an option for true serializability, or the empirical investigation in the paper of Peter Bailis, myself and others on Feral Concurrency Control, from SIGMOD’15), many organisations that call themselves “agile development” still demand huge and slow process burdens, etc. Professionalism doesn’t mean the graduate needs to adopt the practices of the community, but they must be able to function within it and know what is going on.

    • 2. Mark Guzdial  |  March 11, 2016 at 10:02 pm

      In Chapter Two of my book “Learner-Centered Design of Computing Education,” I suggest that Lave & Wenger’s theory of situated learning predicts that teaching students how things “should be” is unlikely to work. Students recognize inauthentic practice and reject it, because it’s counter to the values that they see in the community of practice.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Trackback this post  |  Subscribe to the comments via RSS Feed

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 10,185 other subscribers


Recent Posts

Blog Stats

  • 2,060,401 hits
March 2016

CS Teaching Tips

%d bloggers like this: