تفاوت Programmer یا برنامه نویس با توسعه دهنده یا Developer در چیست؟ چگونه می توانیم برنامه نویس را از توسعه دهنده تشخیص دهیم؟ یکی از سئوالاتی که ذهن خودم را این روزها درگیر کرده بود و تصمیم گرفتم در مورد آن در توسینسو مطلب بنویسم این مورد است که تفاوت یک برنامه نویس و یک توسعه دهنده در چیست ؟ در واقع این روزها هر کسی که کدنویسی کامپیوتر را بلد باشد اسم برنامه نویس یا توسعه دهنده را بر روی خودش می گذارد اما واقعا تفاوت این دو کلمه در چیست ؟
چه تخصص هایی در این بین وجود دارند که تفاوت های برنامه نویس و توسعه دهنده نرم افزار را تعریف می کنند ؟ اگر بخواهیم ساده توضیح بدهیم ، یک برنامه نویس ، برنامه می نویسد و یک توسعه دهنده توسعه می دهد !! این واژگان آنقدر در صنعت کامپیوتر دارای پیچیدگی هستند که از لحاظ شغلی و جایگاه تخصصی نیز از جمله پیچیده ترین طبقه بندی های شعلی محسوب می شوند . اما ابتدا بیایید با شباهت های بین این دو عنوان شغلی شروع کنیم و سپس به تفاوت ها برسیم .
در هر دو سمت شغلی برنامه نویس و توسعه دهنده نرم افزار کامپیوتر ، متخصص ما باید بتواند کدهای یک یا چند زبان برنامه نویسی را بنویسد ، آنها را تست کند و به قول برنامه نویس ها دیباگ ( Debug ) یا رفع اشکال کند . در هر دو سمت شغلی متخصص یه درخواست ها و نیازهای مشتری اهمیت می دهند و آنها را به خوبی درک می کند . پس از این دو نظر می توان تا اینجا برنامه نویس و توسعه دهنده را یک شخص دانست.
اما تفاوت از اینجا شروع می شود که زمانیکه صحبت از توسعه دادن می شود ، الزاما صحبت از شخص نیست ، بلکه ممکن است ما صحبت از یک شرکت توسعه دهنده نرم افزار نیز داشته باشیم ، زمانیکه صحبت از توسعه دادن می شود یعنی شخص یا شرکت همیشه در حال ارائه ایده ها و راهکارهای جذاب و جدید برای حل کردن مشکلات تجارت های مختلف است و هیچوقت یک محصول و کار تکراری انجام نمی دهد ، همانطور که از نامش هم پیداست توسعه دهنده است یعنی یک یا چند محصول دارد که همیشه در حال پیشرفت و توسعه هستند .
یک توسعه دهنده نرم افزار علاوه بر اینکه ویژگی های یک برنامه نویس حرفه ای را دارد از طرفی یک سری استعدادها و مهارت ها مثل نحوه ارتباط گیری با کاربران ، تجزیه و تحلیل نیازمندی های تجاری پروژه ، طراحی و معماری سیستم ، مهارت های متنوع فنی ، مهارت های ارتباطی و بیانی ، مستند سازی ، آزمایش کردن ، مدیریت پروژه و بسیاری دیگر از مهارت ها را نیز دارد . در واقع یک توسعه دهنده یا Developer مهارت هایش محدود نیست و می تواند این مهارت ها را هر روز گسترده تر کند و طبیعتا دیدگاه بسیار بسیار وسیع تری نسبت به پروژه های نرم افزاری به نسبت یک برنامه نویس دارد . برای مثال یک برنامه نویس ممکن است بلد باشد کد یک نرم افزار حسابداری را بنویسد اما هیچ دیدی نسبت به بازار هدف ، نحوه انتشار نرم افزار در تجارت های مختلف ، بازاریابی ، خدمات پس از فروش ، رابط کاربری ، تجربه کاربری و ... نداشته باشد .
توسعه دهنده الزاما نباید یک برنامه نویس خبره نیز باشد ، اما قطعا می تواند کدنویسی کند ، نکته مهم این است که یک توسعه دهنده قدرت تجزیه و تحلیل کدهای نوشته شده توسط یک برنامه نویس و ارائه گزارش های مربوط به مشکلات و بهبود های یک نرم افزار را می تواند داشته باشد ، به زبان ساده تر یک توسعه دهنده قدرت Debug کردن بهتری به نسبت یک برنامه نویس از این لحاظ دارد . توسعه دهنده می تواند قسمت تجاری مسئله نرم افزار را به درستی بررسی کند و مشکلاتی که در این حوزه وجود دارند را مشاهده و برطرف کند .
اگر کسی قرار است در سمت شغلی توسعه دهنده در یک شرکت استخدام شود حتما باید مباحثی مثل برنامه ریزی و مدیریت پروژه نرم افزاری ، نوشتن خاصیت های پروژه ، نحوه ایجاد کردن بسته نرم افزاری ، پروتکل رفع اشکالات موجود در نرم افزار چه در زمان نوشته شدن و چه در زمان نصب نرم افزار و بسیاری دیگر از مهارت های از این دست را داشته باشد . بصورت خلاصه توسعه دهنده یعنی طراح ، تجریه و تحلیل گر ، پیاده ساز ، کدنویس ، تست کننده ، نگهداری کننده و مستند ساز یک پروژه نرم افزاری و یک برنامه نویس طبیعتا بصورت خلاصه قسمت کدنویسی ، تست کردن و کامپایل کردن نرم افزار را بیشتر بر عهده دارد .
توسعه دهنده نرم افزار را می توان به چاقوی ارتش سوئیس ( چاقوی همه کاره ) تشبیه کرد که توانایی استفاده از انواع و اقسام ابزارها و دانش برای رسیدن پروژه به مقصد را بر عهده دارد . برنامه نویس بیشتر از اینکه همه کاری بتواند انجام بدهد توانایی نوشتن کدهای خوب دارد ، مهمترین وظیفه یک برنامه نویس نوشتن یک کد بدون باگ و بدون مشکل برای اجرا است و قسمت های غیرمرتبط با کدنویسی بیشتر بر عهده توسعه دهنده است. لیست وظایف یک برنامه نویس نوشتن کدها ، تست کردن کدها و رفع اشکال یا Debug کردن کدهاست ، در خصوص تست و Debug در این قسمت کارشان با توسعه دهنده تداخل کاری دارند .
در سطوح کلان وظیفه یک توسعه دهنده و یک برنامه نویس تفکیک شده است و در سازمان ها دو نفر در این پست ها قرار می گیرند ، برنامه نویس کدها را می نویسد و تست می کند و رفع اشکال می کند و توسعه دهنده راهکارهای تجاری ، مشکلات رابط کاربری ، مسائل مالی و تجاری ، ارائه پیشنهادات و انتقادات برای بهبود وضعیت کد نوشته شده و بصورت کلی ارائه راهکار نهایی را بر عهده دارد . از نظر فنی و حتی مالی یک توسعه دهنده یک یا چند لایه بالاتر از یک برنامه نویس است زیرا برنامه نویس به عنوان یک پیشنیاز برای تبدیل شدن به یک توسعه دهنده در نظر گرفته می شود. اگر بخواهیم بصورت خلاصه عنوان کنیم :
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات
محمد نصیری هستم ، بنیانگذار انجمن تخصصی فناوری اطلاعات ایران و مجموعه توسینسو ، هکر قانونمند و کارشناس امنیت سایبری ، سابقه همکاری با بیش از 80 سازمان دولتی ، خصوصی ، نظامی و انتظامی در قالب مشاور ، مدرس و مدیر و ناظر پروژه ، مدرس دوره های تخصص شبکه ، امنیت ، هک و نفوذ ، در حال حاضر در ایران دیگه رسما فعالیتی غیر از مشاوره انجام نمیدم ، عاشق آموزش و تدریس هستم و به همین دلیل دوره های آموزشی که ضبط می کنم در دنیا بی نظیر هستند.
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود