Email or username:

Password:

Forgot your password?
mhoye

Lazyweb, a question: let's say that you could teach a "cultural anthropology" type of course about computing to first year students, to prepare them for the codebases, communities, patterns and software philosophies of the programming world. You've got about ten weeks to run it. What would you teach in that course and why?

(RTs appreciated for reach.)

139 comments
Rye

@mhoye System Design, Statistics, White Boarding, and starting with design first. Happy to discuss more, I've been teaching workshops to people learning locally. Happy to chat more.

Probertd8

@mhoye I'd listen to anthropologist Worf!

Paul Cantrell

@mhoye
If it were me teaching it, the argument in this thread would be my anchoring line of thought: hachyderm.io/@inthehands/11197

The Old C Dog

@inthehands @mhoye I was going to reply with "learn how to communicate and learn to ask 'why?'" but you've put it far more eloquently in this thread.

Paul Cantrell

@badlydrawn @mhoye
Well, that’s a message that bears repeating in many many forms. “Broken record therapy,” as my retired psychologist dad says.

The Old C Dog

@inthehands @mhoye funny coincidence ... I was trying to explain the idea of a stuck record to some younger team members only yesterday.

Mr. Completely

@mhoye first of all, a "how to work in teams" course or ten is apparently badly needed given my experience hiring recent CS grads, so this is a great question. I lack the breadth of experience to design such a course that would cover a wide enough range of possibility. But I would start with
non-programming associated disciplines, toxic vs healthy team dynamics, work/life balance, communication styles, code review cultures (taking/giving peer critique) plus "here's what the buzzwords mean"

Mr. Completely

@mhoye I think detailed examples of several wildly different work groups would be informative. This small team is all senior level and above, they have very lightly written specs, no PM, write all their own tests, bitch a lot but are really fine, etc. This large team has UX including both functional and UI specs, dedicated QA, intricate PM process etc. This gang of adorable cutting edge loons is building a game from their various polycules spread across several time zones.

Mr. Completely

@mhoye I think about this a lot so I'll stop there, I could go on about "things I wish greenies came in knowing that aren't about computer science" for quite awhile

I mean the main thing though is software is just ideas and is made by people and so if you got into computers to avoid people you're actually about to get a rude shock, but if you like people you'll actually do great in a healthy workplace

jr conlin —〰—

@mrcompletely @mhoye

Oh God, this

Schools are terrible at teaching how to work in teams and junior devs fall into endless rabbit holes because they don't know how and when to ask for help, or let their pride prevent them from asking questions.

It would also be delightful to instill a good mentor experience as well, so that they have a less toxic base to work from.

Mr. Completely

@jrconlin @mhoye yep just assume I have to teach most non senior devs how to work in a team. And we have a super healthy communication driven work style where everyone is in everyone's tickets and code all the time so it's a bedrock requirement (outside our platform team which at this point is just super senior staff engineer wizards and another whole style)

Tim is wearing a mask 🌈

@mrcompletely @mhoye
My BEng course included plenty of "working in teams" exercises, but didn't do a good job of teaching team work or having retrospectives on how the teams worked.

J Miller

@spodlife @mrcompletely @mhoye

Yes, this is very true and important. A lot of faculty avoid teamwork themselves. A good research-based tool to improve student teamwork is CATME.org.

Tim is wearing a mask 🌈

@JMMaok @mrcompletely @mhoye
Interesting! Comprehensive Assessment of Team Member Effectiveness. Link for people following along: info.catme.org/

socketwench

@mhoye The first thing I would do is what my own Anth classes did:

Start with all the atrocities this field helped enable.

Not a very positive start, but it sets the *tone*. You end up thinking, "How can [this code I'm writing] be used for oppression or death?" a *lot*.

(I actually took CSci and Cultural Anth in parallel in college.)

ansuz / ऐरन

@mhoye off the top of my head, non-exhaustive, and not necessarily in this particular order:

0. An introduction to Elinor Ostrom's refutation of the "Tragedy of the Commons" and related work
1. Conway's law
2. Goodhart's law
3. an overview of at least one of David Graeber's "Utopia of Rules" and "Bullshit Jobs"
4. a deep dive into the CIA's "Simple Sabotage Field Manual" (openculture.com/2022/01/read-t)

...though I'm very conscious that this list is almost entirely by men 😕

@mhoye off the top of my head, non-exhaustive, and not necessarily in this particular order:

