SHET22

کدنویسی یا برنامه نویسی – کدام یک صحیح‌تر است؟

کدنویسی یا برنامه نویسی – کدام یک صحیح‌تر است؟

چند سال پیش در یکی از جمع‌های برنامه‌نویسی شیراز اعلام کردیم که به چند «کدنویس وردپرس» نیاز داریم. واکنش جمع فوری بود: «چرا به ما می‌گید کدنویس؟ ما برنامه‌نویسیم!»

اون لحظه برای ما جالب بود، چون منظورمون توهین نبود؛ داشتیم یه نقش مشخص رو توصیف می‌کردیم. اما واکنش جمع نشون داد که این کلمه‌ها فقط توصیف شغل نیستن؛ برای خیلی‌ها بخشی از هویت حرفه‌ای‌شونن. و همین‌جاست که بحث جذاب می‌شه. چون این سؤال که «من کدنویسم یا برنامه‌نویس؟» در ظاهر یه بحث لغویه، اما در عمل به سه چیز خیلی واقعی گره خورده، مثل حقوقی که می‌گیرید، کاری که ازتون انتظار می‌ره، و مسیری که برای رشد باید طی کنید.

در این مقاله می‌بینیم این واژه‌ها دقیقاً چه معنایی دارن، تفاوت واقعی بین این سطوح چیه، چطور بفهمیم خودمون کجای این طیف هستیم، و مهم‌تر از همه چطور از یه سطح به سطح بعدی برسیم. یه نکته‌ی مهم هم هست که خیلی از مقالات این حوزه بهش اشاره نمی‌کنن و اول از همه بهش می‌پردازیم.

هشدار: این تقسیم‌بندی، استاندارد جهانی نیست

قبل از هر چیز باید صادق باشیم. در صنعت نرم‌افزار جهانی، مرز رسمی و پذیرفته‌شده‌ای بین «کدنویس»، «برنامه‌نویس» و «توسعه‌دهنده» وجود نداره. این سه واژه در بیشتر موارد به‌جای هم استفاده می‌شن.

در بازار کار، عنوان رایج «توسعه‌دهنده» یا «مهندس نرم‌افزار» هست و سطح‌بندی هم معمولاً با پیشوندهای جونیور، میدلول و سنیور انجام می‌شه، نه با تفکیک کدنویس و برنامه‌نویس.

پس چرا این بحث رو مطرح می‌کنیم؟ چون پشت این واژه‌ها یه تفاوت واقعی وجود داره، حتی اگه اسم‌گذاریش قراردادی باشه. اون تفاوت واقعی رو می‌شه در یه جمله خلاصه کرد:

تفاوت اصلی در عمق درکه، نه در تعداد خطوط کدی که می‌نویسید.

یعنی دو نفر ممکنه هر دو یه افزونه‌ی وردپرس بنویسن که دقیقاً یه کار رو انجام می‌ده؛ یکی می‌دونه چرا هر خط رو نوشته و پشت هر تصمیمش دلیل داره، و اون یکی از روی نمونه کپی کرده و تا وقتی کار می‌کنه راضیه. تفاوت این دو نفر روز اول معلوم نیست؛ روزی معلوم می‌شه که چیزی خراب بشه. پس در ادامه، این واژه‌ها رو به‌عنوان مدل ذهنی برای فهم مسیر رشد استفاده می‌کنیم، نه به‌عنوان برچسب برای دسته‌بندی آدم‌ها.

کدنویس کیست؟

کسی که با یه پلتفرم یا چارچوب مشخص کار می‌کنه، کدهاش رو می‌فهمه، می‌تونه تغییرشون بده و باهاشون چیز جدید بسازه؛ اما دانشش به همون ابزار گره خورده.

مثال وردپرسی‌ش واضحه، مثلا کسی که توابع وردپرس رو می‌شناسه، قالب سفارشی می‌سازه، افزونه می‌نویسه و با هوک‌ها و فیلترها راحته. اما اگه ازش بخواید یه سیستم مدیریت محتوا از صفر با PHP بنویسه، نمی‌تونه.

تشبیه دقیقش مکانیک ماهره. یه مکانیک خوب موتور رو باز می‌کنه، عیب رو پیدا می‌کنه، قطعه عوض می‌کنه و حتی می‌تونه بازدهی موتور رو بهتر کنه. اما طراحی و ساخت موتور از صفر کار اونه نیست؛ کار مهندس طراحه.

