Pair Programming
Opening Keynote: Stading on the shoulders of giants

Summarized using AI

Opening Keynote: Stading on the shoulders of giants

Corey Haines • February 20, 2013 • Earth

In the opening keynote of RubyConf AU 2013 titled 'Standing on the Shoulders of Giants,' Corey Haines explores the importance of learning from the historical figures in programming and software design to improve contemporary practices. He begins with a humorous anecdote about his first visit to Australia, which sets a light-hearted tone. Haines emphasizes that understanding the origins of programming concepts can inform current development techniques and improve software design skills.

Key Points discussed in the keynote include:
- Introduction to Jean Bartik, an original ENIAC programmer, and her significant role in programming history, where she led a team of women in programming one of the first computers despite having no prior experience with such machines.
- The importance of pairing in programming, demonstrated through Bartik's collaboration with her team, as well as his personal experiences promoting code retreats.
- Insight into Alan Kay's contributions to object-oriented programming and how foundational ideas stem from practical needs in the early computing era, such as the development of the stack data structure by Charles Hamblin.
- Reflection on programming paradigms, such as the discussions surrounding functional versus object-oriented programming, and the recurring nature of these debates throughout the history of computing.
- Acknowledgment of the significance of maintainability and readability in programming, citing tools like Cucumber that bridge the gap between technical and domain languages.
- The mention of the 'Law of Demeter' and its role in software design, stressing the importance of dependencies and coupling to maintain good software practices.

Haines urges attendees to draw inspiration from both the historical figures he mentioned and their current practices. He challenges the audience to locate mentors and emulate their successful habits, stressing the value of continuous improvement and community contribution. His concluding message advocates for reflection on the past while actively contributing to local and open-source communities. Overall, the keynote serves as both a call to action and a reminder of the foundational principles that guide programming today.

Opening Keynote: Stading on the shoulders of giants
Corey Haines • February 20, 2013 • Earth

RubyConf AU 2013: http://www.rubyconf.org.au

Corey Haines helps developers improve their fundamental software design skills through the use of focused-practice events, such as coderetreat. He trains teams on development technical practices, and builds projects and products when not on the road.

RubyConf AU 2013

