مقدمه
پس از مدت های زیادی توجه به ساختار نقش ها در دنیای نرم افزار، به یک تفاوت در میان دو نقش رسیدم که اگر در دو طبقه بندی جدا از هم قرار گرفته می شد و نسبت به این دو نقش تصمیماتی برای انتخاب افراد-در شرکت های نرم افزاری - گرفته می شد، در اجرایی کردن پروژه های نرم افزاری تاثیر بسیاری در به وجود آمدن کیفیت حس می شد.
در این نوشته می خواهیم از تفاوت میان برنامه نویس ها و کد نویس ها بنویسیم و با توجه به این دو نقش متفاوت، خودمان را با آن مقایسه کرده و در صورت قرار گرفتن در هر کدام از این دسته ها به تقویت تخصص خود بپردازیم و انتخاب و ادامه مسیرمان آگاهانه تر باشد. یک سوال مهم مطرح می شود که : دانستن این تفاوت چه کمکی به ما خواهد کرد ؟
همانطور که مستحضر هستید، اگر دنیای علوم پزشکی را نگاهی بکنیم می بینیم که در ابتدا دکترهای چشم پزشک به صورت عمومی می توانستند در تمامی بیماری های مربوط به چشم نظراتی ارائه دهند و معالجه انجام بدهند فارغ از موفقیت آمیز بودن یا نبودن آن. اما در روزگار امروز ما متخصصانی ریزبین تر در همان حوزه داریم و با نام هایی چون متخصص قرنیه و متخصص شبکیه و امثال هم، آشنا هستیم. در این که این تفکیک ها و تخصص ها باعث بالا رفتن کیفیت کار شده است هیچ شکی نیست اما چندان برابر پیش عمق پیدا کرده است.
حال در حوزه تکنولوژی و IT، نقش ها نیز به همین صورت هستند و هر چقدر که تفکیک های اساسی ایجاد بشود و دامنه تخصص ها بیشتر بشود باعث پیشرفت کار و بالا رفتن سطح کیفیت خواهد شد. برای همین خواستم که به نوبت خود این قدم کوچک را بردارم و کمکی به دانش آزاد کرده باشم. امیدوارم که نقص یا کوتاهی اگر در کلام بود با سعه صدر آن را ببخشید و در صورت ارائه نظر بر کمال این متن بیفزایید.
در اصل این دو نقش برای ما، تنها دو انتخاب هستند و افضل بودن یکی از این نقش ها بر دیگری نیست و هدف مقایسه برای انتخاب بهترین، ما بین آن دو نیست. بلکه همانطور که تمامی انتخاب های ما صرفا انتخاب بوده و در صورت گذاشتن وقت و دادن بها و ارزش به آن، مثمر ثمر خواهد بود. این نوشته نیز در همین راستا است.
پس از ایجاد سخت افزارها مهندسان به فکر ایجاد ارتباط آسانتر میان خودشان و سخت افزار بودند به همین دلیل زبان های برنامه نویسی و برنامه های واسط مانند operating system ها به وجود آمد. زبان های برنامه نویسی دارای الگوریتم و ساختارهای بسیار حساب شده بود که خلق چهار چوب برای سخت افزار و کاربر را انجام می داد. برنامه نویس ها کسانی بودند که بسیار با ریاضیات آشنا بوده و الگوریتم ها و ساختارها را بسیار عمیق بلد بودند و سعی در رام کردن منطق دیجیتالی سخت افزار کاملا فیزیکی، به مفاهیم انتزاعی و برآورد کردن تمامی خواسته های فکری بودند. این رام کردن حتی به حوزه مکانیک نیز سرایت کرد و کسی چون آلن تورینگ با ماشینی مکانیکی توانست خواسته های ذهنی خود را برآورد سازد. همانطور که همه می دانیم خلق کامپیوتر برای حل مسئله بود و چگونگی آن میراثی ماند برای برنامه نویس ها. یعنی در اصل برنامه نویسان کسانی هستند که می توانند تجزیه و تحلیل بکنند و خالق ساختارها هستند.
بوی چوب و صدای اره بر آن، کسانی را سوق داده تا از آنها ساز سازانی معروف با سازهایی مهر خورده و تاریخ ساز بسازد، اما این هنرمندان لزوما نوازندگانی مشهور نیستند. نوازندگانی که آلبوم سه تار آنها، برایمان خاطره ساز بوده و آرامش شبهای ما را سازخته اند. یک نجار و اره به دست حرفه ای نیستند.
یک راننده حرفه ای نیز یک مکانیک نیست و بلعکس. اوج اختلاف یک برنامه نویس و یک کدنویس را حال با این مثال ها می توان درک کرد. کدنویسان کسانی هستند که زبان برنامه نویسی حکم ابزار را داشته و تسلط بر آن تمام کار آنهاست. شناخت زبان، شناخت تمامی ماژول ها، کتابخانه ها و کاربرد های آن، کار یک کد نویس است.
همانطور که عرض کردیم هدف شناخت بهتر کاری است که می کنیم و تخصص یافتن در کارمان. اگر شما یک برنامه نویس هستید زبان های برنامه نویسی را صرفا برای فهم خود یادبگیرید در عوض تحلیل و سرعت پیدا کردن راه حل درست را در خودتان تقویت کنید و پیداه سازی کد و نوشتن آن و همچنین قابلیت ها و ویژگی های زبان ها را به کدنویسان و خوره های زبان ها بسپارید.
به پایان آمد این دفتر حکایت همچنان باقیست به صد دفتر نشاید گفت حسب الحال مشتاقی؛
سعدی
ابوبکر مصطفی نژاد مهندس نرم افزار و عضو زیرساخت کوباک
بسیار خوشحال خواهم شد نظراتتان و نقدهای بسیار زیبایتان را با من به اشتراک بگذارید
Alfaar7@gmail.com