QA Friday 2016-Apr-01
Take Up Code - A podcast by Take Up Code: build your own computer games, apps, and robotics with podcasts and live classes
Categorie:
How do you make a design easy to understand? A lot of people probably think that in order for something to be easily understandable, it needs to be simple. And sure, while simplicity is always nice, I don’t think it’s required for understanding your software designs. This episode describes two other factors I think will serve you much better, familiarity and consistency. the next time you come up with a wildly new design, ask yourself if it’s really worth it. Because anytime you introduce something new, you risk confusing a lot of people. Sometimes the change is worth it. Especially when the new design catches on and becomes widely adopted. It then becomes familiar. But if it’s a new design with limited use either in scope or in time, then it may not be worth it. Stick with a design that is common. A long time ago, light switches used to be two push buttons. I remember when my grandparents moved into an old house and the fun I used to have pushing the buttons on the walls. At some point, this style of switch went out of favor and a toggle switch became normal that flipped up or down. And then not too long ago, more houses started using flat toggle switches that while still toggle up and down actually have a lot in common with the old double push buttons. My point is that what’s common and familiar can and will change. It also takes a huge effort to change major trends. This is just something to keep in mind because it can have a major impact on whether or not your software designs are understandable. The other factor is consistency. This is different than being familiar and works to help your designs be more understandable in the short term. Don’t make other developers keep track of special cases. Keep everything consistent and you’ll find even if your design is complex, it’s a lot more understandable. Listen to the full episode or you can also read the full transcript below. Transcript Okay on to the question this week. There’s no single answer to this type of question. I’ll give you some tips and guidance that have worked well over the years. The first thing to understand is that you want your designs to be as simple as possible but not overly simple. Sometimes, things are going to be complicated and if you try to make something too simple, it starts looking more like a toy. Focusing on simplicity alone won’t make your designs easy to understand. It can sometimes make them unusable. And if a design is unusable, then it doesn’t matter if it’s understandable or not. Instead of simplicity, I like to focus on two other aspects when designing software, familiarity and consistency. Let’s consider familiarity first. For the last several weeks in this podcast, I’ve been explaining design patterns. And I’ll continue explaining design patterns. We’re not done yet. They’re super important and directly relate to this question about how to make your designs easy to understand. Think about your first spoken language. The language you speak most often. It’s said that some languages are harder to learn than others. But it doesn’t matter with your first language. It comes easy to all of us. Why is that? Well, I’m not a language researcher but to me it seems likely because we’re so familiar with it. It’s part of who we are. It forms our very thoughts. We can easily understand another person no matter how fast that other person speaks whenever our first language is involved. Over time, familiarity becomes the dominating factor in how understandable something is. It’s like the Big-O notation of understandability. You can listen to episodes 37 and 38 for more information about Big-O notation and how to use it to describe the complexity of an algorithm. It seems to me that familiarity when taken to the limit becomes the most important factor. I’m sure you’ve met people who are experts in thei