One of the reasons for Ruby‘s popularity as a programming language is Ruby gems, the collection of open-source libraries that can be downloaded and used by developers around the world. With tens of thousands of gems available, there’s no doubt that they make Ruby a more productive, interesting, and collaborative language. The fact that anyone can contribute a gem makes it even more appealing and democratic. But not all gems incorporate practices that encourage their widespread use, as well as contributions from other developers. In this talk, Mat Brown provides seven ground rules for gem designers that, when followed, will make your gem more appealing to developers — those who want to use your gem, and those who want to help make it even better.
Developers often complain that designers don’t understand software — and that their lack of understanding leads to all sorts of problems. If only designers would start to program, they would finally understand what’s involved, and it would be so much easier to speak and work with them. In this talk, Alexandra Leisse turns the tables, saying that it would also behoove developers to learn to design. If only developers would learn, understand, and internalize design principles, it would be easier to work with them — and most importantly, the users of the software would benefit greatly. She dismisses several myths about design, such as that designers are born, not made, and offers numerous suggestions for how developers can increase their understanding of design, and their sensitivity to the user experience. If you’re a software designer who is either dismissive of design or in awe of it, this talk should provoke you into learning more about it, for everyone’s benefit.
Projects don’t always go right; that’s the nature of the world. But sometimes, projects go wrong for reasons that you could have predicted from the start. Which means that if you see these problems taking place, you should tell the people who are running the project, so as to avoid problems later on. What problems and issues are worth fighting about? In this talk, Heidi Waterhouse tells us what she thinks. If you’re on a software project, or (even better) you’re managing one, think about these things before you start … or, as she says, you’ll be doing the equivalent of trying to push chocolate chips into an already-baked cookie.
How many times have you heard that goto is a bad idea? Or more specifically, “GOTO considered harmful?” The odds are that you’ve heard this many times, along with many other statements that have made their way through computer-industry lore. In this talk, Alvaro Videla introduces a number of these myths and statements, describes the circumstances in which they were made, and helps us to understand the reasons why such smart people would make such seemingly dogmatic, inflexible, and unqualified statements. If you’re interested in the history of the computer industry, or the ways in which our programming languages, techniques, and tools have evolved over time, this talk should be quite enjoyable.
How do you deploy your services? A decade ago, the assumption was that you were deploying your application to each of a number of servers, and that you would update the software on each server as you released new versions. But today, a growing number of organizations are making use of containers and virtual machines to deploy in a totally different way, using immutable servers that are deployed a single time. Why have so many companies started to adopt this model, what are the advantages, and (just as importantly) what are the disadvantages? What considerations should you have in mind when you switch to a set of immutable containers? In this talk, John Willis describes the thinking behind immutability, and what you should keep in mind if and when you switch to that approach.
What do you need to know in order to run a PostgreSQL system? This talk, by Simon Riggs, attempts to summarize many of the ideas, tasks, and tools that PostgreSQL administrators need to know in order to do their jobs effectively. How should you think about your job as a PostgreSQL DBA? What sorts of monitors should you put on your system? What settings should you avoid to reduce the chance of disaster? If you’re running one or most PostgreSQL systems, then this talk will give you some ideas for how to ensure they run smoothly — and continue to do so.
Have you ever made a major development mistake? Of course you have. Such mistakes are typical, and even to be expected, among all developers. The key thing isn’t to avoid making mistakes, but to learn from the ones you make. In this talk, Kerri Miller describes some of the mistakes she has made — and what she has learned from those mistakes, and how they have made her a better developer. If you’re ever expecting to make mistakes at work, then this talk will help you to put it all in context, and consider new ways in which to approach your mistakes.
Everyone love to be agile! Companies, teams, and individuals nowadays all claim to be working in an agile fashion. We all have standups, sticky notes, tests, and the other stuff that agile is supposed to represent. Right? Well… maybe. What does agile really mean? What does an agile group and company look like? How can (and should) we modify our processes so that we can truly become productive? In this talk, Dan North provides insights into what “agile” really means (and can mean), and how we can (and should) harness it.
Do you feel like you’re a bad developer, because your code isn’t that good when you first write it? Because it needs to go through a process of editing, testing, and refactoring before you can use it, and before you can share it with others? Well, it’s normal to have to change things, and improve them. Moreover, the best writers — whose prose we believe to be beautiful — have done this with their writing for years, with drafts and additional drafts and additional drafts, ad infinitum, to make things better. In this talk, Ian Whitney describes how to think about drafts (early versions) of course code, and how we should work on our code so that it’ll need improve.
Many of us know that in order for a Web application to improve, it’s often a good idea to run A/B experiments: Given enough visitors to a site, you can present different versions to users, and see which one is most effective. This technique is just one way in which you can conduct online experiments. How can we control these experiments, and thus learn more from the results? What sorts of experiments can we run? What sorts of experiments have companies successfully used in the last few years? In this talk, Ronny Kohavi describes the history of controlled experiments, and of online controlled experiments, and provides examples of how they have helped to improve a number of businesses. He also gives us hints for how to create our own experiments, and how to make those provide us with powerful and useful results.