تفاوت برنامه نویس حرفه ای و آماتور

مطلب خلاصه ای در لینکدین خواندم که یه مرور سریع از تفاوت های برنامه نویس حرفه ای و آماتور بود. به نظرم رسید که میشه در موردش بیشتر حرف زد. سعی کردم تو این مقاله بیشتر در موردشون صحبت کنم.


  1. اسلاید اول

برنامه نویس آماتور: چه کدی بنویسم که فقط کار کنه؟

برنامه نویس حرفه ای: چطوری پیاده سازی رو تمیزتر، خواناتر و کم حجم تر کنم؟

نقل قول معروفی از مارتین فاولر هست که میگه:

Any fool can write code that a computer can understand. Good programmers write code that humans can understand.

یعنی هر کسی میتونه برنامه ای بنویسه که کامپیوتر درک کنه. برنامه نویس خوب کدی مینویسه که آدم ها درک کنن. سه ویژگی هست که به درک بهتر کد توسط آدم ها کمک میکنه:

  1. تمیز بودن
  2. خوانا بودن
  3. کم حجم بودن

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

خروجی عادت های زیر میتونه ما رو حرفه ای تر کنه:

  • مطالعه و تمرین اصول پایه برنامه نویسی مثل اصول SOLID یا Refactoring
  • آشنایی با امکانات فریم ورک ها و کتابخانه ها
  • خواندن دست خط و کدهای دیگران
  • تمرین حل مسئله


۲. اسلاید دوم

برنامه نویس آماتور: این امکان رو چطوری حفظ کنم؟

برنامه نویس حرفه ای: چطور میکنم درکش کنم و بفهممش؟

در واقع اصل مطلب انتخاب بین دو گزینه است:

  • خواندن سریع و فراموشی مطلب به سرعت
  • تمرین و تمرین و تمرین در به مرور ته نشین شدن مطلب

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


۳. اسلاید سوم

برنامه نویس آماتور: کار رو در سریع ترین زمان ممکن انجام میدم.

برنامه نویس حرفه ای: برنامه ریزی میکنم که کار رو بفهمم و یاد بگیرمش.

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


۴. اسلاید چهارم

برنامه نویس آماتور: من میخوام از همه چیز در آن واحد سر در بیارم

برنامه نویس حرفه ای: روی یک تکنولوژی تمرکز میکنم و خوب و عمیق یادش میگیرم

یک مدیر پروژه داشتم که همیشه این مطلب رو به من تذکر میداد و من میدونستم درست میگه ولی نمی فهمیدم چرا. تا اینکه بعد از گذشت دو سه سال حرفش رو درک کردم.

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


نظر شما چیه؟ فرق برنامه نویس حرفه ای و آماتور چیه؟ چه ویژگی های خوبی رو در خودتون یا برنامه نویس های حرفه ای دیگه سراغ دارید؟ اگه دوست دارید به اشتراک بگذارید، حتما کامنت بگذارید. ممنونم :)