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

تا به حال چند کلمه کد نوشتهاید؟ میتوانید حساب کنید؟ اگر توانستید، با تعداد کلمههای بلندترین رمان نوشته شده به دست بشر(۱) مقایسهاش کنید: نه میلیون و ششصد هزار کلمه با احتساب فاصلهها. خب بله. خیلی زیاد است. اما واقعاً خیلی زیاد نیست. اگر همین الان کدنویسی را شروع کنید تا چند سال دیگر از این عدد خیلی جلو میزنید. پس شاید بشود با کمی تواضع خودمان را پرکارترین نویسندگان تاریخ بدانیم (البته شاید هیچوقت به آسیموف نرسیم).
اما روی دیگر سکه را هم نگاه کنید. تا به حال چند هزار خط کد نوشتهاید و بعد محصول نهاییتان را باد هوا با خودش برده است؟ چند هزار خط کد را نصفه و نیمه رها کردهاید؟ روی دیگر سکه این است: آیا تمام مهارت کدنویسی شما، تمام آن چند میلیون خط کدی که مینویسید، بدون وجود محصول نهایی و (مهمتر از آن) بدون اینکه کسی آن را ببیند به درد میخورد؟
جواب البته که منفی است.
جوئل اسپالسکی (با نقل به مضمون) گفته بود:
مهم نیست یک برنامهنویس چه زبانهایی میداند. مهم نیست پایتون را انتخاب کرده است یا جاوا. مهم این است که چقدر میتواند ایدههایش را در میان بگذارد. چقدر میتواند با کامنتها و نوشتن مشخصات فنی برنامهنویسان دیگر را از دردسر دوباره نوشتن همان کد رها کند و چطور میتواند به کاربران نهایی توضیح دهد کدی که نوشته است قرار است چه کاری انجام دهد. تعداد بسیار زیادی کد واقعاً به درد بخور و خیلی خوب در Sourceforge مشغول خاک خوردن هستند. زیرا برنامهنویسانشان بلد نبودهاند توضیح درستی برایش بنویسند یا اصلاً چیزی ننوشتهاند.
این مشکل اغلب ماست. اغلب بنبستها در پروژههای واقعاً نه چندان بزرگ از همین جا ناشی میشود. برنامهنویسها میروند و برنامهنویسهای جدید میآیند. اول، نمیفهمند که واقعاً چه اتفاقی در کد افتاده است، دوم، زمانشان محدود است و سوم، حال و حوصلهی کالبدشکافی دستخط کثیف یک نفر دیگر را ندارند. پس بخش اعظم کد را از اول مینویسند و یادشان میرود که نوشتن هرچیزی در رابطه با کد، بسیار مهمتر از نوشتن خود کد است. پس این چرخه تکرار میشود و چند وقت بعد همه یادشان رفته که کدی هم وجود داشته است.
این تنها راه است. اگر میخواهید برنامهنویس (یا بگذارید بگویم توسعهدهندهی) خوبی شوید، اگر میخواهید کاری که میکنید، محصولی که تولید میکنید، خوب و قابل استفاده باشد، باید بتوانید بنویسید. وبلاگ بسازید، تست بنویسید، کامنت بگذارید، Lesson learned ها را در بیاورید و نوشتههای برنامهنویسان مرشدتان را دنبال کنید (حتی لازم نیست کد آنها را بخوانید، همان وبلاگشان شگفتزدهتان میکند) و در آخر یادتان باشد که جف آتوود فقید نوشته بود:
بیشتر وقتتان را به حرف زدن با آدمها بگذرانید، تا حرف زدن با کامپایلر. (در جستجوی زمان از دسترفته – مارسل پروست)
ممنون.
جف آتوود فقید نیست! صحیح و سالم هست ☺
دیگه اینقدر آقامونه که فقید محسوب میشه از نظر ما D:
(ولی راست میگی. کلمه مناسبی نیست)
خیلی خوب اهمیت نوشتن را نشان دادید. این موضوع فقط در مورد کد نویسی نیست که اهمیت دارد. در مورد رزومه افراد و رزومه شرکت ها نیز اهمیت دارد. چه بسا برنامه نویسان خوبی که به علت بد نوشتن رزومه در جایی کمتر از لیاقتشان. مشغول به کار هستند
دقیقن
فقط نمیدونم چرا پایتون و جاوا رو مثال زده (یعنی هدفش از این کار چی بوده )
باید ببریمش باز جویی :D
جوئل اسپالسکی رو زیر سوال بردن کار درستی نیست البته D:
برنامهنویس (یا بگذارید بگویم توسعهدهنده)
همین عبارت گویای مطالب جالبی است برای من. این فقط یک جایگزینی لغت نیست. این است که جایگاه خودت را بدانی تا حدود خوبی، که داری چه کاری را انجام می دهی. برنامه نویس یا توسعه دهنده، یک تنهای بی همتا یا یکی از میلیون ها، نخبه ای یا یکی مثل بقیه عضوی از یک تیم، کدهایی که می زنی فقط برای همین الان است، برای همیشه است، یا برای یک بازه زمانی مشخص که کاری را انجام دهد.
بسیار موافقم
ممنون البته برای داشتن یک نرم افزار با ویژگیهای ایده ال (قابل اصلاح ، کارا ، قابل استفاده مجدد و…)فقط نوشتن کد مناسب اکتفا نمیکنه و آنچه که شما میفرمایید فقط منجر به ایجاد یک برنامه با قابلیت خوانایی بالا میشه.
خب البته من هم همین رو گفتم اما عقیده دارم که کد با قابلیت خوانایی بالا به ناچار به یک نرمافزار ایدهآل تبدیل میشه. البته میتونیم راجع به فاکتورهای دیگه مثل ایدهی اولیه هم حرف بزنیم. اما کدی رو که بشه خوند (هم خود کد رو و هم نوشتههای دیگه راجع به کد، مثل کامنت و مستندات و غیره) میشه به راحتی توسعه داد.
درود جناب بهروزی.
یه سوال داشتم. میخواستم بدونم تصاویر پست های این وبلاگ رو چه کسی طراحی میکنه.
ممنون
سلام. همه رو فرزان بالکانی عزیز طراحی میکنه.