0. An introduction to Elinor Ostrom's refutation of the "Tragedy of the Commons" and related work
1. Conway's law
2. Goodhart's law
3. an overview of at least one of David Graeber's "Utopia of Rules" and "Bullshit Jobs"
4. a deep dive into the CIA's "Simple Sabotage Field Manual" (openculture.com/2022/01/read-t)

mhoye

@ansuz The Simple Sabotage Field Manual is something I assign in every class I teach. "Not so that you have the ability to sabotage projects you're a part of, but so that you have a language for recognizing when it's happening to you."

ansuz / ऐरन

@mhoye exactly! I've referred colleagues to specific pages before in response to their insistence on or enforcement of particular organizational processes.

"you are literally mandating CIA sabotage as a matter of internal company policy"

ansuz / ऐरन

@mhoye people tend not to like when you point that out, though 😅

medium rare bird

@mhoye I would be inoculating them against the UNIX cult for two weeks, teaching the capitalist tragedy of the web for a week, and sending them to therapy for seven weeks

David Beazley

@mhoye I know I'd include chapter 5 from "A Voyage to Laputa, etc." in Gulliver's Travels.

emily dogmom

@mhoye software netiquette and why it exists (how to ask for help, how to write a good bug report, brief explanation of the reasoning behind mailing list etiquette, how to interpret feedback on a code review or technical proposal). Actually the "how to receive code review" one is big in general

Jon Williams

@mhoye Day one would be a profanity-laced rant hitting the high spots in @histoftech Programmed Inequality entitled “You may ask yourself, ‘how did I get here?’”

Erik

@mhoye Great question!

I'd probably start with complexity (Fred Brooks "No Silver Bullet" and maybe "Out of the Tar Pit"). You could potentially frame all software culture as a philosophical approach to complexity: managing/reducing it.

Probably then I'd want to look at hacker culture (Cliff Stoll? Morris worm, Mitnick, captain Crunch) and then talk about open source (The Cathedral and the Bazaar).

It's maybe odd that open-source software practices became common in industry.

Leigh Dodds

@mhoye

- a look at the typical artefacts found in software repos and the infrastructure around them. So from README/LICENSE/CONTRIB through badges in README, to dependabot, etc. As a way to publish to norms and navigate a project

- implicit and explicit norms around bug reporting and pull requests

- project archetypes and maintenance styles, see e.g. Nadia Eghbal book.

- primer on different licences and their intent

Leigh Dodds

@mhoye

- how to work in public and how it can go wrong

- forking, as a process for contribution but also as a means of exercising rights

- discussion of different forms of contribution

...are the things that spring to mind.

Paul Houle

@mhoye I'd like to start with some kind of structured "hackathon" experience that would colocate beginners with more experienced people and let people see what it is like to go from zero to product, give some formal instruction, have another hackthon at the end.

J Miller

@mhoye

I’ve sometimes taught courses where the main assignment was students working in teams to write a case study suitable to be assigned in future iterations of the course. That could work well if the instructor has some background in case study teaching.

Having students collaborate on their text drafts using git for version control might be good, because it would separate understanding the process from knowing how to code. (Or that might be terrible, just spitballing here.)

Tim Allison

@mhoye I actually had an "Introduction to Working in Open Source with the Apache Software Foundation" deck at one of my former employers. It would be too focused for this use, but it could offer some insight into one of the major players in open source development.

Drew Breunig

@mhoye Damn. This nerd-sniped me. Thanks @b0rk. Here's my knee-jerk syllabus in 15 minutes...

DELETED

@mhoye Hypersummarised: "Lots of people are great at coding. Many of them think that's enough. They are wrong."

David Ellis

@mhoye a cultural anthropology of computing is a very broad topic. I see some of the replies are on common modern software development practices, which is useful but seems pretty narrow.

I think going into the actual cultural sub-groups that have come and gone over the past ~80 years would make more sense to me. How programming was considered women's work in the US in the early days, then co-opted by men as prestige in the work went up, how the Cold War affected software licensing and sharing, the GNU reaction to that (and you gotta include a picture of "Saint IGNUcius" just for fun here), the development of other OSS groups like Apache and the creative commons once the internet became common. There should be some talk about the broader impact of these things on the rest of the world just as the rest of the world helped shape these things.

Finally the end of it could be going into various common subgroups in existence today and what practices they follow, not judging which are best.

@mhoye a cultural anthropology of computing is a very broad topic. I see some of the replies are on common modern software development practices, which is useful but seems pretty narrow.

