در عنوانهای شغلی، “برنامهنویس”، “توسعهدهنده نرمافزار” و “مهندس نرمافزار” ممکن است هر چیزی به معنایی باشد که یک شرکت بخواهد. برخی شرکتها به افرادی که نرمافزار تولید میکنند، “مهندس” میگویند، برخی دیگر “توسعهدهنده” و دیگرانی آنها را “برنامهنویس” مینامند.
تجربه من نشان داده که شرکتها بسته به میزان اهمیتی که به نرمافزار و تکنولوژی به عنوان یک مزیت رقابتی میدهند، از این عناوین استفاده میکنند. به طور کلی، اکثر شرکتهای فناوری بزرگ که نرمافزار را به عنوان محصول اصلی خود میبینند، به این افراد “مهندس نرمافزار” میگویند. شرکتهایی که به نرمافزار اهمیت میدهند ولی آن را به عنوان ابزاری حمایتی برای مشاغل دیگر مانند بانکداری یا علوم در نظر میگیرند، بیشتر از عنوان “توسعهدهنده نرمافزار” استفاده میکنند. شرکتهایی که نرمافزار را یک شر ضروری میدانند، آنها را “برنامهنویس” میخوانند. البته این صرفاً مشاهده شخصی من است و داده دقیقی برای اثبات این ادعا ندارم، پس با احتیاط به آن نگاه کنید.
به همین دلیل، تفاوت اساسی بین این عناوین شغلی وجود ندارد، مگر اینکه شرکت خاصی بیش از یک عنوان را استفاده کند (من هیچ شرکتی را نمیشناسم که این کار را بکند). با این حال، تفاوتهایی بین برنامهنویسی، توسعه نرمافزار و مهندسی نرمافزار وجود دارد که ممکن است توضیح دهد چرا برخی شرکتها یک عنوان را بر دیگری ترجیح میدهند.
برنامهنویسی
برنامهنویسی، تبدیل نیازهای قابل فهم برای انسان به کدهای ماشین است. این عمل فیزیکی نوشتن کدی است که به نرمافزار امکان اجرای وظایف مورد نظرش را میدهد. در این سطح، برنامهنویسی سادهترین بخش از فرایند توسعه نرمافزار است.
توسعه نرمافزار
توسعه نرمافزار شامل فرایند کاملی است که در طی آن یک نرمافزار ساخته میشود؛ از جمعآوری نیازها، ایجاد وظایف، برنامهریزی اسپرینتها، برنامهنویسی، تست واحد، تست یکپارچگی، تست قابلیت استفاده/تایید و غیره. این فرایند از ایدهپردازی یک سیستم نرمافزاری تا تحویل آن به عنوان یک محصول نهایی را شامل میشود.
مهندسی نرمافزار
مهندسی نرمافزار، گستردهترین نوع کار در این سه عنوان است. مهندسی نرمافزار، استفاده از نظریههای علوم کامپیوتر و ریاضیات برای ابداع، طراحی، تحقیق، توسعه، نگهداری، بهبود و نوآوری نرمافزار است. در این رویکرد، تمرکز کمتر بر خود نرمافزار و بیشتر بر حل مسئله است. گاهی اوقات یک مهندس نرمافزار خوب میتواند بدون نوشتن حتی یک خط کد جدید، مشکل را حل کند. بعضی اوقات حل مشکل به معنای هماهنگی توسعه چندین سیستم نرمافزاری است که به صورت پیچیده با هم تعامل دارند. و گاهی اوقات مهندسی نرمافزار به معنای حذف کدهای قدیمی و طراحی سیستم جدیدی برای جایگزینی آن است.
اما هر عنوان شغلی که به شما بدهند، همیشه خودتان را به عنوان یک مهندس نرمافزار در نظر بگیرید.
نتیجهگیری
در نهایت، عنوانهای شغلی “برنامهنویس”، “توسعهدهنده نرمافزار” و “مهندس نرمافزار” بسته به شرکتها متفاوت است، اما مسئولیتها و نقشهای آنها میتواند بسیار شبیه باشد. برنامهنویسی به نوشتن کد محدود میشود، در حالی که توسعه نرمافزار کل فرایند تولید نرمافزار را شامل میشود. مهندسی نرمافزار اما دیدگاهی گستردهتر و متمرکز بر حل مسئله و نوآوری دارد. در هر صورت، مهمترین نکته این است که همیشه با ذهنیت یک مهندس نرمافزار به مسائل نگاه کنید.
I think everybody in this country should learn how to program a computer, should learn a computer language, because it teaches you how to think. I view computer science as a liberal art. It should be
Steve Jobs
something that everyone takes
من فکر میکنم هر کسی در این کشور باید یاد بگیرد که چگونه یک کامپیوتر را برنامهنویسی کند و یک زبان برنامهنویسی بیاموزد، زیرا برنامهنویسی به شما یاد میدهد چگونه فکر کنید. من علوم کامپیوتر را بهعنوان یک هنر آزاد میبینم؛ چیزی که همه باید آن را بیاموزند.
نظر شما درباره تفاوت بین “برنامهنویس”، “توسعهدهنده نرمافزار” و “مهندس نرمافزار” چیست؟ آیا تجربه مشابهی داشتهاید، که این عنوانها به دلایل خاصی استفاده شده باشند؟ یا شاید فکر میکنید مهارتها و وظایف این نقشها بیشتر از چیزی که در مقاله بیان شده متفاوت است؟ خوشحال میشویم نظرات و تجربیات شما را بشنویم و با هم درباره این موضوع جذاب بیشتر بحث کنیم!
2 پاسخ
تفکیک بندی مفصل و جالبی بود
درود
خوشحالم که مفید بوده براتون