Breakable Toys

 We can all benefit from writing random "toy" programs to push ourselves to the limit by setting artificial limits. -- Donald Knuth, The Art of Computer Programming


If you can learn as much from failure as you can from success, you need a relatively private space to look for the loss. In balling acrobatics, a performer who tosses three balls will never progress if he has never tossed five. Those who spend hours picking dropped balls until their back hurts eventually get good at it. The same lesson applies to software, where software workers often need to step out of their comfort zone to try something they're not good at it. It is by taking bold chances again and again that you improve your skills, that you learn and grow from failure after failure. Just as a three-ball-tossing performer does not throw five balls in a formal performance, software developers often make mistakes in new areas. Software developers also need a safe place to make mistakes. It's terrible not to have such a safe place to make mistakes. The fear and unwillingness of software developers to make mistakes make them stuck in a rut, unable to learn from failure, and thus makes the entire software development industry staid and stagnant.


Other examples of the "crunchy toy" pattern include games like Tetris and Tic-Tac-Toe. One senior I know has a habit of using every new language he learns to create a game, blog software, and IRC client. The nature of the problem is to build a toy that contains learning something new and provides an opportunity to let you in a special environment to deepen the understanding of hand tools. The environment is not only safe because you are the only or most influential users, and, even to the most powerful commercial products, you still have room to serve you as a user's needs better.


You still have to remember that they're just toys, and that's why they're supposed to be fun. If they're not interesting, then when the initial excitement is over, they'll just become a dusty relic, and you'll be able to focus your energy on what you enjoy building.

Comments

Popular posts from this blog

Detailed and basic usage of Mockito

What is software architecture design?

What is Rest API