Michael Feathers is a frequent presenter at national and international conferences, and the author of the book Working Effectively with Legacy Code (Prentice Hall, 2004). He is also the Founder and Director of R7K Research & Conveyance, a company specializing in software and organization design. Prior to forming R7K, Michael was the Chief Scientist of Obtiva and a consultant with Object Mentor International. Over the past 20 years he has consulted with hundreds of organizations, supporting them with general software design issues, process change, and code revitalization.
No matter your profession, learning is essential: all industries and markets grow and change over time. For software developers, not only is the world changing all around us, but the tools in our hands are constantly evolving. You may have heard that "learning is the bottleneck" on software projects. I'd like to talk about how we learn not as individuals, but as teams. In this talk I'll share some fresh ideas for learning new technical skills together and leveraging some common Agile practices to reinforce group learning.
What makes a good software developer, and how do we bring new people with the talents that we need into our industry? In this presentation, Amanda Laucher and Jonathan Graham will share insights from the free programming training that they have been providing in a rural area of SouthWest Pennsylvania, where traditional industries are in decline. They will discuss the approaches they have taken to develop a diverse group of programmers from local residents with no previous coding experience, and the steps they are taking to seed a new tech industry in the area. If you think it’s important to give something back to the community, see the value of inspiring people from diverse backgrounds to code, and are interested in techniques for teaching the fundamentals of software development, then this talk will be of interest to you.
We have ethical responsibilities when coding. We’re able to extract remarkably precise intuitions about an individual. But do we have a right to know what they didn’t consent to share, even when they willingly shared the data that leads us there? A major retailer’s data-driven marketing accidentially revealed to a teen’s family that she was pregnant. Eek. What are our obligations to people who did not expect themselves to be so intimately known without sharing directly? How do we mitigate against unintended outcomes? For instance, an activity tracker carelessly revealed users’ sexual activity data to search engines. A social network’s algorithm accidentally triggered painful memories for grieving families who’d recently experienced death of their child and other loved ones. We design software for humans. Balancing human needs and business specs can be tough. It’s crucial that we learn how to build in systematic empathy. In this talk, we’ll delve into specific examples of uncritical programming, and painful results from using insightful data in ways that were benignly intended. You’ll learn ways we can integrate practices for examining how our code might harm individuals. We’ll look at how to flip the paradigm, netting consequences that can be better for everyone.
The free performance boost delivered annually by Moore's Law will soon come to an end. Future improvements in computer performance are likely to come from new hardware and software architectures, with parallelism playing a key role. This presentation will explore parallelism. Code examples will be given in C, Ruby, and Python, running on the 18-core Parallella and the quad-core Raspberry Pi 3.
Most programmers acknowledge programming is a creative endeavor, but few identify themselves as "creative types." Popular conceptions of creativity focus on passion, art, and vision—setting a pretty high bar. My creativity has a humbler source: the toxic negative emotions already dwelling inside me. In this talk, I'll share 9 projects I used to practice emotionally honest creativity and how each helped me mitigate my feelings of incompetence, inadequacy, and indignation as a software developer. Demystifying creativity can change the trajectory of your career, and this talk will show you how.