کدنویس در برابر برنامهنویس
هر کسی که کد مینویسد، لزوماً برنامهنویس نیست!
من همیشه معتقد بودهام که بین «کدنویس» و «برنامهنویس» تفاوت وجود دارد. البته میدانم که در ادبیات فنی، این دو واژه گاهی بهجای یکدیگر استفاده میشوند؛ اما وقتی از زاویهی تجربهی کاری به موضوع نگاه میکنم، برای من یکسان نیستند.
کدنویسی، بخش مهمی از برنامهنویسی است؛ اما تمام آن نیست.
میشود مسئلهای را به شما داد، راهحلش را هم مشخص کرد و از شما خواست آن را به کد تبدیل کنید. اگر بتوانید این کار را درست انجام دهید، مهارت کدنویسی دارید. این مهارت ارزشمند است و نباید آن را دستکم گرفت.
اما وقتی قرار است خودتان مسئله را بفهمید، راهحل طراحی کنید، دربارهی روشهای مختلف تصمیم بگیرید، محدودیتها را بشناسید و مسئولیت نتیجه را بپذیرید، وارد قلمرو گستردهتری میشوید که من آن را برنامهنویسی میدانم.
برنامهنویس فقط نمیپرسد «چطور این قابلیت را پیادهسازی کنم؟» او باید بپرسد «آیا اصلاً این راهحل درست است؟»، «اگر شرایط تغییر کند چه میشود؟» و «آیا راه سادهتر، امنتر یا قابل نگهداریتری وجود دارد؟»
برای من، تفاوت اصلی همینجاست: توانایی نوشتن دستورها در برابر توانایی حل مسئله با کمک نرمافزار.
البته این تعریف یک مرزبندی رسمی و جهانشمول نیست. در بسیاری از محیطهای کاری، عنوان Programmer و Coder مترادفاند و یک کدنویس حرفهای هم ممکن است در طراحی الگوریتم، معماری و تحلیل مسئله توانمند باشد. از طرف دیگر، داشتن عنوان برنامهنویس هم بهخودیخود نشانهی تسلط بر این مهارتها نیست.
پس بحث من بر سر عنوان شغلی افراد نیست؛ بر سر نوع نگاه ما به کاری است که انجام میدهیم.
در طول سالها کار با نرمافزار، برایم روشن شده که نوشتن کد معمولاً آسانترین بخش ماجرا نیست، حتی اگر گاهی بیشترین زمان را به خودش اختصاص دهد. فهمیدن مسئله، شناختن استثناها، انتخاب راهحل مناسب و در نظر گرفتن هزینهی تصمیمها، بخشهایی هستند که کیفیت واقعی کار را مشخص میکنند.
ممکن است دو نفر دقیقاً یک قابلیت را پیادهسازی کنند و هر دو هم در تست اولیه موفق باشند؛ اما یکی راهحلی بسازد که با اولین تغییر جدی به مشکل بخورد و دیگری سیستمی طراحی کند که توسعهدادنش در آینده منطقی و قابل پیشبینی باشد.
تفاوت این دو، لزوماً در تعداد خطوط کد یا پیچیدگی تکنیکهای استفادهشده نیست. گاهی حتی راهحل بهتر، کد کمتری دارد.
من با کدنویسی مشکلی ندارم؛ خودم هم هر روز برای حل مسائل به آن نیاز دارم. مسئله از جایی شروع میشود که تصور کنیم تولید کد، بهتنهایی معادل حل مسئله است.
برای من، برنامهنویس کسی نیست که همیشه پیچیدهترین راهحل را پیدا میکند یا تمام جزئیات یک زبان را حفظ است. کسی است که میداند چه چیزی را، چرا و چگونه میسازد؛ و مهمتر از آن، میتواند از تصمیمهایش دفاع کند و وقتی شواهد نشان میدهند اشتباه کرده، آنها را اصلاح کند.
شاید در نهایت تفاوت این دو واژه آنقدرها هم مهم نباشد. مهم این است که وقتی نرمافزاری را تحویل میدهیم، فقط به این افتخار نکنیم که کدش را نوشتهایم؛ بتوانیم توضیح بدهیم چه مسئلهای را حل کردهایم و چرا این راه را انتخاب کردهایم.
چون هدف نهایی ما تولید کد نیست؛ ساختن راهحلی است که واقعاً کار کند، قابل اعتماد باشد و بتواند در دنیای واقعی دوام بیاورد.
دیدگاهها
۰هنوز دیدگاهی ثبت نشده است؛ اولین نفر باشید.
دیدگاه خود را بنویسید