I think going into the actual cultural sub-groups that have come and gone over the past ~80 years would make more sense to me. How programming was considered women's work in the US in the early days, then co-opted by men as prestige in the work went up, how the Cold War affected software licensing and sharing, the...

Andromeda Yelton

@mhoye Something about agile -- what it is, why it arose, the fact that everyone uses this term but no one uses it the same way. Agile manifesto, some of the 18F/USDS stuff (the healthcare.gov diving save is a great case study but also seeing how government navigates this illuminates real-world constraints). Why, because it's ubiquitous, even if more in the breach than the observance - and it lets you pull on threads of why projects succeed/fail.

Andromeda Yelton

@mhoye Something about allied professions. This is what a UX person does and how it contributes to successful product development. Similarly project manager, product manager, technical writer, etc. Maybe have guest speakers, who are often fun in classes. So they know it's a team sport; that dev isn't the only skill required; and maybe they won't be assholes to these people.

Andromeda Yelton

@mhoye Some kind of excuse to read at least excerpts from *Unlocking the Clubhouse*, look at graphs of women CS majors pre/post mid-80s, and those studies about how (e.g.) women's PRs are relatively unsuccessful if their name/avi are feminine and relatively successful if not. Because it isn't all meritocracy, that book might be PAINFULLY RELATABLE even now to female students, and also maybe we should stop being like that; there's a hell of a good universe next door. (Generalize to other groups.)

Andromeda Yelton

@mhoye Maybe something about evaluating a dependency for suitability in a project. This means pulling on licensing but also *the community around the project* : number of stars/forks, do issues get closed (& what's the conversation like), are PRs getting merged, etc. Because software is actually an ecosystem and a lot of learning/dev is social.

Andromeda Yelton

@mhoye Actually before I did this syllabus I would reread *Kill it with Fire* and I would do anything in my power to get an hour of Marianne Bellotti's time for advice on this question. (She is literally an anthropologist who ended up in computing. Possibly likewise with Jennifer Pahlka's book; lots of interesting stories of software playing out in the real world (...beyond SV because omg the whole world is not SV).

Andromeda Yelton

@mhoye oh and I might find an excuse to read the therac-25 paper even though it may not strictly be within this course's learning objectives because people should just have read that

Dorothea Salo

@mhoye I teach a course that's within a loud shout of this. It's called "Code and Power." You can find old syllabi on my teaching page: dsalo.info/teaching/

brennen

@mhoye the things i've had to teach computer science graduates in the past range from "i wish these kids had gotten a methods course re: version control, code review, shell basics" to "i wish somebody had taught these kids to program in any way" to "look, here are some sociopolitical dynamics that you're going to hate for the rest of your career"

Jaimie Murdock

@mhoye GNU, Cathedral and the Bazaar, version control (CVS, SVN, Git), software licensing ("copyleft"), "embrace, extend, extinguish", StackOverflow, continuous integration ("DevOps"), shareware, SaaS, "sneakernet" (and the arms race of piracy/DRM)

mhoye

@Jaimie CatB is a hard no. That text has aged extraordinarily badly, as has its author.

Luis Villa

@mhoye a final essay exam question could be "here's a one-paragraph summary of CatB, explain why it resonated in the late-90s and what it got wrong".

(You can also borrow from my fav compsci prof, who on occasion assigns "explain this XKCD" as a final exam question...)

Misuse Case

@mhoye You need to design for the workflow of your users and around the pain points of your users. This means before you write a single line of code you need to map what the users are doing first.

So the course has to drill that into students plus teaching participant observation and semi-structured interviewing.

James 🦉 #FBPE :europe:

@mhoye Dunning-Kruger, Imposter Syndrome, resulting false self images and their consequences (such as gaslighting and confirmation bias); how to identify this in oneself and one's colleagues, how to protect against it from others, and how to transcend it yourself, and get comfortable with not knowing and with others not knowing.

Faintdreams

@mhoye

- Engineering Disease is real
- Spending too much time on Hacker News can rot your brain and reduce your capacity for Human Empathy
- Ditto Reddit
- When building something that Bad agents could easily use to cause harm to others, never assume that 'Nobody would ever do X'. Ensure that doing X is more trouble than it's worth for the Bad Agents.
- When testing software / products make sure to have more women as test subjects, actually more minorities in general

Flowers

@mhoye The Mythical Man Month still has some wisdom left in it, mostly around operating in high-complexity environments and managing requirements.

Holiday Bill

@mhoye Maybe run it as a sim? Pick a popular but understaffed open source project, give them a goal of integrating it but also fixing one or more outstanding bugs or popular feature requests and ensuring that the PRs get back into the project. Also give them a continued courseload at the same time, and, ideally, coordinate the assignment with a parallel team at an institution in an opposite time zone (> 5 hours difference)

J Miller

@wcbdata @mhoye

This is intriguing. Would require a lot of consideration to grade them on their cultural anthropology learnings rather than their previous experience with contributing to open source. Huge equity issue in both first year CS and OS community. As you probably both know already.

Holiday Bill

@JMMaok @mhoye Definitely true. I recall someone I knew who was in Colorado State's online MBA program a while back saying that some of the most important lessons they learned were from coordinating team projects with classmates all around the globe, with different first languages, and at varying levels of technical proficiency...

J Miller

@wcbdata @mhoye

I also like reality-based learning.

In the movie version of this in my head, the male students leverage their slightly greater level of experience and much greater confidence to dominate the technical aspects of the project, blithely ignoring the lessons of cultural anthropology, until the last week of class when the other students roast them on the cultural anthropology and get As.

Holiday Bill

@JMMaok @mhoye Also true. I lucked out by going to a women's college* for my business degree, so there were many non-male peers and strong support from profs, but even then, this pattern was evident, and we had to be very deliberate about how group decisions were made and responsibility distributed...

*non-traditional program was co-ed, but still predominantly non-men

Chris [list of emoji]

@mhoye

I've had the outline of a lightning talk in my head for a while. It goes like this:

Here are the significant tech advances of the last N years:

[jumble of logos]

And here are the successful tech startups of the last N years:

[more logos]

And here's the overlap:

[ Venn diagram showing almost none]

In your tech life, you contribute to something significant and you may get rich, but you won't do both.

Plan accordingly.

Michael Hanson

@mhoye Lots of great answers already in the thread. I think that, in 2024, there needs to be at least one session on "ML/AI In Practice"...

* how is training a model different than writing an algorithm
* how to think about data, about training, about inference
* how to improve the quality of a classifier, a predictor, a transformer
* what people with ML/AI backgrounds expect to get from software engineers, and what you should expect from them
* how to talk about safety, bias, and error

Alessandra Sierra

@mhoye “Zero to One,” not as a model to follow but because it explains how a lot of the tech industry thinks.

the_wiggler

@mhoye I want to take it, not teach it. :owi:

I suppose a bit on the evolution of source management would be neat.

Go over various philosophies towards testing and documentation. Bias this towards DOING THEM.

How to look through a codebase and extract information about the culture by identifying things about the code over time, making like... Code Strata. But first I'd have to lean to do that myself.

the_wiggler

@mhoye I think that last one may not be an intro
class...

Jennifer Moore

@mhoye

Amazing thread! And makes me think 10 weeks is not at all enough :-)

