همه نوشته‌ها

تست برای تست

تست برای تست

مساله برای تست کردن اجزای کد، Unit Test می‌نویسیم. اما برای تست کردن کد خود تست‌ها چه کنیم؟ این مساله چه زمانی ایجاد می‌شه؟ وقتی که تست‌ها رو بعد از نوشتن کد اصلی بخواهیم اضافه کنیم. در واقع اگر به روش‌هایی نظیر TDD استفاده کنیم و تست‌ها رو قبل از نوشتن کد اصلی نوشته باشیم احتمال مشکل در تست‌ها به شدت پایین میاد. اما وقتی یک Legacy Code داریم که احتمالاً تستی هم نداره، این مساله خیلی جدیه.

اعلام خاتمه و شکست پروژه Bugg.ir + درس‌هایی که آموختم

اعلام خاتمه و شکست پروژه Bugg.ir + درس‌هایی که آموختم

داستان چیه؟ چند سال پیش وقتی پروژه‌ها زیاد شد، پشتیبانی پروژه‌ها هم بیشتر شد. اون موقع ما کتابخانه‌ای به نام elmah رو به خود پروژه‌ها اضافه می‌کردیم. این کتابخانه که یک کتابخانه لاگر بود، مثل بقیه کتابخانه‌های مشابه می‌تونست لاگ‌ها را به خروجی‌های مختلفی بفرسته. ما دیتابیس رو انتخاب کرده بودیم. در واقع در کنار جداول اصلی پروژه در دیتابیس، یک جدول هم مخصوص نگهداری لاگ‌ها بود. علاوه بر این یک UI تحت وب هم برای لیست کردن لاگ‌ها به پروژه اضافه می‌شد.

چطور به کمک APM نرم‌افزارهامون رو بهتر کنیم؟

چطور به کمک APM نرم‌افزارهامون رو بهتر کنیم؟

داستان چیه؟ نرم‌افزار رو آماده می‌کنیم. براش تست می‌نویسیم، همه چیز مرتبه اما روی سرور اصلی کاربرها از عملکردش راضی نیستند. فکر می‌کنیم منابع سرور کم باشه، منابع رو بیشتر می‌کنیم اما نتیجه خیلی خیره‌کننده نیست. مشکل کجاست؟ ممکنه حدس زده باشید که کجای کد مشکل داره، اما چطور دقیق متوجه بشیم؟ اینجا لازم میشه به استفاده از APM فکر کنیم. به کمک APM ها می‌تونیم Performance نرم‌افزارمون رو مانیتور کنیم و میزان در دسترس بودن بخش‌های مختلف رو بسنجیم و کارهای دیگه‌ای که در مجموع به ما این امکان رو میده که ضعف‌های نرم‌افزارمون رو شناسایی و برطرف کنیم.

چالش کتاب ۲۰۱۹

چالش کتاب ۲۰۱۹

درباره آمار سرانه مطالعه در کشور عددهای مختلف و البته متناقضی گفته می‌شه. مهم نیست کدومش رو باور کنیم، در هر حال کم کتاب می‌‌خونیم و اینو از رونق کم بازار کتاب میشه فهمید. من فرمول جادویی برای اینکه بیشتر کتاب بخونیم پیدا نکردم، اگر شما تجربه‌ای دارید بفرمایید. با این حال دیدم بازار چالش‌ها در فضای مجازی گرمه و گفتم شاید بشه یک چالش کتاب رو شروع کرد. البته موضوع چالش کتاب چیز جدیدی نیست و بگردید لیست‌های مختلفی پیدا می‌کنید.

تجربه برنامه‌نویس یا DX چیست و چطور DX بهتری خلق کنیم؟

تجربه برنامه‌نویس یا DX چیست و چطور DX بهتری خلق کنیم؟

DX چیه و چرا مهمه؟ DX مخفف Developer Exprience همون تجربه کاربری یا UX است برای وقتی که کاربر نرم‌افزار ما یک برنامه‌نویس باشه. در واقع DX کمک می‌کنه برنامه‌نویس‌ها زندگی راحت‌تری داشته باشند و موقع کار با برنامه‌ها و API‌ها از کارشون لذت ببرند. ممکنه بخواهید بدونید چرا مهمه DX داشته باشیم؟ یعنی خب مگه برنامه‌نویس کارش این نیست که با نرم‌افزارها و API‌های مختلف کار کنه؟ چه لزومی داره این تجربه لذت‌بخش باشه؟ خب وقتی کتابخانه برنامه‌نویسی یا SDK یا API ما DX خوبی داشته باشه، برنامه‌نویس‌ها خوشحال‌ترن، بیشتر معرفیش می‌کنن و زمان طولانی‌تر از محصول نرم‌افزاری ما استفاده خواهند کرد

