« All Episodes

Effective Simulations

Published 7/29/2016

In today's episode, I discuss the importance of effective simulations for developers.

Today's episode is sponsored by RefactorU, the 10-week JavaScript training bootcamp focused on developers dedicated to reinventing themselves. You can get 20% off of tuition by mentioning Developer Tea today! Head over to spec.fm/refactor to get started!

Transcript (Generated by OpenAI Whisper)
Hey everyone and welcome to Developer Tea. My name is Jonathan Cutrell and in today's episode we're going to be talking about why effective simulation is important to developers. The concept of simulation is fundamentally connected to the software development practice at many different junctures and it's incredibly important for us to understand why effective simulation matters. In today's episode we'll discuss why effective simulation is important and give a few defining characteristics of good simulation. This episode is a little bit more kind of heady than our normal episode may be but hopefully you will find some value in it and stick through it with me. Today's episode is sponsored by RefactorU. RefactorU is a 10 week JavaScript training boot camp. We will talk more about what RefactorU has to offer specifically to Developer Tea listeners later on in today's episode. But first let's discuss why simulation is important to developers. Software development in many ways is itself an exercise in simulation. We often call it modeling or abstraction but essentially with all software we are creating some level of simulation. The underlying word simulate is where we can get our main clue. We are simulating something else whether that is a simulation of a monetary transaction or maybe we're simulating physics engines in a game that we're programming and the simulation doesn't necessarily have to be of something that actually exists in the real world either. For example the simulation work in video games that are modeling war in space or time travel. These are things that ultimately share memory space with word documents that are simulating in 8.5 by 11 sheet of paper. And ultimately a simulation stacks up as a series of logical constructions. It's just zeros and ones that can be combined to communicate to the human brain a symbol of something that is in one way or another where it's embling something else entirely. But it's not just digital spaces where simulation is important. It may be a little bit less obvious when you see a simulation that isn't in the digital space but in these less obvious situations we see simulations occurring in the real world. When a certain mental state for example is elicited based on environmental variables or a state of alarm may be simulated at a gym or more useful to our conversation today you might want to simulate a working environment for a potential future employee or even for yourself to prepare you for the workplace. Simulation is very commonly used in training drills which are intended to prepare someone for a circumstance without that circumstance occurring naturally. Instead we are intentionally creating that circumstance or similar situational factors around that type of circumstance. And there's all different types of simulation as well. At a more obvious level in the digital space we see things like scumorphism and design where some element on a screen is presented in a way that has characteristics that aesthetically remind us of some real object in the world. We see that thing on the screen and just based on the pixel organization we are reminded of a real object in the world. But we also have simulations like email. Email is a collaborative simulation between multiple people and it simulates mailboxes. And what we've done with email which is fundamentally a simulation we've created new value out of that simulation by simply taking a previous model and recreating that model and modifying a few things we've created new value. So we know simulations exist and that they're important but how do we make an effective simulation as developer? Because the most common misconception about simulations is that they are only one thing. They are a high resolution 3D maybe virtual reality thing. And while some simulations are obviously possible in those environments less or simulations can be powerful sometimes even more powerful and equally effective. We're going to outline three important aspects of simulation when we return from our sponsor break that can help you identify the important points that you can focus on when it's time for you to create a simulated environment. Today's episode is sponsored by Refactor U. If you are learning to code online but you're hitting a brick wall. Refactor U is an immersive full stack JavaScript bootcamp dedicated to the learning needs of aspiring web developers looking to reinvent themselves. It's a 10 week JavaScript training boot camp. They have a dedicated career services team on site and they are GI bill approved. This is a super important deal for those of you who are looking at school options. The GI bill is a huge opportunity. Based in the booming tech city of Boulder, Colorado, they have diversity scholarships as well for every cohort that goes through the school. And a very special gift that Refactor U is providing to Developer Tealisteners is a 20% tuition discount just when you mention Developer Tea20% discount on your tuition. It's a huge discount. It's a fifth of your tuition. It's taking care of right off the bat. So go and check it out spec.fm slash Refactor and make sure you mention Developer Tea for your 20% discount on tuition. Now if you're on the fence about this, I want you to go and check it out anyway because there's no hurt, no harm in going and finding out the details of this boot camp. Everyone learns differently and Refactor U could be your perfect opportunity going check it out, especially if you've looked at other options already and none of them seem to be working for you. Check out Refactor U spec.fm slash Refactor thanks again to Refactor U for sponsoring today's episode of Developer Tea. So we're now we're going to talk about the three important aspects of simulation. And the first one we're going to jump straight in is understand the big rules understand the big rules. That sounds really simple. This is paramount to an effective simulation. Simulations create parameters and the actors in a simulator must abide by those parameters. The actor could be you or it could be another digital entity that you've set up for example. Let's say for example you have a physics rendering system that you've created. Well a particle may be an actor in that system right. So you don't have to be the actor in the system, but the actors in the system must abide by the big rules. So if you're simulating a particular environment or experience understand the big rules of that experience. For example the rules of a workplace are that there is a real world problem and typically some constraint on time. But equal to the constraints are also rules of empowerment tools for example. In that same scenario you might have access to a team of other Developer That are working on the same problem or maybe you just have access to Google. And on this particular point this is one of the reasons why I don't like on the spot coding challenges. I don't think they're an effective way to test somebody's ability to solve problems because they are not an accurate simulation. They're missing some of those rules of empowerment and they may even be missing some of those rules of constraint. So again number one understand the big rules. Number two know which rules you should break. When you are using simulation as a tool for innovation it's also important to know what rules you should break. For example if we take our postal mail simulation email the creators of email knew that the rules of physical paper, postage stamps and time delay delivery were all non essential to the underlying big rules of the system which are a one way written message perhaps with attachments being passed from one person to another using a unique address and a delivery mechanism. Breaking the material or time-dimensional rules doesn't break that underlying system. So it's important for you to know which rules to break. Sometimes you will open up brand new opportunities if you break particular rules. And number three the process is more important than the resolution. The process is more important than the resolution. When we say resolution here we're talking about resolution of the simulation the level of detail in that simulation. When you are simulating something for a human to experience it is far more important for the simulation to have accurate process and steps than it is to have high resolution details in the system. In other words if the system is low resolution but is accurate in its process it can still be extremely effective. This can be proven in a separate field that of written books. The resolution of a novel is relatively low. We have to imagine everything that is happening based on the words we're reading. If we compare it to the sensory experience of for example a movie, a 3D movie in the theaters huge screens a book remains one of the foremost ways of telling stories. This can be attributed to the fact that a book does not necessarily mean high resolution to tell a good story. In the same way a very high production value in a movie may be technically impressive but the intention was to simulate a story and the production value is high but the story is poorly written. Well the simulation becomes relatively ineffective and the resolution does a little to nothing to save that. In the same way a very simple game for example take flappy wings or Pokemon go. These games have achieved massive success even if the particulars of their simulated resolution are relatively low. They aren't super immersive games because the process is in place. In most vehicle simulators for example flight simulators or driving simulators. If the process is in place even if the projected images around the vehicle are poor or pixelated the mechanics of the system and the process of driving that vehicle or operating that vehicle can still be quite effectively modeled. These models actually provide real training to the people who are operating these vehicles. So running back through the three important aspects of simulation number one understand the big rules number two know which rules to break and finally number three the process is more important than the resolution. Thank you so much for listening to today's episode of Developer Tea. I hope this inspires you to create better simulations and to start seeing things that you previously didn't see about the world around you and about the products you use and the things that you do with your time. A lot of what you do is participating in some level of simulation and it's incredibly important for any software developer to be able to identify these important aspects of a good simulation. Thank you so much for listening and thank you again to today's sponsor ReFactorU the 10 week JavaScript training bootcamp that is offering you a 20% discount just for mentioning Developer Teawhen you actually enroll. Go and check it out spec.fm slash refactor thanks again to refactorU for sponsoring Developer Tea and until next time enjoy your tea.