بنظرم گزینه اول واقعا نسبت به بقیه مهمتر هست. ما در روند معمول خیلی چیزها رو به دلایل عدم علاقه و زمان دنبال نمیکنیم و طبیعتا با ندونستن اونها در مواقع نیاز، نمیفهمیم که چه چیزی رو از دست دادیم و شاید هیچ وقت هم بعدا نفهمیم. گاهی اوقات دانستن یک مسالهی تئوریک حتی در حد خیلی کلی، کمک بسیاری به تصمیم گیری درست میکنه.
مشابه اون رو در عالم برنامه نویسی زیاد داریم. دوست برنامه نویسی داشتم که یک پروژه نسبتا حجیم با تیم چند نفره رو داشتن جلو میبردن و هیشکدوم حتی خبر از وجود سیستم asp.net membership برای احراز هویت و امنیت نداشتند! تصور کنید که چه حجم کد و البته پر از باگ رو میخواستند خودشون انجام بدن ...