Dipole

@mhoye I don't feel qualified to come up with a whole course outline, but here are some things I'd for sure want to put in:

-success and failures in abstraction, generalization, and specialization, to help make the students more thoughtful of not just how but whether to apply more of one of those to a project
-showing how the interpretation of common phrases/concepts, like "object oriented", have had varied and evolving interpretations, and how different languages, patterns, and guidelines have approached the supposedly-same idea in different ways
-compare different language and library abstractions that fulfill the same objective, such as comparing exceptions and sentinel values to sum types

@mhoye I don't feel qualified to come up with a whole course outline, but here are some things I'd for sure want to put in:

-success and failures in abstraction, generalization, and specialization, to help make the students more thoughtful of not just how but whether to apply more of one of those to a project
-showing how the interpretation of common phrases/concepts, like "object oriented", have had varied and evolving interpretations, and how different languages, patterns, and guidelines have approached...

Claudius

@mhoye You absolutely need to teach filesystems now (meaning: how files are organized in directories ("folders")) because most kids these days(tm) do not get in contact with regular files any more. And this lack of understanding will make it much harder to teach some of the other concepts.

Also, you need to know about ASCII (and please build UTF-8 on top of that).

Stuff from XEROX Parc doesn't hurt (early computer interaction), early computer graphics (conway's game of life) is always nice.

Claudius

@mhoye going through the other answers, I realize that I might have misunderstood your question. Anyway: please take what suits your course and feel free to leave out anything else :-)

Marcus Müller

@mhoye depends a bit on the program you're doing this for. Is this more software engineers or more mathematical computer scientists?

Anyways, probably run them through the gamut of things that software actually is used for (electrical engineers in safety-critical disciplines are sometimes a bit confused about the break things and maybe move fast philosophy of modern web-centered SE; people in modern software companies by the lack of good tooling in embedded. Aerospace by the lack of req. eng.;

Marcus Müller

@mhoye and this all leads to different company philosophies).

Then look at one or two projects that involve software development and look at what the challenges are that needed to be tackled, and how cooperation within and between teems, with vendors, libraries, users, and API consumers happens.

Look at incentive structures for different people in different constructs (FOSS enthusiast after work; PhD cand; software employee in car industry; employee at large software company; manager there),

Marcus Müller

@mhoye and the social struggles they have. Is it time pressure? Money? Disconnect from management? Appreciation? Disconnect from the purpose of the software?

I'd probably also take a lecture to talk about quantifiable effects of lack of gender equality, and diversity (if you can find an expert at a different faculty, invite them?).

Talk about how FOSS projects survive differently than companies. Talk them through a contribution to someone else's (or another team's) codebase in both cases.

EOF

Marcus Müller

@mhoye I just realized that "first semester" means that students still think they'll be developing the next big AAAA game alone; you might want to very brutally clean up that misconception.

Gianni

@mhoye A thing I would want to work in is teaching how to find and remove Chesterton's fence.

Gianni

@mhoye And the very related: finding out what is actually running in production.

Vladimir Tarasov

@mhoye this guy if he agrees: leanpub.com/u/laurentbossavit Check his book, If you didn't read it. Great stuff.

Luis Villa

@mhoye I suspect you're looking for things that are more article length, but Biella Coleman's Coding Freedom is A+: press.princeton.edu/books/pape

perfect brains

@mhoye

one wonders if this is a real instructor trying to use this forum to create curricula that he cannot create himself

if that is true then he is not prepared to be an instructor. An instructor must be an expert in the field they teach, and they must be able to categories knowledge and teach it.

in any case you have already defined the 4 sections of the course
codebases
communities
patterns
software

do you know the anthropoligical content of each of these areas?

@mhoye

one wonders if this is a real instructor trying to use this forum to create curricula that he cannot create himself

if that is true then he is not prepared to be an instructor. An instructor must be an expert in the field they teach, and they must be able to categories knowledge and teach it.

João Rosa

@mhoye I would use Open Systems Theory as a frame for:
- group dynamics, and why software is more than just coding g
- effective diffusion of learnings

Su-Shee

@mhoye history - how things in the computing world come into being, how computing has also fashion cycles (how do they develop?), "computing culture" of different countries, heritage trees (who is influencing whom/what)

Su-Shee

@mhoye papers like "worse is better" come to mind or Gabriel's excellent reflection on what later turned ibto design pattern, the origin papers of agile (eg the crysler paper), manifests like extreme programming, make them watch the douglas crockford javascript talk series, a couple of famous rants don't hurt either.

Kaleissin

@mhoye Start of with some good yarns from the Demoscene and build them up to their own demoparty

Ampelios

@mhoye I would teach them to design software for people, not bludgeon people into learning software.

My bestvprogramming prof said: "Language doesn't belong to you. You can only borrow it from the person you're speaking to."

Figure out the UI needs FIRST and design the software to suit, or you will have frustrated unhappy users.

You're not smarter than your users if you refuse to speak THEIR language.

So many programmers think they can just SHOUT LOUDER. No.

Ian Jackson

@mhoye The computing world's astonishingly pathological neophilia and faddishness.

ajn142

@mhoye can I make them read the Mythical Man Month?

Hart of the Wud

@mhoye Some readings that might be helpful:
- Ursula Franklin - The Real World of Technology
- Olia Lialina (@GIFmodel) - Turing Complete User
- Femke Snelting (@Femke) - Awkward Gestures
- Maybe Friedrich Kittler - "Protected Mode" or "There is no Software"
- The Permacomputing WiKi - permacomputing.net/

And there was this paper I read from some management consultants written about 15 years ago that was called something like "Why the majority of software projects fail." A really good empirical argument that most of the failures of development occur because the business people can't communicate what they want. Sadly, I can't find it right now.

