Cocoa Culture

With Hansen Hsu

Cocoa Culture

The last episode, I said I wasn’t sure there was such a thing as culture, but that’s not the case. Every place I’ve worked has been a bit different, and often those differences had huge impacts on the software we built.

The team where people roll their eyes at UX feedback will not have as simple of a product as a team where the user experience is highly valued.

If software performance isn’t valued, the end result won’t be performant.

Today, I found an expert on observing developer cultures. Hansen Hsu worked on the AppKit team at Apple, and he’s here to talk about this mushy concept called culture. How does it manifest? How does it affect what people build? And how can it lead to beautiful software?


Note: This podcast is designed to be heard. If you are able, we strongly encourage you to listen to the audio, which includes emphasis that’s not on the page


Adam: Here’s a question, if you went into a tech company and watched software being built, what would you see?

You might see people working with headphones on. You might see people talking in meeting rooms, or having animated discussions around a whiteboard but it would take time to see the things that mattered; who had the power, what ideas were valued and what ideas weren’t.

Last episode, I said I wasn’t sure there was such a thing as culture but that’s clearly not the case. Every place below the surface is very different. Some things are valued at one place, and then they’re discouraged at others. It’s just sometimes hard to pinpoint these differences but the differences do matter. The team where people roll their eyes at UX feedback is just not going to have as easy to use of a product as a team where the UX person is highly respected. If performance isn’t valued, the end result probably won’t be performant.

This is CoRecursive and I’m Adam Gordon Bell. Each episode is the story of some piece of software being built. Today, I found an expert on observing developer cultures.

Hansen: My name is Hansen Hsu. I am currently a curator at the Computer History Museum.

Adam: Hansen was on the ground at Apple during an important time in its history, and the transition on Apple, it forced the transition on Hansen so that he starts as a dev on the file system team but he ends as a museum curator.

Hansen: I guess this is part of what the interview is about but that journey actually is a pretty interesting one.

Adam: On this journey that he’s going to take us on, you’re going to learn some specifics about this mushy concept called culture, and how it manifests and how people interact, and what they build, and ultimately, how it can lead to beautiful software, and almost a religious devotion to an app framework. This story starts with Hansen’s first day at Apple as a software engineer.

Join the Newsletter

Did you know CoRecursive has a newsletter?

