# مهندسی نرم افزار > مباحث مرتبط با مهندسی نرم‌افزار >  تفاوت برنامه نویسی و مهندس نرم افزار

## farnaz.kermat

گاهی این تصور پیش می‌آید که مهندسین نرم افزار همان برنامه نویسان هستند. این مقاله هر دو مفهوم را مورد بررسی قرار می‌دهد.در این مقاله قصد داریم تا تفاوت میان تفاوت برنامه نویسی و مهندس نرم افزار بررسی کنیم.

معمولا در پروژه های نرم افزاری, مهندسین نرم افزار و برنامه نویسان باهم همکاری می‌کنند. به این معنا که هر پروژه به هردو تخصص نیاز دارد. گاهی متناسب با ابعاد پروژه, یک شخص هر دو مسئولیت را به عهده می‌گیرد. همین امر باعث می‌شود تا عده ای مهندسین نرم افزار را همان برنامه نویسان بدانند. اما هر یک از این تخصص ها در یک حوزه از پروژه نرم افزاری دخیل هستند و از ارتباط این دو تخصص, یک پروژه با ساختار منسجم بوجود می‌آید. به همین دلیل وظایف و درآمد آنها نیز با هم متفاوت است
*برنامه نویسان*

برنامه نویسان نیازمندی ها را از مهندسین نرم افزار دریافت می‌کنند و آنها را در قالب کد ها پیاده سازی می‌کنند. برنامه نویسان باید حداقل به یک زبان برنامه نویسی مانند جاوا, پایتون و… مسلط باشند و توانایی کار با Library ها در آن زبان را داشته باشند. بروز بودن, قابلیت رفع عیب ها و تحلیل کد های موجود از ویژگی های برنامه نویسان است. برنامه نویسان از Library ها برای ساده تر کردن فرآیند کد نویسی و همچنین افزایش سرعت توسعه برنامه استفاده می‌کنند.
تمایز میان شغل برنامه نویسان و مهندسین نرم افزار در طولانی مدت نمایان می‌شود. در ابتدا ممکن است یک شخص در هر دو بخش بتواند فعالیت کند. اما پس از مدتی مهندسین نرم افزار بیشتر درگیر فرآیند مدیریت پروژه ها می‌شوند و از بروز رسانی در حوزه پیاده سازی کد ها جا می‌مانند. این امر کاملا طبیعی است زیرا در مقابل این اتفاق, مهندسین نرم افزار شیوه های جدید مدیریت پروژه را بررسی می‌کنند.
در سمت دیگر, برنامه نویسان توانایی کار با Library ها را کسب می‌کنند و در تلاش هستند تا در بهینه ترین حالت ممکن, خواسته های پروژه را پیاده سازی کنند. همین امر از قدرت تحلیل آنها می‌کاهد.
با این حال هم برنامه نویسان و هم مهندسین نرم افزار باید حداقل هایی را در حوزه مقابل خود داشته باشند. این امر باعث می‌شود تا تعامل بهتری میان اعضای پروژه صورت گیرد و روال کار به صورت منظم تری پیگیری شود. مهندسین نرم افزار, همیشه در قالب یک تیم فعالیت می‌کنند اما برنامه نویسان می‌توانند به صورت انفرادی نیز کار خود را انجام دهند و این امکان وجود دارد تا همراهی دائمی با تیم نداشته باشند.
*مهندسین نرم افزار*

مهندسین نرم افزار(Software Engineer) که به آنها Software Developer هم اطلاق می‌شود, بیشتر با مشتریان پروژه در ارتباط هستند. آنها نیاز های مشتریان را مورد بررسی قرار می‌دهند و راه حل های نرم افزاری را برای پیاده سازی آن پیدا می‌کنند. تعیین بودجه پروژه, نیازمندی های سیستم, طراحی سیستم و … از جمله وظایف مهم یک مهندس نرم افزاراست. تخصص مهندسین نرم افزار به دسته های متنوعی قابل تفکیک است. برای مثال, وقتی یک مهندس نرم افزار, وظیقه طراحی سیستم را برعهده می‌گیرد در حقیقت یک Software Developer است.
این افراد بر روی طراحی پایگاه های داده, پردازش ها و برنامه های مورد نیاز تمرکز می‌کنند. اگر چه مهندسین نرم افزار درگیر فرآیند کدنویسی نمی‌شوند, اما باید تجربه کافی و تسلط لازم را در حوزه کدنویسی و ابزار مرتبط با آن داشته باشند.
در این مقاله سعی بر این شد تا با مفهوم دو شغل برنامه نویسی و مهندسی نرم افزار و تفاوت های میان این دو شغل آشنا شویم. این دو شغل را می‌توان مکمل یکدیگر در پروژه های نرم افزاری دانست.

----------