مرزبانی داده‌های دیجیتال

 مرزبانی داده‌های دیجیتال

داستان چیه؟ یک رسوایی در حوزه حریم شخصی کاربران فیسبوک افشا شده که طی اون شرکت کمبریج آنالیتیکا به اطلاعات بیش از ۵۰ میلیون کاربر فیسبوک دسترسی داشته و احتمالاً از این اطلاعات برای هدف‌گیری تبلیغات سیاسی مرتبط با انتخابات استفاده کرده. این شرکت در انتخابات ۲۰۱۶ با کمپین ترامپ همکاری داشته. این موضوع سر و صدای زیادی در دنیا به پا کرده و حتی هشتگ DeleteFacebook راه افتاده که کاربرها به حذف اکانت فیس‌بوک تشویق می‌کنه.

اینترنت بی‌طرف حق مسلم ماست

اینترنت بی‌طرف حق مسلم ماست

شاید شما یادتون نباشه اما من از اینترنت بدون فیلترینگ در ایران یادمه. چند سال دیگه شما می‌تونید به بچه‌های اون زمان بگید، اینترنت بی‌طرف رو یادتونه. چون داریم از دستش می‌دیم! داستان چیه؟ وزارت ارتباطات، ارائه‌کنندگان اینترنت رو مجبور کرده تا بر اساس تعرفه جدید خدمات بدهند و روی حجم ماهیانه رقابت کنند. شرکت‌ها هم ترافیک داخل کشور رو نصف قیمت ترافیک خارج کشور حساب می‌کنند و حتی بعضی برای ۵۰۰ سایت پربازدید داخلی ترافیک رو رایگان محاسبه می‌کنند و این نقض بی‌طرفی شبکه محسوب می‌شه.

کتابچه تست جوئل روی گیت‌بوک

کتابچه تست جوئل روی گیت‌بوک

گیت‌بوک: گیت‌هاب برای نویسندگان گرچه روی گیت‌هاب هم می‌تونین کتاب بنویسین و با مشارکت دیگران بهترش کنین، اما سایت دیگه‌ای رو پیدا کردم که مخصوص همین کار ایجاد شده: گیت‌بوک گیت‌بوک در واقع یک سایت ساز استاتیک محسوب می‌شه که می‌تونید ازش برای نوشتن کتاب، مستندات API و حتی Knowledge Base استفاده کنید. ظاهر پنل گیت‌بوک خیلی شبیه گیت‌هاب طراحی شده و مشابه گیت‌هاب می‌تونید به کمکش محتوای عمومی (اپن سورس) و خصوصی داشته باشید.

وقت صحبت درباره افسردگی و بی‌انگیزه بودن برنامه‌نویسان فرا رسیده

وقت صحبت درباره افسردگی و بی‌انگیزه بودن برنامه‌نویسان فرا رسیده

چند سال پیش مطلبی نوشتم درباره سلامت برنامه‌نویسان و به چند نکته که به سلامت جسمی برنامه‌نویس‌ها کمک می‌کنه اشاره کردم. اما شغل برنامه‌نویسی مثل هر شغل دیگه می‌تونه برای سلامت روان هم مخاطراتی داشته باشه. بیاید چند موردش رو با هم بررسی کنیم: افسردگی: یکی از شایع‌ترین مشکلات مرتبط با سلامت روان در روزگار ماست. لزوماً ربطی به شغل برنامه‌نویسی نداره و ممکنه برای هر کسی در هر شغلی پیش بیاد اما برنامه‌نویس‌ها به دلیل کار در شرایط دائمی معمولاً استرس‌زا، خیلی در معرض این آسیب هستند.

بدهی فنی چیه و چطور باید بازپرداختش کنیم؟

بدهی فنی چیه و چطور باید بازپرداختش کنیم؟

یک وام با بهره بالا بدهی فنی هزینه دوباره‌کاری‌هاییه که به خاطر انتخاب راه حل ساده و سریع به جای راه حل اصولی و زمان‌بر می‌پردازیم. اغلب اوقات به خاطر فشار مدیران و گاهی هم به دلایل دیگر، عمدی یا غیرعمدی بخشی از کد رو اون‌طور که باید پیاده نمی‌کنیم به این امید که بعداً درستش خواهیم کرد. درست در همین لحظه برای خودمون بدهی فنی درست کردیم. تصویر زیر یک نمونه واضح بدهی فنی است.