00:00:08.400 The first time I ever came to Australia was in 2010, and it was actually for the YOW conference. I took a little bit of time because I was flying around the world, so I decided to see the country. I went up and spent the weekend in the Glasshouse Mountains, which I believe are north of here. I was staying in this little bed and breakfast.
00:00:21.760 One morning, I woke up, and the guy who runs the place called me over, saying, 'Oh, come here, come here,' in his Australian way. I went into the kitchen, and there was a glass turned over on the counter. He said, 'You gotta see this! I found this this morning.' I was intrigued, thinking it must be something cool from Australia. We walked over, and to my surprise, it was a giant spider caught in the glass. I was shocked, and he explained that he had found it wandering around the kitchen. He thought I would like to see it.
00:01:02.040 He took the spider outside and put it on a cistern with some lily pads—these lily pads were like eight inches across. I stood about ten feet back, trying to take a picture of it. But he encouraged me to come closer, took my camera, and got an inch away from this enormous spider! Now, I don’t know what you all know about Australia, but I've heard that everything here is trying to kill you. Perhaps they just aim for foreigners who are visiting. This was my first 'yay, Australia' experience. Luckily, it didn’t kill me!
00:01:59.680 I want to start off with a little bit of a question. Does anybody know who this is? No? This is Jean Bartik. She was one of the original six ENIAC programmers. She's remarkable because her title was 'computer'.
00:02:16.720 Back in the day, 'computers' referred to women who sat around calculating missile trajectories by hand; they were all mathematicians. Jean led a team of incredibly smart women. When they came to her, they said, 'We need you and your team to learn how to program this machine.' She said, 'Okay, I don't see why I couldn't do that.' They came out with a bunch of rolled-up paper and laid out the circuit diagrams. They said, 'Well, we haven't built it yet, but we need you to learn how to program this physical computer.' So, her team learned.
00:03:03.760 She came in when they built it. The machine was enormous, like the size of twenty rooms or something. They were programming it, but it's incredible how she figured out how to program it just from the circuit diagrams. She didn't have Ruby; it was all physical work. Later, they moved it over to become a stored program machine rather than relying on physical connectors. I believe it was around '98 or 2000 when she got inducted into the Computer History Museum's Hall of Fame.
00:03:49.440 They interviewed her and asked if she was intimidated by the machine. She shared her experience, saying, 'Well, yeah, but let me tell you about it. From the beginning, Snyder and I worked as a pair.' I believe the best programming and design come from pairs. You can criticize each other, find errors, and use each other’s best ideas. Betty and I worked together on the punch card equipment and on doing trajectory demonstrations. They were pairing in 1946, which is astounding.
00:04:31.080 Despite 77 years passing, we still debate whether pairing is an effective way to program. It's a little discouraging that we don’t know someone like Jean, who is fundamental in our history. I want to talk a bit about my own journey. My name is Corey Haines, and my company is also called Corey Haines. Surprisingly, if you follow it, you'll find all my titles are Corey Haines as well.
00:05:12.799 I do several different things. I'm starting a video series called Clean Coders and I'm working on a product called Hug Board. As Josh mentioned, I often get into trouble with code retreats, spreading the idea around. How many people attended the event on Wednesday? A few hands go up; I see some familiar faces.
00:05:53.199 Also, if you follow me on Twitter, you’ll notice my feed is mostly filled with pictures of my cat Zach. So, how many of you recognize this guy? Most of you should know who he is; this is Tom Selleck. But actually, this is Alan Kay, generally regarded as the father of Smalltalk. He’s one of the primary figures behind object-oriented programming and even won the Turing Award in 2003. Winning such an award makes one wonder if that makes you 'Turing complete.' That’d be pretty cool.
00:06:59.359 I read a paper by Alan Kay discussing the history of object-oriented programming and where those ideas originated. People often credit him for the creation of objects and encapsulation, but he shared a story about the real father of object-oriented programming, an unknown lieutenant in the Air Force who, back in the day, sent data tapes back and forth using magnetic tape.
00:07:58.480 He explained that they often received data in a format that required careful reading of documentation or figures to extract records. One day in 1961, he received a tape that was quite different from usual. Instead of accompanying documentation, the tape contained the first section explaining how to set pointers, which indexed into the next part containing the code that accessed the data records. This concept sounds a lot like an object, doesn’t it? It's fascinating how even back then, someone recognized the challenges of programming and sought to simplify them.
00:08:40.000 It’s intriguing that these foundational ideas come from such a simple need. Over the years, we’ve lost touch with the origins of our work in programming. There’s a saying: if you don’t remember history, you're doomed to repeat it. This rings true because we continue to have the same types of discussions, like which programming paradigm is best: functional versus object-oriented, and so on. I've even seen people joke that the 90s want their arguments back.
00:09:36.240 Alan Kay has a wonderful phrase I love from his Uppsala 97 keynote, where he highlights that we often forget the historical context of our industry. Our field is relatively young, which makes it easy to neglect the history that informs our practices and technologies. Bruce Tate’s remarkable book 'Seven Languages in Seven Weeks' comments that many readers of the book might not remember when programming paradigms shifted from procedural-oriented programming to heavy object-oriented programming.
00:10:17.920 We're witnessing similar discussions today, with the rise of functional programming and its advocates, yet we forget that we've been through these transitions before. There’s so much history, issues, and discussions we’ve already fought. Throughout this talk, I'd like to explore some of these ideas and challenge you to think about how much insight this history can provide into our current practices.
00:11:10.240 Does anyone know who this man is? His name is Charles Hamblin, and he was responsible for developing the stack data structure. How many of you know what a stack is? Yes, I'm noticing many hands. It’s incredibly important!
00:12:01.199 Interestingly, he independently developed the stack while Turing had included a version in a paper in 1946. In 1957, he introduced the stack, allowing us as programmers to utilize this powerful structure. Many of our modern practices stem from these early ideas. Hamblin worked on a machine called the DEUCE, which boasted impressive computational speeds for its time.
00:12:42.400 If you can imagine, at the time, there were two major problems in computing, and both revolved around basic mathematical formulas using brackets. Computers were not that powerful; they only operated at a mere one megahertz in those days!
00:13:30.640 Many calculations revolved around creating optimal algorithms for processing data. The great Jan L. McCarthy came up with Polish notation, allowing programmers to work without the necessity for parentheses, which alleviated some of the computation burden. Charles Hamblin invented reverse Polish notation (RPN) that implemented a stack—this made the architecture much simpler. It's fascinating how the innovations came about from genuine need.
00:14:38.720 With RPN, there's no need for memory addresses; it uses a zero-address architecture because you're pushing values onto the stack, where an operator pops the needed value off and executes its function. While exciting, it does come with its little quirks and frustrations. Speaking of quirky things, here's a fun question!
00:15:29.360 Does anyone recognize this figure? This is Carl DeChira, my Wing Chun teacher. He comes from a long line, tracing back to the origins of Wing Chun, through Yip Man and others. Wing Chun is a unique martial art, characterized by its focus on forward motion—every move is intended to go forward and through your opponent.
00:16:08.320 In today's world, let's talk about the legendary Bruce Lee. He created the martial art Jeet Kune Do, based on Wing Chun. Many people might recognize this figure! You might also know David Chelimski, who was the RSpec maintainer for many years. He was an influential figure, and I've known him for about nine years.
00:17:04.000 Whenever I get to spend time with him, I really enjoy pairing and learning from him. You know, a little memorabilia. Speaking of playful things like pet cats, let’s explore MongoDB!
00:17:57.480 You've all probably heard of it; it’s known for its scalability. However, plenty of people joke about it being the latest trendy technology. Have you seen its logo? Some might not realize Lotus Notes was actually an impressive document database back in its prime.
00:18:39.680 While many may only have known it for its email services, the underlying document database was intriguing. However, there were a lot of pain points associated with it. Whenever I feel sad about tech history, I just look at my cat because—well, they make me happy!
00:19:03.879 Now, how many folks here are familiar with Cucumber? It’s a fascinating tool used to minimize the gap between the technical language in code and the domain language spoken by business stakeholders. Cucumber aims to foster better communication between these groups.
00:20:03.039 Of course, it’s amusing to hear jokes about COBOL, considering how significant it is to many industries today—especially in banking! I personally worked at a major insurance company in the United States, where COBOL systems ran for decades.
00:21:02.320 A notable aspect of COBOL was its emphasis on maintainability and readability. In fact, it had noble goals—certainly things we need to pay attention to in our work with newer languages and frameworks.
00:21:54.080 Speaking of which, Cucumber, when applied thoughtfully, enhances readability and maintainability. When chasing the next big thing in tech, let’s not forget the lessons learned from those before us.
00:22:32.720 Lastly, I want to discuss the Law of Demeter, which emphasizes the importance of dependencies and coupling in programming. This guideline comes from a paper presented at the 1988 OOPSLA conference. Following its principles leads to advantages such as easier software maintenance and better information hiding.
00:23:40.800 However, those who adhere to such concepts might face many challenges. These principles ought not to be academic debates but implications we perceive in practice. Why do we engage in these discussions if we can leverage decades of experience yet continue to argue about these underlying principles in programming?
00:24:38.880 It's essential to maintain a sense of history as it speaks to where we've been, where we’re going, but also who inspires us today. Think carefully about those you admire who produce exemplary work and draw inspiration from them.
00:25:44.800 As we progress in this conference, tackle the questions around the technologies at hand and also reflect on the historical figures that preceded us. I challenge you to find a mentor today who embodies the principles you want to adopt in your own career and life.
00:26:52.720 In doing this, you’ll build a future that is informed not just by current practices but grounded in the rich history of programming and technology. Thank you all for your time. I appreciate the chance to speak with you all and engage in this dialogue.
00:27:59.440 If you’re interested in supporting the community, think about contributing to open source!
00:28:33.560 To conclude— I challenge you to consider an 'Emulation March' or 'EMU March.' This means selecting someone who inspires you and doing one activity regularly that they do well. It can be anything but critical to be something meaningful to you.
00:29:49.040 By the end of the month, note how this simple change improves your perspective or skills. Pick someone for their unique attributes and emulate one small piece of what they do. Over the course of the month, see what you can accomplish! I want to dedicate Mondays and Fridays to contribute two times each week to open source projects.
00:30:46.120 This is not just for me, but part of a broader journey toward growth! Perhaps expand your community contributions. Thank you for your time! Enjoy the conference.
00:31:46.600 Let’s keep striving for improvement and remembering the roots that brought us here!
Explore all talks recorded at RubyConf AU 2013
+25