MountainWest RubyConf 2016
Lightning Talks
Bradley Schafer
1 talk
Ben Eggett
2 talks
4 more speakers
See all speakers

Lightning Talks

by Bradley Schafer, Ben Eggett, Joey @fergmastaflex, Nora Howard, Isaac Sloan, and Andrew Butterfield

The video titled "Lightning Talks" features several speakers discussing different topics related to software development and community engagement at the MountainWest RubyConf 2016. The talks cover techniques for improving testing in RSpec, career development in the tech industry, and reflections on the pursuit of seemingly unattainable goals.

Key Points Discussed:

  • Bradley Schafer on RSpec:
    • Introduced valuable testing techniques using RSpec, specifically focusing on yielding and how to test code that includes yields using the yield matchers.
    • Explained the feature of aggregate failures, allowing multiple expectations to be tested simultaneously within a single test, improving clarity on failures and efficiency in testing.
  • Ben Eggett on Career Development:
    • Emphasized the importance of empathy and continuous learning as pivotal traits for success in tech, rather than just technical skills.
    • Advocated for mentorship and community involvement, urging the audience to share knowledge and seek opportunities for growth.
    • Discussed his love for the Crystal programming language, highlighting its modern syntax and features that facilitate web application development.
  • Andrew Butterfield on Pursuing Goals:
    • Used historical examples such as the quests of Sir Walter Raleigh and Ponce de León to illustrate the pursuit of unattainable goals in the tech industry.
    • Addressed the potential pitfalls of agile development and how misconceptions can limit progress, suggesting mindfulness around these principles.
    • Introduced concepts like the 'street lamp effect,' which cautions against searching for solutions only where they appear obvious, while neglecting other possibilities.

Important Conclusions and Takeaways:

  • Improving testing practices in software development through effective RSpec features can enhance code quality.
  • The significance of community connection and collaboration is crucial for career advancement in technology.
  • Reflecting on the proper mindset towards agile principles and the recognition of potential traps can help in achieving greater success in professional endeavors.

Overall, the presentations highlight the interconnectedness of technical skills, community support, and collaborative storytelling in shaping personal and professional growth in the software development landscape.