شرکت، خانواده نیست!

شرکت، خانواده نیست!

هر وقت مدیرها درباره اینکه چطور شرکتشون یک خانواده بزرگه صحبت می‌کنن مراقب باشین. معمولاً منظورشون این نیست که مثل خانواده‌های سالم، شرکت هم در هر حالی از شما پشتیبانی می‌کنه یا بدون قید و شرط شما رو دوست داره. معمولاً داستان اینه که یک فداکاری یک طرفه وجود داشته باشه: اونم از طرف شما. این شروع نوشته‌ای از دیوید هنسن درباره اشتباه رایج کارکنانه. وقتی شرکت برای شما تبدیل بشه به خانواده اون وقت تا دیروقت موندن و بی‌خیال مرخصی شدن‌ها می‌شه یک انجام وظیفه برای خانواده و آدم که هیچ‌وقت از خانواده‌اش شکایت نمی‌کنه.

سلام دنیا

سلام دنیا

داستان چیه؟ یک وبلاگ دیگه است برای آدمی که از ۸۲ وبلاگ‌نویسی رو شروع کرده و در مقاطع مختلف ازش دور شده. این بار البته چند تا تفاوت داره: از صفر شروع نمی‌شه: کلی مطلب رو که پیشتر در وبلاگ آرایه منتشر کرده بودم رو به اینجا منتقل می‌کنم. چرا؟ چون فکر می‌کنم مطالب تخصصی که اونجا منتشر شدند برای مخاطبین این وبلاگ باشند یعنی شما که به نرم‌افزار علاقه دارید یا برنامه‌نویس هستین، نه مشتری‌های کسب و کار آرایه.

ساختار تیم‌های مدرن نرم‌افزاری قسمت ششم: ارتباط با مشتریان

ساختار تیم‌های مدرن نرم‌افزاری قسمت ششم: ارتباط با مشتریان

نرم‌افزار دیگر یک کالای لوکس نیست با یک تاخیر فاز نسبت به تحولات جهانی، حالا در ایران هم نرم‌افزار به بخش جداناپذیر از کسب‌وکارها تبدیل شده، همه از مغازه‌ها تا شرکت‌های بزرگ و سازمان‌ها درگیر انواع نرم‌افزارهای دسکتاپ، وب، موبایل و شبکه‌های اجتماعی هستند. کسب و کارهای سنتی به سرعت بازار خود را به رقبایی که از نرم‌افزار استفاده بهینه می‌کنند واگذار می‌کنند (رواج تاکسی‌های اینترنتی و کساد شدن بازار تاکسی تلفنی‌های سنتی را به عنوان نمونه مشاهده کنید).

۳۰ روز با TDD: روز هجدهم - بازبینی Refactoring قسمت اول

۳۰ روز با TDD: روز هجدهم - بازبینی Refactoring قسمت اول

توجه: قبل از این نوشته، آزمون‌های واحد (Unit testها) مربوط به تغییرات PlaceOrder نوشته قبلی را از اینجا می‌توانید دانلود کنید. در چند نوشته گذشته، متد PlaceOrder را از OrderService بیرون بردیم. برای مرور، متد فعلی این شکلی است: این متد کمی طولانی شده و همچنین داریم به محدوده نقض Single Responsibility Principel (برای مرور SRP روز پنجم را مطالعه کنید) وارد می‌شویم. در حال حاضر شش دلیل برای اینکه این متد باید تغییر کند شمردم:

«پریدن تیک» یا وقتی یک «نرم افزار» برای کشور مشکل ایجاد می‌کند

«پریدن تیک» یا وقتی یک «نرم افزار» برای کشور مشکل ایجاد می‌کند

مدتی پیش نوشته‌ای در روزنامه خراسان تحت عنوان «ترخیص کالا قربانی سامانه بی سامان گمرک» توجهم را جلب کرد. بخشی از این نوشته را با هم بخوانیم: پریدن تیک از سامانه هم یکی از مواردی است که بسیاری از ترخیص کاران و کارشناسان گمرک با آن دست به گریبان‌اند و به دلیل همین مشکل ممکن است چندین روز بین اتاق‌های گمرک و دستگاه‌هایی مانند وزارت راه، استاندارد یا غذا و دارو در آمدوشد باشند….