و اینجا یه نکته‌ی مهم: این نه ضعفه، نه چیزی که باید ازش خجالت کشید. یه مکانیک ماهر ارزش اقتصادی واقعی داره و کارش تخصصیه. کدنویس مسلط وردپرس هم همین‌طور؛ بازار کار واقعی داره و درآمدش هم می‌تونه خوب باشه.

برنامه‌نویس کیست؟

کسی که به یه یا چند زبان برنامه‌نویسی تسلط داره و مهم‌تر از اون، به مفاهیم زیربنایی مسلطه؛ مثل ساختمان داده، الگوریتم، شی‌گرایی، الگوهای طراحی و اصول مهندسی نرم‌افزار.

ویژگی اصلیش اینه که به ابزار خاصی وابسته نیست. اگه فردا لازم باشه زبان جدیدی یاد بگیره، چند هفته‌ای این کار رو می‌کنه؛ چون مفاهیم پایه در همه‌ی زبان‌ها مشترکن و فقط نحو (syntax) فرق می‌کنه.

در همون مثال وردپرس: برنامه‌نویس کسیه که می‌تونه از صفر یه سیستم مدیریت محتوا طراحی کنه؛ ساختار دیتابیس، لایه‌ی امنیت، سیستم مسیریابی و معماری توسعه‌پذیری رو خودش بچینه.

تفاوت واقعی در رویکرد است

این شاید بهترین راه برای تشخیص باشه.

کدنویس معمولاً از راه‌حل شروع می‌کنه: «می‌خوام یه فرم تماس بسازم» و بعد می‌ره سراغ مستندات و توابع آماده. مسیر از پیش مشخصه و کارش پیدا کردن و به‌کار بردن اون مسیره.

برنامه‌نویس از مسئله شروع می‌کنه: «چطور می‌شه سیستمی ساخت که ورودی کاربر رو امن دریافت کنه، مقیاس‌پذیر باشه و برای نیازهای آینده قابل توسعه باشه؟» هیچ دستورالعمل گام‌به‌گامی وجود نداره و باید خودش معماری رو طراحی کنه.

و یه تست عملی خوب: وقتی خطایی می‌بینید که تا حالا ندیدید، چه کار می‌کنید؟ اگه متن خطا رو در گوگل جستجو می‌کنید و اولین راه‌حلی که کار کنه رو برمی‌دارید، بیشتر به سمت کدنویسی هستید. اگه اول سعی می‌کنید بفهمید چرا این خطا رخ داده و بعد راه‌حل رو انتخاب می‌کنید، دارید مثل برنامه‌نویس فکر می‌کنید.

توسعه‌دهنده چه کسی است؟

اینجا یه لایه‌ی دیگه اضافه می‌شه که ربطی به خود کد نداره؛ مثل مهارت‌های ساختن نرم‌افزار در کنار دیگران و در طول زمان. کسی ممکنه برنامه‌نویس خوبی باشه اما هیچ‌وقت در تیم کار نکرده باشه، با Git راحت نباشه یا ندونه کد چطور روی سرور مستقر می‌شه. اون آدم هنوز به معنای صنعتی، توسعه‌دهنده نیست. چیزهایی که این لایه رو تشکیل می‌دن:

  • مدیریت نسخه. نه فقط کامیت کردن، بلکه کار با شاخه‌ها، ادغام، حل تعارض و طراحی یه جریان کاری تیمی که چند نفر بتونن هم‌زمان روی یه پروژه کار کنن بدون اینکه کار همدیگه رو خراب کنن.
  • بازبینی کد. توانایی خوندن کد دیگران، تشخیص مشکل و دادن بازخورد فنی محترمانه و مستدل. و به همون اندازه مهم، توانایی پذیرفتن بازخورد روی کد خودتون.
  • درک چرخه‌ی کامل توسعه. از نیازسنجی و تحلیل تا طراحی، پیاده‌سازی، تست، استقرار و نگهداری. کدی که نوشته می‌شه اما هیچ‌وقت درست مستقر و نگهداری نمی‌شه، ارزش کمی داره.
  • تست و خودکارسازی. نوشتن تست و آشنایی با ابزارهای یکپارچه‌سازی و استقرار خودکار.
  • ارتباط با آدم‌های غیرفنی. این یکی رو خیلی دست‌کم می‌گیرن. توسعه‌دهنده باید بتونه به مدیر محصول، بازاریاب یا مشتری توضیح بده که چرا یه کار سه روز طول می‌کشه و چرا اون راه‌حل «ساده»ای که پیشنهاد دادن، ساده نیست.

راستش ما بارها کسانی رو به‌عنوان توسعه‌دهنده استخدام کردیم و بعد فهمیدیم با Git راحت نیستن یا هیچ‌وقت در یه تیم چندنفره کار نکردن. این هم برای کارفرما هزینه داره و هم برای خود اون فرد استرس می‌سازه؛ چون در موقعیتی قرار گرفته که ابزارهاش رو نداره.

جدول مقایسه

ویژگیکدنویسبرنامه‌نویستوسعه‌دهنده
تمرکزیک پلتفرم یا فریم‌ورک مشخصزبان و مفاهیم پایه علوم کامپیوترکل چرخه ساخت و نگهداری نرم‌افزار
نقطه شروع کارراه‌حل موجودخود مسئلهنیاز کسب‌وکار
ساخت ابزار از صفرخیر، ابزار را سفارشی می‌کندبلهبله، و معماری‌اش را طراحی می‌کند
کار با Gitمعمولاً در حد پایهبلد استمسلط، جریان کاری تیمی طراحی می‌کند
کار تیمی و بازبینی کدمحدودمتغیربخش اصلی کار
نمونه خروجیقالب و افزونه وردپرسیک فریم‌ورک یا CMS اختصاصیپروژه بزرگ تیمی با نگهداری بلندمدت

یه بار دیگه تأکید می‌کنم: این جدول یه مدل ذهنیه برای فهم مسیر رشد، نه یه استاندارد رسمی که بشه باهاش آدم‌ها رو دسته‌بندی کرد.

من کجای این طیف هستم؟

به‌جای برچسب زدن به خودتون، این سؤال‌ها رو صادقانه جواب بدید:

  • اگه فریم‌ورک یا سیستمی که باهاش کار می‌کنید فردا منسوخ بشه، چقدر طول می‌کشه تا با ابزار دیگه‌ای به همون سطح برسید؟
  • وقتی کدی می‌نویسید که کار می‌کنه، می‌تونید توضیح بدید چرا کار می‌کنه؟
  • آخرین باری که با یه خطای کاملاً ناآشنا مواجه شدید، چطور حلش کردید؟ با جستجو و آزمون و خطا، یا با تحلیل؟
  • می‌تونید کد شش ماه پیش خودتون رو بخونید و بفهمید؟ (این تست خیلی خوبیه برای سنجش کیفیت کدنویسی)
  • تا حالا در پروژه‌ای کار کردید که چند نفر هم‌زمان روی یه کدبیس کار می‌کردن؟

جواب‌ها بهتون می‌گن کجا ایستادید. و باز هم تأکید: هیچ‌کدوم از این جایگاه‌ها بد نیست؛ فقط باید بدونید کجایید تا بدونید قدم بعدی چیه.

یک تغییر مهم: عصر ابزارهای هوش مصنوعی

امروز ابزارهای هوش مصنوعی می‌تونن در چند ثانیه کدی بنویسن که قبلاً نوشتنش ساعت‌ها طول می‌کشید. نتیجه‌ی مستقیمش اینه که ارزش صرفِ «تولید کد» کم شده. اما چیزی که ارزشش بیشتر شده، دقیقاً همون مهارت‌هاییه که در این مقاله زیر عنوان برنامه‌نویسی و توسعه‌دهندگی توضیح دادیم:

  • تشخیص اینکه کد تولیدشده درست است یا نه. ابزار هوش مصنوعی با اطمینان کامل کد اشتباه هم تولید می‌کنه. کسی که مفاهیم پایه رو نمی‌دونه، نمی‌تونه تشخیص بده.
  • معماری و تصمیم‌گیری. اینکه چه چیزی باید ساخته بشه و چطور اجزا کنار هم بشینن، همچنان کار انسانه.
  • عیب‌یابی. وقتی سیستمی که کدش رو کامل نمی‌فهمید خراب می‌شه، تعمیرش به‌مراتب سخت‌تر از نوشتنشه.
  • امنیت و کیفیت. کدی که کار می‌کنه لزوماً کد امن یا قابل نگهداری نیست.

پس اگه یه نتیجه از این بخش بگیرید، این باشه: سرمایه‌گذاری روی فهم عمیق، امروز از هر زمان دیگه‌ای ارزشمندتر شده، نه کم‌ارزش‌تر. ابزارها سرعت اجرا رو بالا بردن، اما مسئولیت درستی و کیفیت هنوز با شماست.

