Programmer's Vs Coder's

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