Bu her zaman bir değiş tokuştur.
Bir başlangıç programcısı olarak, kodu yeniden kullanmayı ve kare tekerleği yeniden icat etmeyi düşünürken kendinize iki soru sormalısınız:
- Her şeyi sıfırdan yazarak ya da sorun alanına odaklanarak ve ilgilendiğim sorun için kritik olmayan karmaşıklığı bir kenara bırakarak çözmek istediğim sorun hakkında daha fazla şey öğrenecek miyim?
- Elimdeki sorunu çözmek benim için daha mı önemli, yoksa bazı temel kavramları anladığım daha mı önemli?
Projenizi bitirmeniz gerekmiyorsa, tekerleklerinizi diğer insanların zaten çözdüğü karmaşık sorunlara çevirmek iyidir, çünkü bir şeyler öğreneceksiniz. Ama muhtemelen "bitirmeden" sizin için önemli olan veya olmayan başka bir şeye geçeceksiniz. Diğer projeler, kendiniz çözmeye çalışana kadar basit görünen karmaşık bir alanda başınızı aştığınız zaman hızlı görünmeye başlayacaktır.
Kontrolü bırakmayı takıntı haline getirmeyin, çünkü başka birinin düşünce tarzına ertelersiniz; daha çok neyi başarmaya çalıştığınıza odaklanın.
Hedefiniz, ayrıştırıcıların nasıl çalıştığını anlamak istediğiniz için bir HTML ayrıştırıcısı yazmaksa, bunun için gidin. Amacınız, kullanıcı girişini sterilize etmek veya HTML'nin bazı rastgele parçalarını dönüştürmek istediğiniz için bir HTML ayrıştırıcısı yazmaksa, muhtemelen yanlış şeye odaklanmışsınızdır, çünkü muhtemelen ayrıştırmadan ziyade ayrıştırma uygulamasına daha çok ilgi duyuyorsunuz. . Başka birinin kitaplığını anlamak için zaman ayırmak istemediğiniz için bir HTML ayrıştırıcısı yazmak istiyorsanız, muhtemelen zamanınızı boşa harcıyorsunuz, çünkü en azından bu durumda, bir başkasının nasıl olduğunu anlamak için daha fazla zaman harcadığını garanti ediyorum bu sorunu daha etkili bir şekilde çözmek için. Gerçekten önemsiz durumlarda, kodu yeniden kullanmadan zamandan tasarruf edebilirsiniz, ancak kullandığınız kütüphane berbat değilse veya belgeleri ve kod örneklerini okuyamazsanız,
Öte yandan, kendi grafik kütüphanenizi yazmaya değdiğini söyleyebilirim, çünkü daha sonra da kullanmanız gerekebilecek diğer alanlara uygulayabileceğiniz aktarılabilir, temel algoritmalara ve veri yapılarına daha fazla odaklanacaksınız Bu sorunlar üzerinde çalışırken bir başkasının kütüphanesi.