مهندسی نرم‌افزار
مهندسِ ۱۰ برابر (10x Engineer)

پیش‌گفتار:سیاهی لشکر نیاید به کاریکی مرد جنگی به از صد هزار اندرو اِنگ (Andrew Ng)، بنیان‌گذار DeepLearning.AI و یکی از بنیان‌گذاران Google Brain، پیام روشن و در عین حال چالش‌برانگیزی برای توسعه‌دهندگان نرم‌افزار که نظاره‌گر دنیای هوش مصنوعی‌اند دارد:“هوش مصنوعی جایگزین توسعه‌دهندگان نرم‌افزار نخواهد شد، اما توسعه‌دهندگان نرم‌افزاری که از هوش مصنوعی استفاده می‌کنند، جایگزین […]

مهندسی نرم‌افزار
مدل گوشی‌تون چیه؟

پیش‌گفتار:دوستی دارم که رشته‌ی هنر خونده و علاوه بر دانش عکاسی، تجربه‌ی زیادی هم در این زمینه داره. یک بار برام تعریف می‌کرد که با گروهی که چندتاشون اون رو نمی‌شناختند جایی بودند و ازش خواستند که ازشون عکس بگیره. می‌گفت بعد از این که عکس گرفتم به رسم معمول، عکس‌ها رو نشون همه دادم […]

مهندسی نرم‌افزار
فراتر از هیاهو: سنجش تأثیر واقعی هوش مصنوعی بر بهره‌وری توسعه‌دهندگان

پیش‌گفتار چند باری با یکی از دوستان عزیزم («می مهدی») در مورد تاثیر هوش مصنوعی بر آینده‌ی توسعه‌ی نرم‌افزار صحبت کردیم. این گفتگو بهانه‌ای شد تا کمی بیشتر به آن بپردازم. هفته‌ی گذشته یک سخنرانی بسیار ارزشمند رو به صورت اتفاقی دیدم و بر آن شدم تا خلاصه‌ای از آن را به فارسی برگردانم. امیدوارم […]

مهندسی نرم‌افزار
برنامه‌نویس خوب از نگاه تراویس الفنت

پیش گفتار: تراویس الفنت (Travis Oliphant) یکی از تاثیرگذارترین برنامه‌نویسان و دانشمندان داده است. او خالق NumPy و هم‌بنیان‌گذار SciPy و Anaconda و NumFOCUS است. این نوشته برگرفته از مصاحبه‌ای است که لکس فریدمن (Lex Fridman) با وی انجام داده است. گفتار: لکس فریدمن: می‌خواستم ازت چیزی بپرسم چون تو یکی از تاثیرگذارترین برنامه‌نویسان تاریخی […]

مهندسی نرم‌افزار
مدل شما چه ساعتی را نشان می‌دهد؟

پیش‌گفتار: فرضیه‌ی پیچیدگی متناسب تورنگیت (Thorngate’s postulate of commensurate complexity) فرضیه‌ی پیچیدگی متناسب، توصیفی از یک پدیده در نظریه‌پردازی علوم اجتماعی است. کارل ای. ویک (Karl E. Weick) ادعا می‌کند که تحقیقات در زمینه روانشناسی اجتماعی همواره می‌تواند فقط دو ویژگی از سه ویژگی متا-نظری ‘عمومیت’ (Generality)، ‘دقت’ (Accuracy) و ‘سادگی’ (Simplicity) را داشته باشد. […]

مهندسی نرم‌افزار
برنامه‌نویسی دلی! – بخش یک

پیش‌گفتار یک: نگاه ریاضی‌گونه و نگاه مهندسی‌گونه به برنامه‌نویسی به گذشته که نگاه می‌کنم می‌بینم که آموزش‌ برنامه‌نویسی همراه بوده با نوعی نگاه که بی‌شباهت به حل مساله‌های ریاضی یا فیزیک نیست. نوعی نگاه حذف جزییات در ابتدا و اضافه کردن جزییات در ادامه. برای نمونه در نگاه ریاضی‌گونه به برنامه‌نویسی شما ابتدا باید ساختار […]

مهندسی نرم‌افزار
قوانین نرم‌افزار: قانون هایروم (Hyrum’s Law)

طی چند سال گذشته و به دلیل همکاری‌ام برای انتقال (migration) زیرساخت‌های سطح‌ پایین یکی از پیچیده‌ترین سیستم‌های نرم‌افزاری روی کره‌ی خاکی به نکات مهمی درباره‌ی تفاوت بین رابط (interface) و پیاده‌سازی آن (implementation) برخورد کرده‌ام. معمولن ما رابط (interface) را تجریدی (abstraction) برای ارتباط با سیستم می‌دانیم و پیاده‌سازی (implementation) را هم روشی می‌‌دانیم […]