@mhoye Some readings that might be helpful:
- Ursula Franklin - The Real World of Technology
- Olia Lialina (@GIFmodel) - Turing Complete User
- Femke Snelting (@Femke) - Awkward Gestures
- Maybe Friedrich Kittler - "Protected Mode" or "There is no Software"
- The Permacomputing WiKi - permacomputing.net/

tuban_muzuru

@praxeology @mhoye @GIFmodel @Femke

Failed projects sometimes arise from developers who thought they knew better than the business.

Tim Cowlishaw

oh, everything that @praxeology said, plus:

The Boy Kings - Katharine Losse
@npseaver's ethnographic work on recommender systems
The front matter of sarabander.github.io/sicp/ might be interesting through a kinda critical / historical lens
Ullman's "The Bug" might also be fun (it's a novel, but a very well-observed one, and i bet it'd be very generative of interesting discussion)

wakest ⁂

@praxeology @mhoye @GIFmodel @Femke seconding Ursula Franklin, I think she would be a wonderful lens to teach the whole thing thru

dodgy theories

@mhoye

Get a bunch of grey beards from various local companies, including freelancers etc to talk about their careers.

ianto

@mhoye wow. This looks like a whole stack of rabbitholes to go down, and I can see myself going down a bunch of them. Cheers!
My unqualified contribution would be to look at RFCs, how they came about, how they work, why they didn't evolve into anything more complex.

meta physical deflationist

@mhoye id start with the history of labor in computing from women in basements to foss and xp/agile
then on SOA and its misuses and how FAANG scale patterns began microservices and "move fast break things" and how its all bad
with slight digression onto circular hype machines and focusing on the basics

rablewis

@mhoye I would include the RFC process of the IEFT. Engineers collaborating publicly and intentionally on proposed standards that live or die based on experience gained through real implementations. Lots of proposals. As they are public, anyone can implement. Only RFCs with multiple successful implementations survive long term. The result is broad inter-operability of networked systems.

Terri O 🍁

@mhoye I took a course like this at the grad level. Things that stood out:

