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

برای اینکه تفاوت بین این دو کلمه رو از نظر فنی (و نه صرفاً معنایی) متوجه بشوید، اجازه بدید از مثالی که در این مقاله آمده استفاده کنم. در این مثال یک صورت مساله مشخص را به دو شخص که یکی صرفاً برنامه‌نویسی می‌داند (programmer است) و دیگری را می‌توان توسعه‌دهنده نرم‌افزار (Software Developer) نامید می‌دهیم و خروجی را مقایسه می‌کنیم:

صورت مساله: برنامه‌ای بنویسید که 2 عدد را با هم جمع کند و نتیجه را نشان بدهد.

اگر به یک برنامه‌نویس (فرض کنیم برنامه‌نویس دات نت) صورت مساله بالا را بدهیم، بلافاصله Visual Studio را باز می‌کنه و شروع می‌کنه به نوشتن کد و build و باز هم کد و build و build‌، اجرا و تست و در نهایت آماده شدن چیزی شبیه به تصویر زیر:

این برنامه در نگاه اول کار خواسته شده را انجام می‌دهد اما:

و اگر احتمالاً کد این برنامه را نگاه کنیم با انبوهی از نام‌گذاری اشتباه label1 و button1 و متدهایی مثل button1click و … مواجه می‌شویم که هیچ کس حتی خود برنامه‌نویس، دو ماه بعد متوجه منطق آن‌ها نخواهد شد! احتمالاً هیچ کامنتی در کد وجود ندارد، به همه حالات خطا فکر نشده و بعضی چیزها مثل عملیات انجامی هم hardcode شده است.

اما اگر به یک توسعه‌دهنده نرم‌افزارصورت مساله بالا را بدهید، قبل از نوشتن کد، یک قلم و کاغذ برمیدارد و لیستی از ویژگی‌های برنامه‌ای که می‌خواهد درست کند ایجاد می‌کند. به خطاهای احتمالی فکر می‌کند و همین‌طور یک UI اولیه بر روی کاغذ ترسیم می‌کند. بعد دست به کار نوشتن برنامه می‌شود و خروجی‌اش احتمالاً چیزی شبیه به تصویر زیر خواهد بود:

این برنامه هم در ظاهر همان کار برنامه بالا را انجام می‌دهد اما:

علاوه بر این موارد در کد نیز، نام‌گذاری استاندارد استفاده شده و مواردی که نیاز به توضیح داشته، کامنت نوشته شده است. خطاها به شکل مناسبی مدیریت شده‌اند و برای استثناء های غیرقابل پیش‌بینی هم فکری شده. پروژه تست اتوماتیک برای نرم‌افزار هم نوشته شده است.

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

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

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

در این مورد بیشتر با هم حرف می‌زنیم.