نقشه‌ی راه رشد

مرحله‌ی اول: در حوزه‌ی خودتان واقعاً مسلط شوید

قبل از اینکه به فکر مهاجرت باشید، در همون چیزی که کار می‌کنید عالی بشید. اگه وردپرس کار می‌کنید، مستندات رسمی رو جدی بخونید، با استانداردهای کدنویسی وردپرس آشنا بشید، هوک‌ها و فیلترها رو عمیق یاد بگیرید و ببینید هسته چطور کار می‌کنه.

یه تمرین خیلی خوب: کد هسته‌ی وردپرس یا یه افزونه‌ی معتبر رو بخونید. نه برای استفاده، برای فهمیدن اینکه چرا این‌طوری نوشته شده. این کار بیشتر از ده دوره‌ی آموزشی به شما یاد می‌ده.

مرحله‌ی دوم: مبانی را بسازید

اینجا جاییه که از کدنویسی به برنامه‌نویسی حرکت می‌کنید. ساختمان داده و الگوریتم‌های پایه رو یاد بگیرید. شی‌گرایی رو نه در حد تعریف، بلکه در حد استفاده‌ی درست بفهمید. با الگوهای طراحی آشنا بشید. و مهم‌تر از همه، یه پروژه‌ی کامل و مستقل بدون هیچ فریم‌ورکی بسازید؛ حتی یه چیز ساده مثل یه سیستم مدیریت یادداشت با احراز هویت و دیتابیس. همین یه پروژه بیشتر از هر کتابی بهتون نشون می‌ده چه چیزی رو نمی‌دونید.

مرحله‌ی سوم: مهارت‌های تیمی را اضافه کنید

Git رو فراتر از دستورات پایه یاد بگیرید. یه حساب عمومی بسازید و پروژه‌هاتون رو اونجا بذارید. در یه پروژه‌ی متن‌باز مشارکت کنید؛ حتی یه اصلاح کوچیک در مستندات، شما رو با فرآیند بازبینی کد و کار تیمی آشنا می‌کنه. تست نوشتن رو یاد بگیرید. و روی مهارت توضیح دادن کار فنی به آدم‌های غیرفنی تمرین کنید، چون در عمل یکی از تعیین‌کننده‌ترین مهارت‌هاست.

یک بخش برای کارفرماها

اگه شما طرف استخدام‌کننده هستید، این بحث یه کاربرد عملی مستقیم داره.

  • در آگهی شغلی، عنوان مهم نیست؛ توصیف کار مهمه. به‌جای «برنامه‌نویس وردپرس نیازمندیم»، بنویسید دقیقاً چه کاری قراره انجام بشه: «توسعه و نگهداری افزونه‌های اختصاصی وردپرس، کار با Git در تیم سه نفره، بازبینی کد».
  • در مصاحبه، کد واقعی ببینید. یه پروژه‌ی آزمایشی کوچیک و پولی بهترین سنجه‌ست. و مهم‌تر از خود کد، ازشون بخواید توضیح بدن چرا این‌طوری نوشتن.
  • سطح مورد نیازتون رو واقع‌بینانه تعیین کنید. خیلی از تیم‌ها دنبال «برنامه‌نویس ارشد» می‌گردن در حالی که کاری که دارن، کدنویسی روی یه پلتفرم مشخصه. این هم هزینه‌ی اضافه می‌سازه و هم فرد استخدام‌شده رو بی‌انگیزه می‌کنه.

سوالات متداول

کدنویس بودن بد است؟

نه. یه نقش تخصصی با بازار کار واقعیه. مشکل وقتی پیش میاد که کسی خودش رو در سطحی معرفی کنه که نیست؛ چون بعداً هم برای خودش استرس می‌سازه و هم اعتمادش رو از دست می‌ده.

حتماً باید مدرک دانشگاهی داشته باشم؟

نه. خیلی از حرفه‌ای‌های این حوزه خودآموزن. چیزی که مدرک دانشگاهی معمولاً می‌ده، همون مبانی علوم کامپیوتره؛ و این مبانی رو می‌شه بدون دانشگاه هم یاد گرفت، فقط باید عمداً و منظم دنبالش برید.

از کجا بفهمم برنامه‌نویس شده‌ام؟