- open source dev models (we had a critical look at The Cathedral and the Bazaar but that might not be the right choice for first year students as opposed to a class of 10 argumentative grad students who wanted to pick apart ideas and discuss what aged well and what didn't)
- waterfall to agile development. We read the original paper that coined the term and I was delighted to learn that it actually said no one really did a waterfall and it was more like many tiny waterfalls
- negative design patterns, like Big Ball of Mud and spaghetti code.
- my prof's funny story about how he accidentally DDoSed all of New Zealand where he was living at the time. I mean, it was a funny story, but it also got the class talking about practicalities of internet topology of the time which was pretty useful and informed many of my feelings about geoip lookups and mirroring for some years thereafter.

@mhoye I took a course like this at the grad level. Things that stood out:

- open source dev models (we had a critical look at The Cathedral and the Bazaar but that might not be the right choice for first year students as opposed to a class of 10 argumentative grad students who wanted to pick apart ideas and discuss what aged well and what didn't)
- waterfall to agile development. We read the original paper that coined the term and I was delighted to learn that it actually said no one really did...

Azure Jane Lunatic

@mhoye The importance of moderation tools and user-to-user access controls, with a quick profile of various threat actors. State, spam, griefing, mob stalking, individual stalking without everyday access, abusive close contact with everyday access. wiki.dwscoalition.org/wiki/ind

Ben Zanin

@mhoye I would love that course to focus the first ⅓ on the names of all the contributors to the codebases run in computer shops from 1975 to the present, then in the second ⅓ fan that out into where the money came from, then in the final ⅓ the tooling currently listed in job openings with a breakdown of which companies foot the bill for the ongoing maintenance and development of said tooling.

Really drive the message home what problems computing is currently funded to address.

Brandon Haber

@mhoye This is a very thought provoking question. Best way I can think of is organizing it historically/chronologically? Talk about all the major inputs/forcing functions to the culture (original huge government contracts + academia, then big business IBM, all the way to VC techbro). Shape it in the context of "why" we are where we are.

Dr.Implausible

@mhoye When I taught a "Science in Society" class for engineers, I used David Nye's "Technology Matters" as an accessible overview for critically thinking about the tech they use.

Rushkoff's "Program or be Programmed" could fill a similar role. It's less about anything specific regarding tech, and more about how it is used and engaged with.

tuban_muzuru

@mhoye

Programming in ten weeks: how many students? If there are 10+ , you give each student a significant aspect of software and more importantly, of data.

You pick out the ten aspects.

Duchamp Pérez

@mhoye 1. Do ethnography at a local meetup
2. Talk about oral history. Then explain that most systems' documentation is held as an oral tradition
3. Code is a cultural artifact. It is hard to understand without cultural context, which is often held as oral tradition
4. One can never write all of culture down. The same applies to your system. So write clues to make systems discoverable
5. Talk about ethnocentrism. Each tech community has a degree of it.
6. Talk about US tech culture being an expression of US culture.
7. Talk about eurocentrism. In computing, this gives us an advantage of those of European descent. It also is a weakness because we are less aware of alternatives

@mhoye 1. Do ethnography at a local meetup
2. Talk about oral history. Then explain that most systems' documentation is held as an oral tradition
3. Code is a cultural artifact. It is hard to understand without cultural context, which is often held as oral tradition
4. One can never write all of culture down. The same applies to your system. So write clues to make systems discoverable
5. Talk about ethnocentrism. Each tech community has a degree of it.
6. Talk about US tech culture being an expression...

John Skiles Skinner

@mhoye
I have thoughts because I've been interviewing early-career software engineers a lot lately.

Lots of them learn the early parts of the SDLC in school, but it's much harder to get exposed to the later parts: deployment, maintenance, monitoring, ongoing security. These are driven by culture and hard-won experience from industry, responding to various failures from running software at scale and teams over time. Teach why DevOps exists, why Agile, etc.

Mike Macgirvin (dev)
Day one. Your systems have been hit by an ongoing DDoS attack involving over 2 million unique IP addresses. All your servers have been infected by a CryptoLocker. No computer that was connected to the internet in the last 24 hours can be trusted. The CEO is waiting for you at your desk when you arrive for your first day. Somebody brought in some coffee from 7/11. The ability for your team to get paid on payday means you need to restore accounting, but you'll need to get the public facing servers working first or the investors will bail and the company will be bankrupt.  

We'll teach you algorithms, codebases, and design patterns starting in week 9.
Day one. Your systems have been hit by an ongoing DDoS attack involving over 2 million unique IP addresses. All your servers have been infected by a CryptoLocker. No computer that was connected to the internet in the last 24 hours can be trusted. The CEO is waiting for you at your desk when you arrive for your first day. Somebody brought in some coffee from 7/11. The ability for your team to get paid on payday means you need to restore accounting, but you'll need to get the public facing servers...
Raphaël Bastide

@mhoye I’ll do that by practicing (making web things together) and discussing. That is what I do with my 1st year students at ENSAD paris. I can give them English readings, but they will not read them.

John :hacker_b:

@mhoye It's a cliche, but what cult anth is good at is making the familiar strange and showing that things could be otherwise, so I think that would be my main objective in a course like this.

That means I'd include a fair amount of history of technology. The volume Your Computer is on Fire is a good entry point into this literature that really drives home the urgency of taking a historical perspective: doi.org/10.7551/mitpress/10993

There are numerous ethnographies of computing related topics that I would draw on for certain themes (depending on course objectives and student interests): hackers (Coleman, Kelty, Dunbar-Hester), labor (Irani, Amrute), datafication (Schüll), recommender systems (Seaver), materiality and environmental impacts (Hogan, Monserrate), and many more.

My colleague Rodrigo Ochigame gave a very nice keynote last year systematizing the various contributions of anthropology to these kinds of debates. I'll follow up if it turns out that is public somewhere.

A few other useful entry points: Digital STS (digitalsts.net/), Digital Keywords (doi.org/10.1515/9781400880553), Defining Concepts of Digital Society (policyreview.info/archives/201).

@mhoye It's a cliche, but what cult anth is good at is making the familiar strange and showing that things could be otherwise, so I think that would be my main objective in a course like this.

That means I'd include a fair amount of history of technology. The volume Your Computer is on Fire is a good entry point into this literature that really drives home the urgency of taking a historical perspective: doi.org/10.7551/mitpress/10993

John :hacker_b:

@mhoye here are some details on Rodrigo's talk called "Anthropological Strategies for Reimagining the Digital": antropologen.nl/anthropology-d

My notes:

- 1970s: observing human-machine interactions: Lucy Suchman
- 1990s: questioning artificial "intelligence" and "life": Diana Forsythe; Stefan Helmreich
- 2000s: studying virtual worlds: Tom Boellstorff; _Race in Cyberspace_
- exposing the hidden labor behind automated systems
- investigating unintended consequences of algorithmic systems
- studying material infrastructures and environmental impacts of digital infrastructures
- comparing diverse uses and designs of digital media around the world: Payal Arora
- thinking with activists, hackers, free & open source software advocates
- adopting digital methods and interactive media in ethnographic research
- studying how digital technologies could have been designed otherwise

(apparently I got distracted toward the end...)

@mhoye here are some details on Rodrigo's talk called "Anthropological Strategies for Reimagining the Digital": antropologen.nl/anthropology-d

My notes:

- 1970s: observing human-machine interactions: Lucy Suchman
- 1990s: questioning artificial "intelligence" and "life": Diana Forsythe; Stefan Helmreich
- 2000s: studying virtual worlds: Tom Boellstorff; _Race in Cyberspace_
- exposing the hidden labor behind automated systems
- investigating unintended consequences...

John :hacker_b:

@mhoye oh, one more thing, since I agree with people replying that doing something hands-on is important: One exercise that Rodrigo does in "Digital Anthropology" is to have students read Turing's "Computing Machinery and Intelligence" and then to have them play the imitation game. It's really effective!

Andrew S. Hoffman

@jboy @mhoye hey @inquiline, you're mentioned in this thread but there might also be some other stuff relevant to your recent post seeking fresh lit on computing ...

Qybat

@mhoye A lot of programming culture still seems to be rooted in the Good Old Days, when programmers wore t-shirts and sneakers where everyone else wore suits, and spoke in a mixture of technical terminology and slang from the Hacker's Dictionary. When programming was just coding, and formalised project management processes were new. Technology experts may love innovation, but they are as susceptible to rose-tinted nostalgia as anyone.

Might have to disillusion a few old-school nerds.

mhoye

This has turned into a great thread, thanks everyone.

Christopher Bauer :debian: :i3wm: :blobcatthinkingglare:

@mhoye I saw your post but don't have any industry experience so I couldn't comment. Though you'd make a terrific research participant as the basis of such a body of work, and eventually, a course.

Since nobody chimed in, I'll ramble: from the perspective of what research exists, U.S. cultural anthro really only has a nacent grasp of tech - developer community outlooks, private sector logics and ideologies - fieldwork is limited in these areas. There is more research on social networks, relatively speaking. There is a field forming, particularly through research from other countries, but nacent is the word.

There is a disciplinary focus problem: many anthros are focused on people, not codebases: they really don't understand machines at the level of understanding what decisions a codebase implies, for example. That's where sources like you come in.

Also, your proposed course wouldn't be a US 100-level (not for the students I taught anyway).

@mhoye I saw your post but don't have any industry experience so I couldn't comment. Though you'd make a terrific research participant as the basis of such a body of work, and eventually, a course.

Since nobody chimed in, I'll ramble: from the perspective of what research exists, U.S. cultural anthro really only has a nacent grasp of tech - developer community outlooks, private sector logics and ideologies - fieldwork is limited in these areas. There is more research on social networks, relatively...

Christopher Bauer :debian: :i3wm: :blobcatthinkingglare:

@mhoye whoops, meant there's more existing research on "social media" (don't like that term....)

Todd Nelson

@mhoye @ashley for extra credit, have them watch "Halt and Catch Fire" for parallel development with hardware culture (when coders could all solder). Ashley has a syllabus you might enjoy (tangental, but fun).

Rocketman

@mhoye Ooof, this is very close to what I studied at university!

I would *not* teach coding and related architecture or methodology. They can learn that elsewhere.

Instead, you could explore why the tech world is the way it is. Looms, punch cards, Babbage/Lovelace. @JamesGleick ’s “The Information”. Shannon and Turing for compsci theory.

Lessig’s “Code is Law” + an intro to FOSS for practice. Top it off with @timnitGebru ’s stochastic parrots.

jorendorff
@mhoye A few thoughts

1. oh em gee those poor freshmuppets

2. Something that stuck with me ... I don't remember where I heard this but apparently a big reason we have a TCP/IP internet, and not any of a zillion other internetworking protocols developed around that time, is ICMP. The thing would actually deliver error packets that told you what was wrong and where.

Decent error handling can change the world.

Or less optimistically: people gravitate toward stuff they can get working. Every other measure of quality takes a back seat.
@mhoye A few thoughts

1. oh em gee those poor freshmuppets

2. Something that stuck with me ... I don't remember where I heard this but apparently a big reason we have a TCP/IP internet, and not any of a zillion other internetworking protocols developed around that time, is ICMP. The thing would actually...
Go Up