before we begin once you are comfortable with the solution as you found ittry to improve on the original solution you need to learn to think about the solutions you find out there-what makes them goodhow can you make them more elegantmore idiomaticmore simplealways look for opportunities to make code better in one of these ways nextyou want to take your new solution out into the wild find places to use the solution practicing in the real world forces you to deal with different constraintsthe kinds you would never dream up for yourself it will force you to bend your niceclean solution in ways it was never intended to be sometimesyour code will breakand you will learn to appreciate the way the problem was solved originally other timesyou may find that your solution works better than the original ask yourself why one solution outperforms anotherand what that teaches you about the problem and the solution try using languages with different paradigms to solve similar problemstaking from each and shaping solution yourself if you pay attention to the process as much as you do to actually solving the problemno project will leave you untouched the beauty of working on open source projects is that there is usually just the right mix of people who will help you alongand others who will tell you exactly what is wrong with your code evaluate their feedbacklearn what you canand discard the rest the ability to course correct when exploring problemyou have two optionsgo on trying this wayor scrap everything and start over with what have learned daniel kahnamannin his book thinkingfast and slowexplains the sunk cost fallacy it is where you keep investing in poor investment because you have already invested so much in it this is deadly trap for developer the quickest way to make two-day project take several months is to try to power your way through poor solution often it feels like it would be massive loss if we were to scrap daya weekor month' work and start from nothing the reality is that we are never starting from scratchand sometimes the last , lines of code you are deleting are the , lines of code you needed to write to become the programmer you need to be to solve the problem in lines of code with startlingly elegant solution you need to develop the mental fortitude to say enough is enough and start overbuilding new solution using what you have learned no amount of time spent on solution means anything if it is the wrong solution the sooner you realize that the better