بهترین فریم‌ورک برای برنامه‌نویسی؟

خیلی طولانیه، نمیخونم:

هرچیزی که باهاش راحت‌تر هستید، شما رو زودتر به پولتون میرسونه و مشتریتون رو هم راضی نگه میداره میشه بهترین فریم‌ورک برای شما!

بریم تو جزئیات:

برنامه‌نویسی، یک حرفه هست. یه فرق بین یک مهندس نرم‌افزار و برنامه‌نویس وجود داره. یک برنامه‌نویس الزاما دانش مهندسی نداره، و یک مهندس نرم‌افزار الزاما دانش برنامه‌نویسی. از اینجاست که وقتی کسی ازمون بپرسه که «من میتونم برنامه‌نویس بشم؟» با وجود اینکه مثلا رشته‌ی تحصیلیش آبیاری گیاهان دریایی بوده (صرفا منظورم بی‌ربط بودن رشتست)، ما بهش میگیم «آره که میتونی، فقط کافیه یه درک از ریاضی (که اینجا منظورمون احتمالا الگوریتم حل مسئلست) داشته باشی...».

اما اگه یکی بیاد و از ما بپرسه که «من میتونم مهندس نرم‌افزار بشم؟» اونجاست که یکم صبر میکنیم، فکر میکنیم و شرایط رو میسنجیم تا جوابی صرفا از روی باد هوا ندیم.

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

مهمترین تفاوت حرفه‌ی برنامه‌نویسی و مهندسی نرم‌افزار، توی تحصیلاتیه که یک مهندس میگذرونه. یک مهندس نرم‌افزار، با دانش مدیریتی و ریاضیاتی که کسب میکنه، موضوع (میتونید فرض کنید یک پروژه) رو از بالا نگاه میکنه، اون رو آنالیز میکنه و نیازهای مشتری رو میسنجه، کاربرها و مشتری‌های اون رو بررسی میکنه و در نهایت با یک راه حل مهندسی شده یا Engineered Solution برمی‌گرده. اصولا مهندسی نرم‌افزار یک کار تیمیه، در حالی که حرفه‌ی برنامه‌نویسی یک کار یک نفره.

یک برنامه‌نویس، یا توسعه‌دهنده‌ی نرم‌افزار، کسیه که رهنمود‌ها یا Guidelineهای مهندس رو میگیره و اونها رو تبدیل به یک برنامه‌ی کامپیوتری میکنه. مهمترین ویژگی برنامه‌نویس‌ها اینه که خوب تجربه کسب میکنن و اکثرا تجربشون به دانشی که نیاز دارن برای اینکار میچربه.

اما سریع تفاوت‌هاشون رو بررسی میکنم:

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

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

ادامه رو اینجا بخونید....