پدرام بهروزی

چرا باید بنویسیم؟

programming-in-a-poetic-way

تا به حال چند کلمه کد نوشته‌اید؟ می‌توانید حساب کنید؟ اگر توانستید، با تعداد کلمه‌های بلندترین رمان نوشته شده به دست بشر(۱) مقایسه‌اش کنید: نه میلیون و ششصد هزار کلمه با احتساب فاصله‌ها. خب بله. خیلی زیاد است. اما واقعاً خیلی زیاد نیست. اگر همین الان کدنویسی را شروع کنید تا چند سال دیگر از این عدد خیلی جلو می‌زنید. پس شاید بشود با کمی تواضع خودمان را پرکارترین نویسندگان تاریخ بدانیم (البته شاید هیچوقت به آسیموف نرسیم).

اما روی دیگر سکه را هم نگاه کنید. تا به حال چند هزار خط کد نوشته‌اید و بعد محصول نهایی‌تان را باد هوا با خودش برده است؟ چند هزار خط کد را نصفه و نیمه رها کرده‌اید؟ روی دیگر سکه این است: آیا تمام مهارت کدنویسی شما، تمام آن چند میلیون خط کدی که می‌نویسید، بدون وجود محصول نهایی و (مهمتر از آن) بدون اینکه کسی آن را ببیند به درد می‌خورد؟

جواب البته که منفی است.

جوئل اسپالسکی (با نقل به مضمون) گفته بود:

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

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

این تنها راه است. اگر می‌خواهید برنامه‌نویس (یا بگذارید بگویم توسعه‌دهنده‌ی) خوبی شوید، اگر می‌خواهید کاری که می‌کنید، محصولی که تولید می‌کنید، خوب و قابل استفاده باشد، باید بتوانید بنویسید. وبلاگ بسازید، تست بنویسید، کامنت بگذارید، Lesson learned ها را در بیاورید و نوشته‌های برنامه‌نویسان مرشدتان را دنبال کنید (حتی لازم نیست کد آنها را بخوانید، همان وبلاگ‌شان شگفت‌زده‌تان می‌کند) و در آخر یادتان باشد که جف آتوود فقید نوشته بود:

بیشتر وقت‌تان را به حرف زدن با آدم‌ها بگذرانید، تا حرف زدن با کامپایلر.

  1. در جستجوی زمان از دست‌رفته – مارسل پروست
پدرام بهروزی

از سال ۸۵ برنامه‌نویسی را با نوشتن یک بازی ساده با ++C شروع کرد. به زبان PHP مسلط است و با سیستم‌های مدیریت محتوای زیادی مثل دروپال، وردپرس، بیتریکس و مجنتو آشنایی دارد. درحال حاضر در سارینا با Magento، Laravel و Ruby on Rails کار می‌کند. عاشق سرک کشیدن در تکنولوژی‌های جدید، خواندن کتاب و موسیقی راک است.

  1. یکشنبه، ۴ آبان ۱۳۹۳ شاهین
    ممنون.
    جف آتوود فقید نیست! صحیح و سالم هست ☺
    • پدرام بهروزی
      دوشنبه، ۵ آبان ۱۳۹۳ پدرام بهروزی
      دیگه اینقدر آقامونه که فقید محسوب میشه از نظر ما D:
      (ولی راست میگی. کلمه مناسبی نیست)
  2. یکشنبه، ۴ آبان ۱۳۹۳ افشار محبی
    خیلی خوب اهمیت نوشتن را نشان دادید. این موضوع فقط در مورد کد نویسی نیست که اهمیت دارد. در مورد رزومه افراد و رزومه شرکت ها نیز اهمیت دارد. چه بسا برنامه نویسان خوبی که به علت بد نوشتن رزومه در جایی کمتر از لیاقتشان. مشغول به کار هستند
  3. دوشنبه، ۵ آبان ۱۳۹۳ root3er
    فقط نمیدونم چرا پایتون و جاوا رو مثال زده (یعنی هدفش از این کار چی بوده )
    باید ببریمش باز جویی :D
  4. دوشنبه، ۵ آبان ۱۳۹۳ مجتبي اصلاحي
    برنامه‌نویس (یا بگذارید بگویم توسعه‌دهنده‌)
    همين عبارت گوياي مطالب جالبي است براي من. اين فقط يك جايگزيني لغت نيست. اين است كه جايگاه خودت را بداني تا حدود خوبي، كه داري چه كاري را انجام مي دهي. برنامه نويس يا توسعه دهنده، يك تنهاي بي همتا يا يكي از ميليون ها، نخبه اي يا يكي مثل بقيه عضوي از يك تيم، كدهايي كه مي زني فقط براي همين الان است، براي هميشه است، يا براي يك بازه زماني مشخص كه كاري را انجام دهد.
  5. چهارشنبه، ۷ آبان ۱۳۹۳ حمزه
    ممنون البته برای داشتن یک نرم افزار با ویژگیهای ایده ال (قابل اصلاح ، کارا ، قابل استفاده مجدد و...)فقط نوشتن کد مناسب اکتفا نمیکنه و آنچه که شما میفرمایید فقط منجر به ایجاد یک برنامه با قابلیت خوانایی بالا میشه.
    • پدرام بهروزی
      چهارشنبه، ۷ آبان ۱۳۹۳ پدرام بهروزی
      خب البته من هم همین رو گفتم اما عقیده دارم که کد با قابلیت خوانایی بالا به ناچار به یک نرم‌افزار ایده‌آل تبدیل میشه. البته می‌تونیم راجع به فاکتورهای دیگه مثل ایده‌ی اولیه هم حرف بزنیم. اما کدی رو که بشه خوند (هم خود کد رو و هم نوشته‌های دیگه راجع به کد، مثل کامنت و مستندات و غیره) میشه به راحتی توسعه داد.
  6. شنبه، ۱ آذر ۱۳۹۳ محمد جواد پاپی
    درود جناب بهروزی.
    یه سوال داشتم. میخواستم بدونم تصاویر پست های این وبلاگ رو چه کسی طراحی میکنه.
    ممنون
  7. بازتاب: مهم نیست یک برنامه‌نویس چه زبان‌هایی می‌داند | RTwo