یه نشونه‌ی خوب اینه که بتونید یه مسئله رو بدون جستجوی «راه‌حل آماده» تحلیل کنید و بفهمید کجای سیستم باید تغییر کنه. نشونه‌ی دیگه اینکه یادگیری یه زبان یا فریم‌ورک جدید براتون تبدیل به کار سختی نباشه.

با وجود ابزارهای هوش مصنوعی، هنوز ارزش دارد برنامه‌نویسی یاد بگیرم؟

بله و شاید بیشتر از قبل. این ابزارها سرعت تولید کد رو بالا بردن، اما تشخیص درستی کد، طراحی معماری و عیب‌یابی همچنان به فهم عمیق نیاز داره. کسی که فقط خروجی ابزار رو کپی می‌کنه، در اولین مشکل جدی متوقف می‌شه.

چقدر طول می‌کشد از کدنویسی به برنامه‌نویسی برسم؟

به شدت به میزان زمانی که می‌ذارید بستگی داره، اما این یه مسیر ماه‌هاست نه هفته‌ها. نکته‌ی مهم اینه که صرفاً ادامه دادن کار روزمره شما رو جلو نمی‌بره؛ باید عمداً روی مفاهیم پایه وقت بذارید.

تیم من باید فقط از برنامه‌نویس‌ها تشکیل بشود؟

نه و این اشتباه رایجیه. یه تیم متعادل به هر سه سطح نیاز داره: کدنویس مسلط برای پیاده‌سازی سریع، برنامه‌نویس برای طراحی و معماری، و توسعه‌دهنده برای هدایت و نگهداری. تیمی که همه‌ی اعضاش ارشدن، هم گران‌تره و هم لزوماً کارآمدتر نیست.

جمع‌بندی

واژه‌ها مهمن اما نه به اندازه‌ای که این بحث‌ها نشون می‌دن. در صنعت، این عنوان‌ها مرز دقیقی ندارن و اغلب به‌جای هم استفاده می‌شن.

چیزی که واقعاً اهمیت داره، عمق درکه. اینکه بدونید چرا کدی که نوشتید کار می‌کنه، بتونید مسئله‌ی ناآشنا رو تحلیل کنید، و کدتون رو کسی جز خودتون هم بتونه بخونه و ادامه بده.

و صادق بودن با خودتون درباره‌ی جایگاه فعلی‌تون، دشمن پیشرفت نیست؛ شرط اولشه. کسی که می‌دونه «الان کدنویس وردپرسم و می‌خوام برنامه‌نویس بشم»، دقیقاً می‌دونه دنبال چه منابعی بگرده. کسی که فقط برچسب بزرگ‌تری به خودش زده، سال‌ها در همون نقطه می‌مونه. همه‌ی حرفه‌ای‌ها یه روز مبتدی بودن. مهم اینه که بدونید کجایید، کجا می‌خواید برید، و هر هفته یه قدم بردارید. موفق باشید. 🙂

نظر شما در این مورد چیه؟

  1. U311490۱۳ آبان ۱۴۰۲

    سلام استاد خسته نباشید.
    ی راهنمایی ازتون می‌خوام
    من طراحی سایت بدون کدنویسی رو با آموزش های خوبتون یاد گرفتم اما خیلی دوست دارم برنامه نویسی رو کامل یاد بگیرم کدنویسی ، طراحی قالب و هر چیزی که به برنامه نویسی مربوط میشه .
    اما امکان شرکت در کلاس های حضوری و ادامه تحصیل رو ندارم. آیا شما آموزش در این مورد دارید یا اینکه سایت معتبری که آموزش خوبی مث خودتون داشته باشه میشناسید راهنمایی کنید تا آموزش هاشون رو بگیرم.
    مطمئنا راهنمایی شما خیلی در تصمیم من تاثیر گذاره. ممنونم ازتون🙏🙏

    • رضا راد۱۴ آبان ۱۴۰۲

      سلام وقت بخیر. برای برنامه نویسی سایت های زیادی هستن. سون لرن به نظرم تو ایران یکی از بهترین مراجع هست برای یادگیری برنامه نویسی. اصولی کار میکنن.

پشتیبانپشتیبانپشتیبانپشتیبانپشتیبان
تیم میهن وردپرس
پشتیبانپشتیبانپشتیبانپشتیبانپشتیبان
تیم میهن وردپرسخارج از ساعات کاری هستیم؛ دستیار هوش مصنوعی پاسخگوی شماست.هوش مصنوعی

در حال بارگذاری...

هر سوالی دارید بپرسید.پاسخگوی شما هستیم.