before we begin the better--and by better mean more complete--the problem definition or description isthe more hints you have of what possible solution would look like soask yourself dumb questions about the problem until you have clear and simple problem statement design patterns help you go from (the problem statementto (the solutionwithout having to go through and however many other false starts the right tools for the job to break down brick wallyou need hammerbut not just any hammer--you need bigheavy hammer with long handle sureyou can break down the wall with the same hammer you would use to put nails in music boxbut it will take you couple of lifetimes to do what an afternoon' worth of hammering with the right tool will do with the wrong toolsany job becomes mess and takes way longer than it should selecting the right tool for the job is matter of experience if you had no idea that there were hammers other than the tiny craft hammer you were used toyou would have hard time imagining that someone could come along and take down whole wall in couple of hours you might even call such person wall breaker the point am trying to make is that with the right tool you will be able to do many times more work than someone who is trying to make do with what they have it is worth the time and effort to expand your toolboxand to master different toolsso that when you encounter novel problem you will know which to select to become master programmeryou need to consistently add new tools to your arsenalnot just familiarizing yourself with thembut mastering them we already looked at the process for attaining mastery of the tools you decide onbut in the context of pythonlet me make some specific suggestions some of the beauties of the python ecosystem are the packages available right out of the gate there are lot of packagesbut more often than not you have one or two clear leaders for every type of problem you might encounter these packages are valuable toolsand you should spend couple of hours every week exploring them once you have mastered the patterns in this bookgrab numpy or scipy and master them thenhead off in any direction your imagination carries you download the package you are interested inlearn the basicsand then begin experimenting with it using the frameworks touched on already where do they shineand what is missingwhat kinds of problems are they especially good at solvinghow can you use them in the futurewhat side project can you do that will allow you to try the package in question in realworld scenario