Sign up to get insights, takeaways, and exclusive content from each new episode.

    We won't send you spam. Unsubscribe at any time.

    First Day at Apple

    Hansen: I joined in October ‘99. I can still remember the day. My start date was October 4th. I was in the classic Mac, Macintosh operating system team.

    Adam: The classic Mac operating system is what predated Mac OS X. It was old and it had some issues.

    Hansen: I joined them right after they had shipped Mac OS 9 itself, 9.0. That was a very successful release.

    Adam: Parallel to OS 9, OS X was being worked on by a team from NeXT computers. NeXT computers was a company that Steve Jobs had founded and that Apple had acquired specifically for its operating system.

    Hansen: The prevailing sentiment within OS 9 was that, “Oh, they’re going to be working on this research project forever.” We don’t know when they’re going to ship. In the meanwhile, we’re keeping the lights on, right? We’re continuing to ship new features to our users who are buying these brand new iMacs and iBooks and the turnaround was going when I joined. Apple had come out of the darkest era. The iMac was a hit.

    Adam: The iMac, those are like the colored ones, right?

    Hansen: Yeah, the colored ones. Yeah, it was that era.

    Classic Mac Sunset

    Hansen: There was a contingent within the classic team that felt that there were ways that technically that they could actually introduce more modern operating system features to classic Mac OS gradually. They had plans to do so.

    Adam: Within the classic Mac team, plans like that might have made sense. I mean, previous attempts to replace the classic operating system had failed but this time was different.

    Hansen: I mean, if you really look at it from the corporate level, there was no way that the corporate was going to let them do that, right? Mac OS X was coming.

    Adam: Were you disappointed at all? When you joined that first group, and the curtain was pulled back, and it seemed to be a mess? What was the feeling of that?

    Hansen: It’s like being a cast member at Disneyland, right? If you actually see the back lot of Disneyland, the magic is pulled away, right? It’s not the same, right? You don’t always want to know how the sausage is made. Being smack in the middle like OS 9 at a time when the winds were clearly shifting in OS X’s direction, it was like, the politics of the higher ups, it was definitely being felt.

    I was looking on the file system team and three months in, they said, “Okay, well, we’re not doing any new features in the file system. We’re going to reassign you to help them work on the multiprocessing API’s with this other guy”

    I was doing some unit testing for that for like a couple of months.

    Then, it was announced, “Oh, we’re not doing any new features for that either.” Okay, so then now what I’m going to do?

    Then, my boss assigned me to write this app showing these two bars for the dual processors. That didn’t go anywhere. He kept telling me, “No. Keep working on it. This is not busy work. This is not busy work.”

    It turned out to be busy work.

    I mean, I learned a hell of a lot doing it but it was a dead end technology, right? Nobody was going to be writing classic Mac OS apps in the future.

    Then, one day, I went to my boss and said, “Okay, well, I feel like I’m pretty much done with this app. I mean, there’s always more I could do but I feel like I’ve gotten to a point where this is pretty good. What next?” He said, “I don’t have anything for you. I’m going to talk to HR to see if we can get you reassigned somewhere else to another division of the company. Stay tuned.”


    Adam: Getting reassigned probably wasn’t a given. Apple in the year 2000 had significantly less employees than it had in 1995. The company was in a multiyear staff contraction and Hansen just had to wait on his boss and see where he ended up.

    Hansen: Then, the next week, he takes a different job first. First, he went to somewhere else at Apple, I think in OS X but then, within six months after that he was at Adobe. I was on a sinking ship. My boss jumped overboard before I did.

    Adam: Hansen found a way off that ship, though. You see, it wasn’t just the operating system for NeXT that people were excited about. It was also a framework for building applications on that operating system. The team building those Cocoa frameworks, it had an open rack for a QA position.

    Hansen: I knew this is where the power lies within the company, right? The Cocoa frameworks are the new hot thing. This is what developers are going to want to use. I jumped at that opportunity to go there. I was a full engineer, full software engineer, full developer originally in the OS 9 division, but I was still very junior. The only other opportunities that were available to me, anyway, anywhere else were QA opportunities. I was hoping that I could start off in QA and then work my way back up in engineering, and that ended up not happening, but I knew the Cocoa group is where it’s at. I basically situated myself within a very central organization within the company.

    OS X and Cocoa

    Adam: He starts at his new team.

    Hansen: I have to say, it’s almost like I was in two different companies. I moved from building one to building two in Infinite Loop. Physically, the distance wasn’t that far, but culturally, it was night and day. It was like moving from the old Emilio era Apple or prior to NeXT. I mean, the culture was totally different. Everything was Unix-based, and also the, well, and this was something that affected my job directly was the attitude towards testing was actually very different.

    In OS 9, they had a dedicated QA division. QA people reported to this other division. They have a lot of power to say, “Okay, you got to fix this, et cetera.” When I got to the OS X group, they were only just starting to create QA within the organization because at NeXT, they had always been very lean and mean.

    Their attitude was, “Well, we do need some QA but we should have distributed QA. We should have a QA person in every team.” That’s why that opening opened up in the AppKit division, and I became that person.

    Cocoa Group Culture

    Adam: You said, it was felt very different. What made it feel different?

    Hansen: The culture was different. Maybe that’s what I was trying to get at is, I felt like the culture was different. The priorities was different. There was sense of confidence, certainly. There was a sense of like, we know that this is the direction that the company is moving in. The company is fully behind us and we don’t have to worry about that. The other team was, they were worried that they wouldn’t have a job in six months. They had all these long term plans but clearly, at some point, they were going to be sunsetted, right? They’re going to be moved into, “maintenance mode,” which is essentially you’re going away at some point.

    Also, I guess, just the technical culture in the AppKit group, it was, well, this is how it was done at NeXT and we’re clearly technically superior. It was just assumed that we’re just technically superior and a lot of ways they were. They were technically superior. There were a few little things here and there that maybe they weren’t but in a lot of ways they were. Just the confidence of the team that was different.

    Adam: Besides title of superiority, there were other differences. The NeXt developers ate their own dog food, as the unfortunate expression goes, “They used their own product. They did their work on the latest operating system builds.”

    Hansen: Which meant that any really bad bugs could affect your productivity. I remember, there was maybe one or two times where there was a change in something in the networking, and that just broke everything and then it had to be rolled back and people lost like a couple hours of work. That was what would happen, right? Whereas, no, that would never happen, there’s no way that you could dog food on OS 9 because a crash would bring down your whole system. It’s the whole Unix culture, right? We’re able to live on a rock solid foundation.

    Even though we’re working on essentially beta software, pre-beta, alpha, essentially, we’re living on it, we’re using it as our daily machine, we’re very aggressive. We’re living with the bugs. It’s the responsibility of not just me, but everybody to report the bugs that they see. Before me, there was no QA person. That was how they did it. Everybody found bugs. Everybody was a QA person. That was another reason why it just felt like a different organization, just the whole process was different.

    Leaving Apple

    Adam: Apple was so important to Hansen. Now, he was on this central team, where people were leading the charge into the future. Apple, as a company, was undergoing this great Renaissance.

    Hansen: Everybody knew that was my dream job. I mean, I was over the moon for a decent amount of time. I mean, it was amazing the first couple of years, where it’s like, “Wow, I get to be part of the rollout of this new operating system based on the NeXT technology.” I’m in the middle of the revolution, right? This is amazing.

    Working in Apple is really great but I do think that over time, the day-to-day sort of grind did eventually wear me down, because it is kind of like nonstop, and there’s always so much work to do. You just can’t do it all. After you ship the first one, then, you maybe get like a month break to do some side projects, but the train starts again. The train starts to build momentum again, and it’s yearly, right?

    Adam: Yeah.

    Hansen: Every year, there’s a new release. It starts to feel pretty relentless after a while. It’s like there’s always the next release. There’s always another release. Maybe I don’t have the best work habits, but when you sort of bust your ass to get the current release out, there’s a certain amount of burnout and then you got to do it all. After a while, I was like, “Wow. Am I just going to keep doing this over and over and over again?”

    1x Developer

    Adam: Besides the grind, there was a couple other factors making Apple seem like less than a dream job.

    Hansen: I don’t know if I should be revealing it. One thing was that I was in a QA job. I had hoped that that would lead to a development job. I needed to be a lot more proactive for that to happen. I would have needed to be writing a lot of code on my own time, doing a lot more to learn on my own time that I was doing.

    I realized that I do kind of treat work as kind of like a 9:00 to 5:00 type of thing. Not 9:00 to 5:00, more like 10:00 to 7:00 or something like that but when I’m off, I don’t want to code on my free time. I think my actual abilities, they’re good, they’re competent but they’re not anything to write home about, right? I’m not like the 10x developer who can single handedly turn something around, right? I mostly learn through repetition, through doing things multiple times.

    Adam: Some 10x developers don’t think that either.

    Hansen: I guess part of it was a crisis of confidence. I’m surrounded by brilliant people. I’m surrounded by the cream of the crop essentially, right? These are brilliant people that I’m with. These are the best of the best. Here, I am, just like sort of a mediocre guy, that’s why I’m the QA guy. That’s why I can’t get out of it.

    Adam: While he was feeling downtrodden about his job, Hansen also wanted to broaden his horizons.

    Enter Social Sciences

    Hansen: I wanted to get a firmer base on the world and how it works and history and in the social sciences and philosophy. I had just had an interest in that. I started taking some night classes at the local community college in Cupertino. The philosophy professor that I had, I went to her office hours after the quarter ended, and I sort of broach this idea of what would it take, if I were to leave my job and actually studied this, what would it actually take? Would I be able to do this?

    I got very good marks on my papers. That professor was the first person to make me think, this is something that I am actually good at. I’m a dime a dozen at Apple. There’s the plenty of people who could replace me, but this kind of academic work, I could actually do. For the first time, I began to feel like this could realistically happen. Then, of course, another thing was, you remember in 2005, Steve Jobs gave that commencement speech at Stanford, right? The famous commencement speech, and he talks in the speech about, “Don’t live your life for someone else. Don’t tie yourself to someone else’s dream. Do your own thing.” The irony of that was, it actually woke me up and motivated me to think about, wait, I’m just a cog in the machine here at Apple.

    Adam: It totally makes sense, right? Steve Jobs wouldn’t work as a cog in a wheel at Apple.

    Hansen: Right. Exactly.

    Yeah. Then, of course, the last thing, I have to mention, which is a personal thing was that I had gone through this terrible breakup situation in 2001 but this was a person in my church community, so I still had to see that person every week. At some point, I just had to get out of here. About two years in, it was just like, yeah, this is not healthy for me. I need to leave. Without that, I think the other things were all important but I think the fear of actually leaving my job and also, this was my dream, why would I give it up. I don’t think I would have had the necessary forcing function to force me to leave.

    Once I’d made that decision, then it was like, “Okay, well, I guess I got to go all in. This is a career change for me. I have to treat it like such. I can’t look back because if I do look back, I’m not going to be able to do this.

    Off to New York

    Adam: Hansen moved to New York to do a master’s in history. In some ways, he became a different person. He went from an electrical engineer to someone who talked about historical narratives and the social construction of truth, which really made him think about this power struggle he had seen going on in Apple. That transitioned from the old guard to the new next world.

    Hansen: The idea that technical arguments alone, they’re not the final deciding factor. The final design factor is power, right? Who has the power to make the decision? If it wasn’t the NeXT people in charge of the company, the decision could have gone the other way.

    Adam: Then, he was thinking about what he should study for his doctoral research.

    Hansen: I’m going to do a PhD in history. Maybe, the only thing that I think I can actually do in that level of detail is history of computers because that’s what I know. Also, I have this special access to the Apple culture. I should leverage that as my strength, right? Anybody else can do a history of China or whatever but this is something unique that I bring to the table that nobody else in the social sciences has is this experience of being from Apple.

    Adam: Did you reach out to people at Apple to try to talk to them?

    Hansen: I did initially try to reach out to Apple itself to see if there was a way I could do something involving Apple. I reached out to Scott Forstall, who was my boss’s boss when I was there. Of course, Apple is Apple. They don’t like doing an ethnographic study in them. They’re a black box, right?

    Adam: Yeah.

    Hansen: They’re opaque. That’s just who they are. I knew already going in that, yeah, I know them but I’m not going to get special access.

    AppKit Indie Developers

    Adam: Hansen had a backup plan that was maybe even better. As a QA for the Cocoa team, he sometimes had to test third party apps. He was very aware of the third party AppKit developers and they were an interesting group. They were super passionate about AppKit and the Cocoa framework. Also, as an historian, it was kind of a more nuanced story.

    Hansen: Because then it’s not just like a history of Apple itself. It’s not a corporate history. It’s actually a, it’s a story of this community and but it’s a community that is devoted to one company or at least technology from one company, cocoa technology going back to NeXT. Through thick and thin, they were there so many years, there was a question of would NeXT survive? Would NeXT survive as a platform, as a company? They were still in it through thick and thin because it’s like, “Well, we’ll leave when you pry my cold dead hands away from me, my AppKit,” because it was so much better than every other development environment at the time.

    Adam: Having worked on the Cocoa team, Hansen knew who the big names were. He had met some of them at the Apple Developer Conference, which was called WWDC. They were using the framework his team was building, so of course, they would want to meet with him but now it’s several years later and something new is happening in the Cocoa world.

    The iPhone App Store is out. People who aren’t card carrying members of the cult of Mac are trying to learn Cocoa and Objective-C. This framework to an outsider, it can seem really strange. It was dynamic and based on Small Talk message passing, but it’s also based around C, and you had to manage memory. It was very different from the software development paradigms, web developers or Windows developers will be used to.

    Observing Objective-C Newcomers

    Hansen: I thought, “Okay, well, actually training people to become new Cocoa developers is a critical stage, right?” That’s where, just from academia, that’s where Foucauldian sense, that’s how newcomers to a community are disciplined. The norms of that community are transmitted.

    Adam: What’s Foucaultian? Sorry.

    Hansen: This is from Michel Foucault. He’s a pretty well-known theorist. He’s written a number of books, one of which is Discipline and Punish, which he discusses the idea of education being a place where values are learned, right? It’s not just about learning skills or learning knowledge. It’s also about learning to be a person in that society. People go to school to learn how to be a citizen, how to interact with your peers, how to interact with people like morals, essentially.

    Adam: Okay, this is really cool. How does a newcomer to the Apple development world learn the local conventions for structuring code and building apps that look like they belong on the iPhone? Apple developers have a reputation for caring about every pixel. Where do they learn that? If you want to learn how communities of developers built up a culture and transmit it forward, this is the type of research you’d want to do. Hansen reaches out to Aaron Hillegass.

    Hansen: Aaron had been one of the internal trainers that taught people how to program for the NeXT and that continued at Apple initially, but then he decided to do his own thing. Even then, he had cachet because he had been one of the NeXT trainers, and he had build up a lot of that curriculum. Him doing it on his own for people in the know, at least, he was still the guy, right?

    Adam: He was an expert on teaching people Cocoa AppKit. Now, eight years later, Aaron had written the definitive books on AppKit and on iOS development. He ran a bootcamp bringing developers up to speed at a place that he created called Big Nerd Ranch.

    Big Nerd Ranch

    Hansen: Even though it’s called the Big Nerd Ranch, it’s not actually a ranch. Aaron will tell you this, the initial idea behind the Big Nerd Ranch experience is it would be like going on a silent retreat, like being in a monastery or cloister kind of a thing but for marketing reasons, that’s not going to fly, right? He thought of instead, for marketing reasons, he thought of the Dude Ranch as the better sort of model for what it would be.

    Adam: Hansen reaches out to Aaron and says he wants to study him, and Big Nerd Ranch. He wants to embed himself in the business and learn and take notes. It’s actually a pretty strange offer if you think about it. Imagine if somebody reached out to your team and asked if they could embed themselves in it and take field notes for a dissertation they were working on but Hansen also had a certain cachet, he was from the Cocoa team at Apple and so Aaron agreed. What did you envision in your mind that you would get out of this, you leave and say this is a success?

    Hansen: I’m not quite sure what I was expecting to get. I think maybe I thought, “Okay, I’ll be observing their classes, number one, and number two, I would be maybe taking part in being part of the company, the other part of the company, which was the actual development part of the company. The company also did contract development for third party clients. I would actually learn to program by being part of those projects.

    Adam: Hansen packs his bags and he heads down to Atlanta.

    Hansen: The first couple of days, I actually, he actually let me stay at their old offices. They had only just recently relocated to a larger facility. They were growing like gangbusters, because of course, their iPhone business was exploding.

    Adam: The offices of Big Nerd Ranch didn’t look like a ranch at all. They were located in a generic residential area of Atlanta.

    Hansen: Like if you’ve seen the social network, early days of Facebook, they’re all in the house, right? Like in Silicon Valley, they’re all in the house but they’re working there. A little bit like that, except that nobody lived there, right?

    Adam: Yeah.

    Hansen: It was still just pure offices but it was a condo. It was a residential condo turned into an office developer space.

    Adam: The reason they weren’t actually at a ranch was that this office and the bigger offices that would follow, were the center of the app development side of the business. They would build apps on contract. Pretty soon, Hansen was building apps for the iPhone app store.

    Building Apps

    Hansen: I did become a developer. I’m working with their other employees working on code. That part of it, that was really fun. In fact, I learned a lot more there in just, I mean, I was there for, I think, five months in 2011 and then another six months in 2012 or something like that, so 11 months total. I learned more in those 11 months than the five years that I was at Apple…

    Adam: Oh wow.

    Hansen: … as a QA developer in the actual Cocoa team. I learned more about Cocoa development in 11 months at Big Nerd Ranch than I did as a QA developer on the Cocoa team itself.

    Adam: Why do you think that is?

    Hansen: Well, for one thing, Aaron’s whole purpose for the Big Nerd Ranch is all about learning and it’s all about mentorship. That’s who he is, right? It’s all about teaching and training, right?

    Adam: Yeah.

    Hansen: The contract development, it does a lot to pay the bills but the other part of it is it actually is there so that the developers know what they’re talking about when they teach the classes, right? It’s not like those who can’t do, teach. At Big Nerd Ranch it’s those who teach also need to be able to do because that gives them the knowledge to do the teaching. The whole culture of that company was focused around providing this environment to learn and to be constantly learning.

    Adam: Things that changed in app development since Hansen did QA for AppKit. The new iPhone framework, UIKit, was very much based on it, but it was a different thing. Hansen gets up to speed on it and then they let him start TA in classes at the iOS boot camp trainings. Being at these trainings is just what he really needs to understand how the knowledge and cultural norms of this community is transferred to a new generation.

    This is his chance to observe people getting baptized into a new technocultural frame, as he calls it. This is people being immersed into a new software development paradigm in a condensed and immersive five-day experience.

    Big Nerd Bootcamp

    Hansen: What they do is, is they rented a place at sort of an out of the way kind of resort in the woods. It’s not a resort, it’s sort of like a, it’s like a set of cabins. At that time, the place they used was called Historic Banning Mills. It’s about an hour outside of Atlanta and it’s in a very wooded area. You sleep in these little cottages, lots of little cabins. Then, there’s a main building with like, so there is sort of communal dining. We all meet for our meals and stuff. Then, we go down to the basement. The basement is where the classroom is.

    Adam: The classes are a five-day immersion based around the book, iOS Programming: The Big Nerd Ranch Guide. It’s a big book. The book and the trainings were developed together to take people from diverse backgrounds and get them ready to join the world of iOS development.

    Hansen: Those courses, there’s a screen on where they project the lectures and also the code. Then, everybody gets either a copy of the published iOS book or if they’re already, if there’s enough new material, they might get sort of a beta copy of the NeXT version. It’s like a soft binder kind of a thing.

    Adam: The teacher is at the front of the class, and everybody follows along.

    Hansen: Okay, he types in some code and then compiles it, and then this is what it does, right? People can actually see what he’s doing it live real time.

    Adam: Who are the students? Where do they come from?

    Hansen: The students typically are, some of them are people who have been sent by their company to take this course. They’re not paying it for themselves. It’s a very expensive course.

    Adam: How much is it?

    Hansen: I don’t think it’s as much as 10 but it’s definitely more than two. I mean, you get full room and board for a week. That’s part of it but you’re also getting this direct hands-on instruction. I mean, yeah, you could buy the book yourself, but as I said in the dissertation, it’s easy to be distracted on your own, right? When you’re in this classroom, you’re there and part of the point is that you’re cut off from the world.

    Also, in that location, but Wi Fi isn’t very good. That’s on purpose sent in some ways because they don’t want you to be checking your Twitter or whatever while you’re in the class. You’re there for immersion. It’s an immersion. It’s like language immersion but for Cocoa, for iOS. It really is that way because you’re thrown into the deep end, after the actual lecture part, then you’re given an hour to do an exercise from the book, which basically, is just like typing this code and then you run it, and then see if it comes up.

    Of course, coding is coding, right? Nothing ever happens easily. Most of it is just figuring out what went wrong but that’s part of the learning process. Part of the learning process is learning how to, what the compiler errors are, what is it telling you how to fix those problems.

    Adam: Fixing those problems is where Hansen’s job comes in. As the TA, the teacher’s assistant, he tries to help people who are stuck before the next lesson starts.

    Hansen: Then of course, then every next lesson you add on to that application that you just built. The idea is that the application that you built in chapter three, you then add another feature in chapter four and then another feature in chapter five, and another feature in chapter six until by the end of the third or fourth day, you’ve created a whole app with table views and all this functionality that, of course, you wouldn’t have been able to do on day one, right? You really get to feel a sense of accomplishment by the time we get to the end.

    Adam: Do people struggle with it?

    Hansen: Oh, yeah. I mean, it’s not easy. It’s definitely like a case of fire hose into the brain. It’s so much information so fast. It’s so fast that, it’s so much information, you can’t really absorb it all. You’re just copying the code from the book into the thing, because you wouldn’t be able to come up with it on your own. You wouldn’t be able to write it up on your own. It’s really just about being, getting a reading knowledge of what Cocoa code looks like, what working Cocoa code looks like and then, the actual experience of running it and debugging it.

    I mean, debugging is the most important part. That’s where the instructors are to help them get through the breakthroughs, right? It’s like, I don’t know, what’s going on. I don’t know what’s happening. Especially back in those days, there would be runtime errors. There would be there where be things where the compiler wouldn’t catch because Cocoa is, in some ways, a loosely typed language, right?

    If you mistyped the name of an object or method that you want to just message, nothing would happen. The program wouldn’t crash or, I mean, maybe it would crash, but it would like a runtime error. They’re very hard to debug and you have to have somebody experienced who knows what that looks like to go, “Okay, that’s exactly what’s happening.” A lot of it is just purely about just sort of being immersed in the environment and then gradually, the ideas start to diffuse. Ideas that like, so you’re introduced to design patterns like delegation and stuff, and that stuff doesn’t really sink in when you’re first introduced to it, maybe on day two or day one.

    Maybe by day four or day five, you’ve seen enough of it, “Okay, the pattern is there. It’s a pattern recognition thing. I can recognize it now. I didn’t understand it before, but I kind of can recognize what that feels like now. Of course, you’ve been bombarded with more material in those last two days also that you won’t retain, but at least the things earlier, by this point, you’ve kind of started to get, “Okay, I kind of feel what that is now.” It really is just like swimming in the deep end.

    Adam: Why do you think that works or does it work?

    Hansen: I think, I guess, I would say maybe the closest metaphor is learning a language. It’s just being immersed in the environment, and you just gradually start to pick up stuff and not consciously, right? Just the immersion.

    Anthropologist Mode

    Adam: Meanwhile, as people struggle to learn iOS and Objective-C, and Cocoa and UIKit, Hansen also has to keep part of his brain and anthropologist mode.

    Hansen: I mean, there’s part of me that is like, letting myself just be in the moment and just act like however I would, but there’s a part of my brain that I can’t turn off. I’m constantly having to keep my eyes open to things that are interesting anthropologically, or sociologically, or something.

    Adam: The way I picture this working is like the movie Gorillas in the Mist, where Dian Fossey is a naturalist observing gorillas in the wild. I mean, Hansen isn’t in the Congo. He’s an anthropology student in Atlanta. But just like her, he’s observing things for the benefit of his colleagues back home that he eventually wants to publish.

    Hansen: I had to do that every day after my day to write down. If I could find this a little bit of time, maybe I would take some quick and dirty notes to remind myself, “Okay, this was interesting and this was interesting.” As an anthropologist, me going to lunch and just paddling around with the guys, that’s part of the thing too. I’m always studying, right? I have to be always aware of everything that’s happening. I’m a participant in it too. It’s kind of exhausting, in a way mentally.

    Adam: What would a field note about lunch look like?

    Hansen: Oh, man, probably very hard to decipher. I don’t know if I’m that good at taking field notes but I think it would just be more like, “Oh, this was interesting. Somebody said something about this. This is interesting to me for this reason.” Now, that I’ve gone through graduate school, and I’ve read all of this material, and I know all this sort of the theory behind stuff, and I know what are my colleagues back at Cornell going to think are interesting. What are people in my field, in whatever sociologists and anthropologists and historians going to think are interesting about this situation that I’m in?

    Me, from 10 years before, as just a regular developer coming in, wouldn’t have that but now that I’m coming here as a scholar with all this other knowledge in the back of my brain, bring that to bear and using that to illuminate what I’m seeing, that’s what’s new about it.

    Normative Practices

    Adam: This new perspective caused Hansen to focus in on normative practices. The literal rules and standards that are shared within a community, you should structure your code this way, you shouldn’t name your variables that way, here’s how you use braces. Communities might have reasons why they do things a certain way. At a university, they might teach these ideas from first principles going through the one by one. Big Nerd Ranch would never have you do it that way. They have you work on concrete projects but as you build something, the community norms are sprinkled in.

    Hansen: We’re going to write in this way. It could be written in this other way but we’re going to write it in this way because this is the more stylish way of doing so. They may not explain right then why the real reason behind that, because that might be a deep technical discussion. They just say, “Well, there are reasons, but for now, just know that this is the stylish way to do things. If you want to be a cool Cocoa programmer do it this way. It’s a sort of a shorthand to get it like this is the normative way to do things within this community.

    Adam: Although the trainers at the boot camps varied, a lot of this method for teaching norms comes directly from Aaron Hillegass.

    Hansen: He doesn’t use the word right or wrong, because that’s too harsh, right? It’s too black and white. He’ll use the word stylish, right? Because the unstylish way still works. It’s not totally wrong, but it still works. It’s a more of a gentle nudge, right?

    Adam: That’s how it was done. It was five days of intensive sessions focusing in on the practical.

    Hansen: The idea is to actually first show them how to do a specific thing, make an iPhone app that does this that uses the GPS, and then inductively, use that to teach a more general idea.

    Adam: Lessons were followed by literally typing in code and then debugging the inevitable transcription mistakes. The second or third time you see something, that might be when it clicks.

    Hansen: Then, they tell you, “Okay, this is a pattern. You’ve seen it before. This is called delegation. Then, you can generalize.” Then, you can go, “There’s this a larger pattern and that’s why I’m learning this.” It’s much more effective because you’re already motivated to learn this because you want to make this thing.

    Adam: Then, in this way of doing something first and then understanding how it worked after, the knowledge was transferred. The normative practices, as Hansen calls them, they just came along with all that other stuff, which makes sense to me. I’m not exactly sure where I learned what stylish Scala code looks like. I picked it up over time but I know that stylish Go code looks very different.

    These things aren’t explicitly handed down. It’s more like they’re in the water supply. You know, C++ developers don’t get told how important software performances. It’s just a given. It’s just implied, even if never stated. If you’re in that community, you pick up that value. The solutions built by that community end up being performant. For Apple products, what they end up being is very visually polished but how does that happen?

    Apple Developer Aesthetics

    Adam: One thing when I was reading your dissertation, I was trying to put my finger on, I guess, is like, okay, there’s this training at Big Nerd Ranch, but like where do you come out the other side and just really care about aesthetics and only ever buy an iPhone? Where does this happen?

    Hansen: The class doesn’t turn you into that. Look, you either came into class already that way or not, right? I mean, not everybody in the class is an Apple fan, right? Maybe they came from Windows or maybe they came from a web development and this is something they want to do to enhance their careers because they’re doing this for business reasons, right?

    Adam: But it starts, right? They start to care about some of these things, right?

    Hansen: I mean, the aesthetics of an app is more important on the Apple platforms than it is on other platforms. Although, I think to some extent, that has diffused through the rest of the industry. I think web designers have done a good job of caring about design but there’s still a thing about being a Mac developer and being caring about like the pixels in your button or whatever. I don’t want to give too much credit to the Big Nerd Ranch for inculcating that.

    Adam: Yeah. Fair enough but like in a broader sense, right? I mean, Big Nerd Ranch, I guess, is just the representative example but I guess, yeah, if you’re like an enterprise developer and somebody just comes up with a design, and then you crank it out, where then you go to this other community, where actually, like, whatever that user experience is, is actually part of your job, maybe not your primary job but something you care about, that somehow these ideas about roles or something that gets transmitted out. I don’t know.

    Hansen: I mean, I would say the Apple design was maybe where some of this is going on where Apple at WWDC, the Apple Design Awards, they were award aesthetics. Those awards signal to the developer community, this is what we think is a well-designed app, a beautiful app, a good functional app, for our platform. The best Cocoa developers or iOS developers will try to aspire to earning one of those, right? It’s a badge of honor to win one of those.

    I would say, a lot of that comes from Apple. Even if it’s not explicitly that, just the fact that you own a Mac, you’re willing to spend the extra money to get a Mac, right? That plays into it. You care about that design. You’re willing to pay someone of a premium, whether it’s just the hardware design itself or the operating system. If you already use a Mac or if you already own a Mac, you’re already predisposed to that, to the aesthetic part of it.

    Cultural Indoctrination

    Adam: Hansen started this project with the goal of studying this group of independent Cocoa, and later iOS developers and why they were so devoted to the platform but I think his observations on how people were indoctrinated into that community, and how it changed who they were, it’s true of every powerful community.

    In my best anthropologist voice, let me read from his thesis conclusion:

    “Cocoa developers have described learning the framework as a conversion. What is apt about that metaphor is that it is not only an intellectual transformation, but also deeply aesthetic.

    Developers are left feeling as if this is the way programming should always be done, and are eager to proselytize to others.

    This deep quasi-religious feeling is the root of the devotion Cocoa programmers have for the technology, and why they placed their trust in Apple.”


    Adam: A big thank you to Hansen for talking to me and for doing all this research. Hansen received his PhD in Science and Technology Studies in 2015 from Cornell based on the research he did at Big Nerd Ranch and other interviews he did with third party Apple developers. You can find him at the Computer History Museum and I’ll put a link on the website to his dissertation.

    If this is your first time to the podcast, be sure to subscribe. If you want to support the show, please head over to patreon.

    One of the big changes that’s happened since Hansen’s research is the introduction of Swift, and on the 15th, Patreon supporters will get a bonus episode where Hansen discusses his thoughts on Swift and how it has impacted the Apple developer culture.

    He’ll also be sharing some more details of his time inside Apple. You’ll find that on Patreon along with the other bonus episodes that I’ve been putting out.

    Until next time, thank you so much for listening.

    Support CoRecursive

    I make CoRecursive because I love it when someone shares the details behind some project, some bug, or some incident with me.

    No other podcast was telling stories quite like I wanted to hear.

    Right now this is all done by just me and I love doing it, but it's also exhausting.

    Recommending the show to others and contributing to this patreon are the biggest things you can do to help out.

    Whatever you can do to help, I truly appreciate it!

    Thanks! Adam Gordon Bell

    Audio Player
    back 15
    forward 60s

    Cocoa Culture