before we begin am still learningstill digging you can do it too start with this very book you are reading right now in it you will find number of tools and mental models to help you think and code better after you have mastered this set of patternsactively seek out and master different tools and techniques play with different frameworks and languages and figure out what makes them great once you can understand what makes someone love different language than the one you use regularlyyou may find couple of ideas in it that you can integrate into your way of thinking study recipes and patterns wherever you find them and translate them into an abstract solution that you can use over and over sometimesyou can simply analyze solution you already usecan you find more elegant way to implement the ideaor is the idea flawed in some wayconstantly ask yourself how you can improve your toolsyour skillsor yourself if you are ready to dig deep and master the artyou will find ideas in this book that will guide you along the road to mastery we are going to explore set of fundamental design patterns in real-world context while you are doing thisyou will begin to realize how these design patterns can be seen as building blocks you can use when you encounter specific type of problem in the future my hope is that you will use the design patterns in this book as blueprintthat it will help you kick-start your own collection of problem-solution chunks after you have read this bookyou should be well on your way to reaching the next level in your journey as programmer you should also see how this set of abstract tools can be translated into any programming language you may encounterand how you can use ideas and solutions from other languages and incorporate them into your mental toolbox becoming better programmer to become better programmeryou need to decide to obsess about mastery every day is new opportunity to become better than the day before every line of code is an opportunity to improve how do you do thatwhen you must work on piece of existing codeleave the code better than you found it try to complete quick problem-solving challenge every day look for opportunities to work with people who are better programmers than you are (open source projects are great for this