00:00:00 Hey!
00:00:23 Hello! Alright, great. Hi everybody!
00:00:28 I'm Bradley Schaffer, also known as Soul Cutter on the internet, Twitter, GitHub, and pretty much everywhere else.
00:00:34 I work for a company called Table XI. We're a small to medium-sized consultancy based in Chicago, Illinois, and we solve problems.
00:00:40 So, if you have any problems, feel free to talk to me or email me at [email protected].
00:00:46 I am also a contributor on the RSpec core team. While I'm not one of the more active contributors right now, I genuinely enjoy RSpec.
00:00:55 As part of my initiation as a contributor, I learned many RSpec secrets, which brings us to the topic of this talk.
00:01:02 This talk is about things we don’t tell users of RSpec that we use to write awesome tests. You are about to be let in on the first secret.
00:01:14 Many people ask me how to test code that includes yields. What many don’t know is that you can easily test this using the yield matchers included in RSpec expectations.
00:01:27 I have included a few examples here of different ways you can test yielding.
00:01:34 It also works with composite matchers, so if you see an example with a hash, anything that implements triple equals will work for matching the arguments to a yielded block.
00:02:00 This is the first secret: you can test this stuff quite easily without needing any fancy tricks.
00:02:12 Now, this next one is one of my favorite secrets. It's a feature called aggregate failures.
00:02:19 For a long time, the rule of thumb is that there should only be one expectation per test. However, I believe this can make your tests harder to read.
00:02:40 While it works well and the tests actually run, the automatically generated documentation can become confusing. For example, saying 'user when registered should be registered' is tautological and doesn't make much sense.
00:02:52 Aggregate failures give you a way to write tests that contain multiple expectations. It will let you know about each failure within that example without stopping at the first failure.
00:03:16 There are two ways to trigger this feature. The first is by tagging your example with the word 'aggregate_failures'. This will cause the test to run through all the expectations in that example.
00:03:40 If you're not familiar with the RSpec example metadata system, you can come talk to me later; it's a handy feature. If it feels too magic, you can also use the aggregate_failures do block to ensure that all expectations run.
00:04:11 The output you get from using aggregate failures is much clearer. It outlines each line that fails, allowing for a more concise understanding of what went wrong.
00:04:23 I find this especially valuable when your test setup is expensive, like when running Selenium tests. It saves substantial time, as these features are built into RSpec, and require no special configuration.
00:05:08 The next topic involves something that requires some special configuration from the spec helper.
00:05:19 It's important to gather your thoughts, especially if you're running on only four hours of sleep and trying to recall everything learned at the Mountain West Ruby Conference, which is just a mix of economics and technology.
00:06:10 This is my last chance to speak at Mountain West Ruby conference, so I decided to title my talk 'Reevaluating Value.'
00:06:15 The reason for this title is that our understanding of value often seems skewed toward classical economics notions of supply and demand.
00:06:27 For example, things that are scarce tend to be viewed as valuable, like gold, which is hard to find and therefore precious.
00:06:42 Diamonds also illustrate this point, as the De Beers company intentionally restricts supply to enhance perceived value.
00:07:00 However, a different perspective on value is that, in some situations, abundance creates value instead of scarcity, particularly when considering items that foster connections and enable information exchange.
00:07:27 For instance, if in the 1970s I owned the only fax machine in the world, that device would be essentially worthless due to its lack of connection capabilities with others.
00:08:02 However, after gifting the fax machine to a friend, the value of both machines increased as more machines allowed for communication between users. This exemplifies how abundance can lead to increased value.
00:08:34 The same principle applies to phones and computers, where having multiple items creates worth through their ability to connect people and share information.
00:09:05 Thus, an abundance of connected devices, like the countless brain cells in a human mind, yields immense value when used collectively.
00:09:39 Thinking about the value of the Mountain West Ruby Conference, the videos may be accessible online, but true value comes from personal interaction and connection.
00:09:53 Creating meaningful exchanges and discussions here is what truly enriches the experience.
00:10:04 For example, I had a memorable conversation with Matt, a presenter, after the conference, allowing me to connect with another member of the Ruby community.
00:10:12 Through conferences, I've formed connections that directly contribute to my learning and growth in this field.
00:10:35 Additionally, I remember once reaching out to Jim Wyrick, the creator of the XML Builder gem, about improvements I thought were necessary.
00:10:45 To my surprise, he responded, clarified my misconceptions, and offered valuable insights, thus creating a meaningful connection.
00:11:06 I express my gratitude to Mike for fostering a community that creates connections like these and produces significant value.
00:11:15 I attribute my professional success to my engagement with tabletop role-playing games (RPGs).
00:11:27 RPGs have taught me to tackle seemingly impossible situations, collaborate as a team, articulate my thoughts, and appreciate individual contributions.
00:11:39 In essence, I want to present a bit about the structure of an RPG session and its relevance to work.
00:11:50 In RPGs, the Dungeon Master (DM) orchestrates the game while the players act within the story, making decisions that influence the game world.
00:12:00 A successful RPG involves interactions among the players that create a rich narrative experience while utilizing role mechanics.
00:12:19 In RPGs, various attributes and skills are used to determine the success of actions, emphasizing the importance of collaboration.
00:12:32 As you navigate through different scenarios, you learn to articulate your strategy and engage directly with the collaborative process of storytelling.
00:12:50 Ultimately, the essence of Dungeons and Dragons (D&D) lies in storytelling and interactions among players.
00:13:01 The storytelling element brings depth to the experience, showing what's truly valuable about collaboration.
00:13:13 In my current D&D campaign, I portray a whimsical half-dragon barbarian called Swift. My character’s unique qualities create interesting dynamics and adventures when paired with a mute monk named Drusilla.
00:13:45 The interactions and antics that arise in these sessions highlight the importance of collaboration and creativity.
00:14:00 In conclusion, I value storytelling and the time I spend with friends more than technical minutiae such as rules or specifications.
00:14:20 D&D fulfills my need for problem-solving and teamwork, as it creates opportunities to share and experience diverse stories.
00:14:41 Thank you for listening!
00:15:11 Next, I'm Ben Eggett. I'll share some advice on starting and improving your career in the tech industry.
00:15:32 First, understand why we write software: to enrich people's lives.
00:15:47 When starting a career, you often feel hesitation, apprehension, and a lack of confidence.
00:16:04 My opinion is that technical skills are overrated; personality and passion for learning are more crucial.
00:16:18 Empathy is essential. It helps you understand other people's feelings and how they impact the software we create.
00:16:38 Practice humility; recognizing that you don’t know everything will encourage you to continue learning.
00:16:55 Be open to learning about new technologies without committing to any of them prematurely.
00:17:14 Avoid tribalism; inclusivity is key in our community.
00:17:26 Get involved in events and make use of any learning opportunities that come your way.
00:17:40 Sharing knowledge and helping others will contribute to your growth as a developer.
00:17:50 Mentorship is vital. You cannot grow alone; surround yourself with those who support and guide you.
00:18:02 Don't let anyone discourage you. Show them that you can succeed through your actions.
00:18:12 Now I want to shift topics and share about a programming language I've come to love: Crystal.
00:18:28 It's a statically typed language with a friendly syntax resembling Ruby. It compiles into efficient, native code.
00:18:45 Crystal has a modern standard library, allowing creation of web applications quickly, and it offers extraordinary speed.
00:19:16 You can easily obtain the string representations of your code through various methods. The built-in HTTP client and server capabilities are also beneficial.
00:19:40 I encourage you to check it out; whether you're a Ruby developer or not, you may find working with Crystal refreshing.
00:20:09 Finally, I'd like to give thanks to Mike and the community for fostering such a welcoming environment. It’s something special.
00:20:33 I have enjoyed my experiences attending the Mountain West Ruby Conference, and I appreciate the opportunity to share my insights.
00:20:45 Hi, I'm Andrew Butterfield. This is my second Mountain West Ruby Conference, and I want to talk about searching for the unattainable.
00:21:10 Reflecting on some legends you may recall from school, such as Sir Walter Raleigh's pursuit of El Dorado and Ponce de León's quest for the Fountain of Youth.
00:21:29 These explorers had resources, crews, and knowledge, yet they all failed to discover what they sought. Spoiler: These things don't exist.
00:21:46 As we navigate our own pursuits, we often feel that there are unattainable goals or obstacles we face.
00:22:06 One reason for this could be what I call the 'agile gambit,' where we sometimes misunderstand agile principles and neglect some beneficial methods from traditional approaches.
00:22:19 Our industry has shifted significantly towards agile development, and in doing so, we must remain faithful to its benefits.
00:22:36 Another phenomenon is the 'street lamp effect,' signifying that we may search for solutions where they aren't present while ignoring other viable avenues.
00:22:55 Lastly, moving into complacency can lead us to diminish our capacity for improvement.
00:23:09 Recognizing these elements can help us attain those seemingly unattainable goals.
00:23:23 Thank you for your time, and I hope these thoughts resonate with you!