"With software development, though, mistakes are free! If we make a mistake, we can tab back to our editor, change the code, and try again. We even have helpful error messages that can (sometimes) point us in the right direction. This is an incredible luxury, and not one that we take advantage of enough."<p>This is definitely very underrated and partly why I think computer science education is still sort of broken in some universities. Trial and error should be embraced as a a part of the process of building things. But instead, many curriculums in universities use exams to test your knowledge without any sort of debugger or console. You just have to go off of what you know, getting things as close to correct as you can in the first pass.<p>All evaluations in CS should surround some type of project based work, it's a huge luxury other fields don't have. Students studying architecture or mechanical engineering, for example, simply can't build a functioning bridge as a test due to the cost of raw materials and how fatal an error may be (that would be really cool though). It's an advantage that we literally can build the bridge equivalent as a project in the CS world.