«همیشه کد تمیز بنویس.»
«با جدیدترین استک بهروز باش.»
«پوشش صددرصدی تست ها ضروری است.»
همهمان این جملات را شنیدهایم. بعضیها حتی آنها را در جریان کار خود حک کردهاند.
اما اگر این «بهترین روشها» همیشه درست نباشند چه؟
در دنیای واقعی، توسعهدهندگان تحت فشارند تا سریع نسخه بدهند، ایرادها را رفع کنند و مدام بهبود بدهند — نه اینکه دنبال کمال بگردند.
خیلی از قوانینی که مثل وحی منزل دنبالشان میکنیم، در واقع افسانههاییاند که در زرورق «نمایش بهرهوری» پیچیده شدهاند.
این یک غر زدن نیست. یک تلنگر به واقعیت است.
در ادامه ۹ افسانهای را میخوانید که ظاهراً منطقیاند، اما پنهانی وقتتان را میخورند.
وسوسهانگیز است، نه؟ یک فریمورک تازه در Hacker News ترند شده، یک یوتیوبر با تیتر «Next.js 15 دیوانهکننده است» ویدیو گذاشته و ناگهان استک شما حس و حال عهد بوق پیدا میکند.
اما حقیقت این است: بیشتر اینترنت هنوز روی تکنولوژیهای کسلکننده میچرخد.
WordPress روی ۴۳٪ وب سوار است. PHP هنوز زنده و فعال است. Java همچنان سلطان اینترپرایز است. بکاند اپلیکیشن محبوبتان شاید روی Flask، Rails یا حتی... Drupal باشد.
دنبال کردن تکنولوژیهای براق و تازه میتواند سرگرمکننده باشد، اما دنبال کردن پایداری است که قبضهایتان را پرداخت میکند.
مگر شغلتان ایجاب کند که با ابزارهای جدید کار کنید، استفاده از فناوریهای «خستهکننده» کاملاً اشکالی ندارد.
جدید به معنای بهتر نیست؛ فقط یعنی تازهتر.
نکته:
تکنولوژی جدید را زمانی به کار ببرید که واقعاً مشکلی را حل کند، نه فقط چون در شبکه X (توییتر سابق) ترند شده است.
نوشتن کد تمیز و خوانا چیز خوبی است… تا وقتی که تبدیل به سرگرمی تماموقتتان نشود.
اگر جلسه «refactoring» شما به یک مراسم ۴ ساعته برای انتخاب نام متغیر تبدیل شود، در حالی که ویژگی اصلی هنوز کار نمیکند، شما در حال بهینهسازی نیستید — فقط دارید تعلل را شیک و حرفهای جلوه میدهید.
فرق هست بین شفافیت و کمالگرایی. کد تمیز کمک میکند تیمها راحتتر مقیاس بگیرند و اعضای جدید سریعتر جا بیفتند. اما وقتی موعد تحویل نزدیک است و قابلیتها نصفهنیمهاند، وسواس روی اینکه اسم را بگذاریم userHandler یا userService کمکی نمیکند.
نکته:
اول کاری کنید که جواب بدهد، بعد آن را زیبا کنید. کد تمیز باید حامی سرعت باشد، نه قاتل آن.
توصیه «خودت را تکرار نکن» تا وقتی خوب است که به هزارتویی از هِلپرهای انتزاعی تبدیل نشده باشد که هیچکس سر درنیاورد.
اپلیکیشنهای در مراحل ابتدایی معمولاً از کمی تکرار سود میبرند. تکرار یک تابع سهخطی بسیار سادهتر از این است که آن را در یک ابزار کلی (generic util) بیندازید که شش تیم بعدی مجبور شوند با کامنتهایی مثل // به این دست نزنید، همهچیز را خراب میکند، آن را مهندسی معکوس کنند.
افراط در انتزاع، تله بهرهوری است. شما کد را «یکبار» مینویسید اما برای همیشه دیباگش میکنید.
نکته:
با آگاهی تکرار کنید. اگر امروز کپیپیست کار را شفافتر میکند، انجامش دهید. refactor را زمانی انجام دهید که تکرار واقعاً دردسر ایجاد کند، نه قبل از آن.
نشان «۱۰۰٪ پوشش تست» در README فوقالعاده به نظر میرسد، اما این سپری در برابر باگها نیست. اغلب فقط یک حس امنیت کاذب ایجاد میکند.
چرا؟ چون همه تستها یکسان نیستند. شما میتوانید با تستهایی که فقط مسیر اجرای کد را طی میکنند (نه رفتار واقعی را)، به پوشش صددرصد برسید، در حالی که سناریوهای واقعی بیخبر رها میشوند.
نکته:
تستهایی بنویسید که استفاده واقعی را شبیهسازی کنند، نه فقط آمار را پر کنند. به دنبال پوشش معنادار باشید، نه اعداد تزئینی.
بعضی توسعهدهندگان به برنامهنویسی شیءگرا (OOP) سوگند خوردهاند. بعضی دیگر با برنامهنویسی تابعی (FP) نفس میکشند. انجمنها این را به جنگ مذهبی تبدیل میکنند، انگار استفاده از هر دو باعث خطای segmentation fault میشود.
واقعیت؟ بیشتر کدهای واقعی ترکیبی از پارادایمها هستند و این اشکالی ندارد.
نکته:
وسواس «پاکی» را کنار بگذارید. طوری بنویسید که فهم، نگهداری و دیباگ کد آسانتر شود. عملگرایی همیشه بر کمالگرایی برتری دارد.
افسانه این است: اپ شما باید از روز اول سرعت آتشین، کش لبهای (edge caching)، یک شبکه CDN و مقیاسپذیری (serverless auto-scaling) داشته باشد، وگرنه کارتان اشتباه است.
اما مگر اینکه تعداد کاربران شما از اعتیاد به قهوهتان بیشتر باشد، بهینهسازی زودهنگام فقط اتلاف وقت است.
یک اپ to-do برای پنج کاربر به Redis، Kafka و سه Lambda نیاز ندارد. شما هنوز Netflix نیستید.
نکته:
ساده بسازید. استفاده واقعی را اندازه بگیرید. بعد بهینهسازی کنید. تنظیم عملکرد واکنشی به مقیاس است، نه پیشنیازی برای انتشار.
بعضیها در اینترنت داد میزنند: «بعد از ساعات کاری کدنویسی نکن، این همون فرهنگ مسموم کار بیشازحده!» درست است، فرسودگی شغلی واقعی است و مرزگذاری اهمیت دارد.
اما خب، بیرون از ساعات کاری کدنویسی کردن همیشه به معنای «جان کندن» نیست.
گاهی شبیه یک بازی است. گاهی هم زمین بازی شخصی خودت.
پروژههای جانبی چیزهایی به شما یاد میدهند که هیچ شغل رسمی نمیتواند: مالکیت واقعی کار، کنجکاوی، باگهای عجیب و غریب، و آن حس لذت وقتی که اپلیکیشنتان ساعت ۲:۴۷ صبح بالاخره درست کار میکند.
نکته:
اگر لذت میبرید، انجامش بدهید. نه برای کفزدنهای LinkedIn. نه برای رؤیای استارتاپ. فقط چون ساختن چیزها سرگرمکننده است. اشتیاق، کار بیشازحد نیست — بازی است.
وسوسهانگیز است که فکر کنیم مسلط شدن به آخرین framework شما را به یک توسعهدهنده ۱۰برابری تبدیل میکند. اما حقیقت این است: ابزارها تغییر میکنند، اصول باقی میمانند.
React تغییر خواهد کرد. Python ترفندهای تازه پیدا میکند. شاید کتابخانه محبوب شما هفته بعد کنار گذاشته شود.
اما حل مسئله، ساختمان دادهها، الگوریتمها و تفکر منطقی اینها همان قدرتهای واقعیاند.
نکته:
ابزارها را یاد بگیرید تا محصول بسازید، اما اصول را بیاموزید تا رشد کنید. توسعهدهندهای که بازگشت (recursion) را میفهمد، همیشه از کسی که فقط قطعات آماده را کپیپیست میکند جلوتر است.
این یکی از پر سر و صداترین افسانههاست. بله، هوش مصنوعی کد مینویسد. گاهی درست، گاهی هم کاملاً پرت.
میتواند کدهای تکراری بسازد، کامپوننت طراحی کند، حتی تست بنویسد. اما در عین حال:
متغیرهایی میسازد که وجود ندارند.
توابعی مینویسد که اصلاً اجرا نمیشوند.
مثل یک توسعهدهنده تازهکار در روز اول، نیاز به مراقبت دائمی دارد.
هوش مصنوعی یک ابزار است، نه جایگزین شما. برای سرعتبخشیدن به کار، نمونهسازی سریع، یا سپردن کارهای تکراری عالی است. اما فاقد همان درک، قضاوت و غریزه حل مسئله واقعی است که شما دارید.
نکته:
اگر با هوش مصنوعی مثل یک همتیمی در بازی رفتار کنید مفید است، اما شما همچنان بازیکن اصلی هستید. کارها را به او بسپارید، اما مسئولیت را واگذار نکنید.
در دنیایی پر از نظرهای تند، اصطلاحات پرزرقوبرق و میمهای ترندی برنامهنویسی، خیلی راحت میتوان احساس کرد که عقب افتادهاید اگر از آخرین چارچوب استفاده نمیکنید، پوشش تست ۱۰۰٪ ندارید، یا طبق یک قانون نانوشته بهرهوری زندگی نمیکنید.
اما حقیقت این است: بیشتر این افسانهها فقط سروصدا هستند.
تنها معیار واقعی که اهمیت دارد این است که در حال یادگیری باشید. در حال ساختن. در حال حل مسائل واقعی.
پس اگر کد شلخته مشکل را حل میکند، بنویسید. اصول را بیاموزید. منتشر کنید. بازسازی کنید. دوباره تکرار کنید.
با افتخار ترجمه شده از
https://medium.com/@dev_tips/dev-myths-debunked-9-rules-you-were-told-to-follow-that-might-just-slow-you-down-a54872b9846b