تبلیغات
تبلیغات متنی
محبوبترینها
معرفی و فروش بوته گرافیتی ریخته گری
بهترین بروکر برای معاملات فارکس در سال 2024
تجربه رانندگی با لندکروز در جزیره قشم؛ لوکسترین انتخاب
اکسپرتاپ: 10 شغل پردرآمد برای مهاجران کاری در کانادا
بهترین سایتهای خرید تیک آبی رسمی اینستاگرام در ایران
کدام رنگ کاغذ دیواری مناسب فضای شماست؟
چه چیزهایی دیگر در دکوراسیون مد نیست؟!
بررسی قیمت تیرچه + قیمت تیرچه کرومیت + قیمت یونولیت
خرید و قیمت ورق در مشاوران آهن + [مشاوره رایگان]
تیوی وال: ایدهای نوین برای دکوراسیون داخلی
صفحه اول
آرشیو مطالب
ورود/عضویت
هواشناسی
قیمت طلا سکه و ارز
قیمت خودرو
مطالب در سایت شما
تبادل لینک
ارتباط با ما
مطالب سایت سرگرمی سبک زندگی سینما و تلویزیون فرهنگ و هنر پزشکی و سلامت اجتماع و خانواده تصویری دین و اندیشه ورزش اقتصادی سیاسی حوادث علم و فناوری سایتهای دانلود گوناگون
مطالب سایت سرگرمی سبک زندگی سینما و تلویزیون فرهنگ و هنر پزشکی و سلامت اجتماع و خانواده تصویری دین و اندیشه ورزش اقتصادی سیاسی حوادث علم و فناوری سایتهای دانلود گوناگون
آمار وبسایت
تعداد کل بازدیدها :
1812804586
![archive](https://vazeh.com/images/2archive.jpg)
![نمایش مجدد: ۱۲ راه برای کدنویسی بهت refresh](https://vazeh.com/images/refresh.gif)
۱۲ راه برای کدنویسی بهت
واضح آرشیو وب فارسی:سایت ریسک: C.I.A8th August 2007, 04:18 AMجوئل اسپولسکی بنیانگذار Fog Creek Software (کاربران ثبت نام کرده قادر به مشاهده لینک می باشند) است که یک شرکت کوچک نرم افزاری در شهر نیویورک است.او فارغ التحصیل دانشگاه یل(Yale University) است وبه عنوان برنامه نویس و مدیر در مایکروسافت ،Viacom و Juno کارکرده است. جوئل مقاله جالبی در باب کد نویسی دارد ه با عنوان ۱۲ راه برای کد بهتر (کاربران ثبت نام کرده قادر به مشاهده لینک می باشند): تست جوئل -- The Joel Test : 12 راه برای کد بهتر توسط جوئل اسپولسکی آیا تا بحال نام SEMA (کاربران ثبت نام کرده قادر به مشاهده لینک می باشند) (Software Engineering Measurement and Analysis) را شنیده اید؟ SEMA ، سیستم نسبتاً مبهمی است برای اندازه گیری شايستگی یک تیم نرم*افزاری. نه! صبر كنيد، به سایت آن نروید، زیرا فقط شش سال طول می*کشد تا مطالب آن را بفهمید. به همین علت من تست کاملاً نامرتب و نامعتبر (!) خودم را برای ارزیابی كيفيت یک تیم نرم*افزاری درست كردم. بهترین قسمت ماجرا اینجاست كه فقط سه دقیقه از وقتتان را می*گيرد. با وقتی كه صرفه جویی می*كنید، می*توانید به سراغ حرفه پزشكي بروید[1] (کاربران ثبت نام کرده قادر به مشاهده لینک می باشند_ftn1)! ۱. آیا از سیستم كنترل سورس بهره می*برید؟ ۲. آیا می*توانید در یك مرحله، برنامه*تان را build كنید؟ ۳. آیا دارای build روزانه هستید؟ ۴. آیا بانك اطلاعاتی از اشكالات ((bugs دارید؟ ۵. آیا قبل از نوشتن كد جدید، به رفع اشكالات کنونی می*پردازید؟ ۶. آیا برنامه زمان*بندیتان به روز است؟ ۷. آیا دارای لیست مشخصات هستید؟ ۸. آیا برنامه*نویسان شما محیط آرامی برای كار كردن دارند؟ ۹. آیا بهترین ابزارهایی را که وجود دارد می*خرید؟ ۱۰. آیا بخش تست شما جداست؟ ۱۱. آیا داوطلبان جدید در موقع مصاحبه، کد هم می*نویسند؟ ۱۲. آیا از آزمایش « قابلیت استفاده راهرویی » سود می*جویید؟ ویژگی شسته و رفته تست جوئل در این است كه به راحتی می*توان به هر سؤال جواب بله یا نه داد. شما مجبور نیستید كه تعداد خطهای كد در روز یا تعداد متوسط اشكال در هر قسمت را بشمارید. نقطه ضعف تست جوئل در این است كه نباید از آن برای اطمینان از صحت نرم*افزار نیروگاه اتمی خود استفاده كنید! امتیاز 12 عالی، 11 قابل قبول و 10 یا پایینتر نشان دهنده مشكلات جدی است. واقعیت در این است كه بیشتر موسسات نرم*افزاری با امتیاز 2 یا 3 در حال فعالیت هستند و به كمك جدی نیاز دارند، چرا كه شركتهایی مانند Microsoft تمام مدت با امتیاز 12 اداره می شوند. البته، اینها تنها موارد مشخص كننده موفقیت یا شكست نیستند: مثلاً ، اگر شما تیم ماهری دارید كه بر روی محصولی كه هیچ كس آن را نمی خواهد كار می*كند، خوب، مردم باز هم آن محصول را نخواهند خواست. از طرفی، تیم غیر عادی را می*توان تصور كرد كه بدون انجام هیچ كدام از این كارها، نرم*افزار فوق*العاده ای تولید كند و دنیا را تغییر دهد. اما اگر همه شرایط برابر باشند، با رعایت این ۱۲ نكته، تیم منضبطی خواهید داشت كه همیشه موفق به تحویل پروژه*هایش می*شود. ۱. آیا از سیستم كنترل سورس بهره می*برید؟ من هم از پكیجهای تجاری كنترل سورس استفاده كردم، و هم از CVSكه مجانی است ؛ و بگذارید به شما بگویم كه CVS مناسب است. اما اگر سورس كنترل ندارید، فشار زیادی را برای اینكه برنامه*نویسانتان بتوانند با هم كار كنند متحمل می*شوید: برنامه*نویسها راهی برای اینكه بدانند بقیه چه كرده اند، ندارند. و اشتباهات، به راحتی قابل بازگشت نیستند. و در آخر اینكه چون كد برنامه بر روی دستگاه تمام برنامه*نویسان check out می*شود، تا بحال نشنیده*ام كه پروژه*های دارای سورس كنترل ، كد زیادی را به اشتباه از دست دهند. ۲. آیا می*توانید در یك مرحله، برنامه*تان را build كنید؟ منظورم این است: برای ایجاد نسخه قابل تحویل به مشتری از آخرین سورس، چند مرحله وجود دارد؟ در تیمهای خوب، یك اسکریپت وجود دارد كه با اجرای آن، یك check outكامل صورت می*گیرد، تمام كد كامپایل می*شود، EXE ها ساخته می*شوند (در تمامی نسخه*ها، زبانها و #ifdef ها) ، پكیج قابل نصب تولید می*شود و بالاخره در فرم رسانه نهایی (CD یا وب*سایت یا ...) ایجاد می*شود. اگر این رویه بیشتر از یك مرحله داشته باشد، مستعد اشتباه است. و هر چقدر به زمان تحویل نزدیكتر می*شوید، احتیاج به چرخه سریعتری برای تصحیح «آخرین» bug، و ساختن EXE نهایی دارید. اگر كامپايل كردن كد، اجرای سازنده installerو بقیه كارها بیست مرحله به طول انجامد، دست به اشتباهات احمقانه خواهید زد. فقط به همین علت، آخرین شركتی كه در آن كار می*كردم، از WISE به InstallShield تغییر كرد: لازم بود كه رویه ایجاد installer از روی یك script به صورت خودكار نیمه شبها توسط NT Scheduler اجرا شود و WISE چنین قابلیتی نداشت. (دوستان خوب ما در WISE به من اطمینان داده اند كه آخرین نسخه شان توانایی build های شبانه را دارد.) ۳. آیا دارای build روزانه هستید؟ وقتی كه از كنترل سورس استفاده می*كنید، گاهی پیش می*آید كه یك برنامه*نویس چیزی را check in می*كند كه باعث شكستن build می*شود. به عنوان مثال، یك برنامه*نویس یك فایل سورس جدید اضافه كرده است و همه چیز روی دستگاه خودش درست كامپایل می*شود، ولی یادشان می*رود كه فایل را به مخزن كد (repository) اضافه كند. دستگاه خودش را هم قفل كرده و بی توجه و خوشحال به خانه می*رود. حالا كسان دیگری نیز نمی تواند كار كنند. آنها هم به خانه می*روند، البته غمگین. شكستن بیلد آنقدر بد (و رایج) است كه درست كردن بیلد روزانه كمك می*كند كه چنین موضوعی ناشناخته نماند. در تیمهای بزرگ، یك راه این كه مطمئن شوید كه چنین مشكلاتی در اولین فرصت برطرف شوند، این است كه بیلد روزانه را هر روز، هنگام ناهار انجام دهید. همه تمامی check in هایی را كه می*توانند قبل از رفتن به ناهار انجام می*دهند. بیلد، زمانی كه همه برگشتند تمام شده است. اگر كه همه چیز درست است، كه فبحال! آخرین نسخه سورس توسط همه check out شده و كار ادامه پیدا می*كند. اما اگر كه عمل بیلد با موفقیت روبرو نشده باشد، افراد با نسخه سالم قبلی به كار خود ادامه می*دهند. در تیم Excel، با قانونی داشتیم: *هر كسی كه build را می*شكست، به عنوان تنبیه، مسؤولیت نگهداری از بیلدها را عهده دار می*شد. این انگیزه خوبی بود هم برای جلوگیری از شكستن بیلد، و هم راه خوبی بود برای این كه همه (به صورت چرخشی)* یاد بگیرند كه رویه چطور است. می*توانید در مقاله دیگرم – Daily Builds are Your Friend (کاربران ثبت نام کرده قادر به مشاهده لینک می باشند) – در مورد build های روزانه بیشتر بخوانید. ۴. آیا بانك اطلاعاتی از اشكالات ((bugs دارید؟ برایم مهم نیست كه در این مورد چه فكر می*كنید. اما اگر حتی در یك تیم یك نفره مشغول تولید كد هستید و از بانك منظمی كه تمامی ایرادات برنامه را لیست *كند استفاده نمی*كنید، حتماً كد با كیفیت پایین تحویل خواهید داد. برنامه*نویسان زیادی فكر می*كنند كه می*توانند لیست اشكالات و باگها را در كله خود نگهدارند. چه مزخرفاتی! من در آن واحد بیشتر از دو یا سه باگ را نمی*توانم بخاطر بسپارم، و صبح روز بعد، یا با عجله*ای که زمان تحویل دارید، همه به فراموشی سپرده می*شوند. قطعاً باید به صورت رسمی و مکتوب لیست اشكالات را نگهداری كنید. بانك باگ می*تواند پیچیده و یا ساده باشد. یك بانك باگ سودمند باید حداقل اطلاعات زیر را در مورد هر باگ نگهدارد : §مراحل كامل برای باز توليد اشكال §رفتاری كه انتظار آن می*رود §رفتار (ایراد داری) كه واقعاً رخ می*دهد §فردی كه رفع اشكال به او واگذار شده است §آیا اشكال رفع شده است یا خیر اگر پیچیدگی نرم*افزار پی*گیری باگها مانع از آن می*شود كه چنین كاری را انجام دهید، یك جدول پنج ستونه (با فیلدهای ضروری فوق) بسازید و شروعبه انجام این كار كنید. برای اطلاعات بیشتر در مورد ردیابی باگها، مقاله Painless Bug Tracking (کاربران ثبت نام کرده قادر به مشاهده لینک می باشند) را بخوانید. ۵. آیا قبل از نوشتن كد جدید، به رفع اشكالات کنونی می*پردازید؟ اولین نسخه Word تحت ویندوز، پروژه « نوحه مرگ » محسوب می*شد که نوشتن آن به درازا *كشید، فرجه*ها دایماً به سر می*رسیدند؛ افراد تیم، ساعتهای مسخره آمیزی كار می*كردند، و پروژه باز ... و باز ... و باز به تاخیر می*افتاد. استرس باور نكردنی بود. وقتی بعد از چندین سال، بالاخره محصول لعنتی*اش بیرون آمد، مایكروسافت كل تیم Word را برای استراحت به جنوب مكزیك فرستاد ؛ و خودش به كنكاش روحانی جدی دست زد. مایکروسافت متوجه شد كه مدیران پروژه آنقدر بر حفظ « زمان بندی » (schedule) اصرار داشتند كه برنامه*نویسان مجبور به كد نویسی با عجله شده بودند، *و بسیار بد كد می نوشتند - به این علت كه فاز bug fix جز زمان*بندی رسمی نبود. تلاشی برای پایین نگهداشتن تعداد خطاها وجود نداشت. حتی برعكس، روایت شده كه یكی از برنامه*نویسان كه مسؤول نوشتن كد محاسبه ارتفاع خطوط متن بود، فقط نوشت: return 12; و بعد هم منتظر نشست تا در گزارش باگها بیاید كه تابع*اش ، همیشه درست كار نمی*كند. زمان*بندی پروژه صرفاً تبدیل شده بود به لیستی از باگهایی كه باید تولید می*شد! بعدها، از این اتفاق با عنوان « متدولوژی عیوب نامحدود » (infinite defects methodology) یاد شد. برای حل این معضل، مایكروسافت « متودولوژی كمترین عیوب*» (zero defects methodology) را به صورت فراگیری اتخاذ كرد. بسیاری از برنامه*نویسان داخل شركت خندیدند – چون به نظر می*رسید مدیریت به این نتیجه رسیده بود كه با یك حكم سازمانی تعداد باگها را كم كند. اما در واقع، معنی « كمترین عیوب*»* در این است كه در هر لحظه، بالاترین اولویت در رفع باگهاست، نه نوشتن كد جدید. اما چرا؟ به صورت كلی، هر چه برای تصحیح یك اشكال بیشتر معطل كنید، هزینه تصحیح آن (از لحاظ وقت و پول) بیشتر خواهد بود. به عنوان مثال، وقتی كه اشتباه تایپی انجام می*دهید و كامپایلر آن را catch می*كند، تصحیح آن كار اساساً ساده*ایست. به همین ترتیب، بار اولی كه كدتان را اجرا می*كنید و در آن اشكالی می*بینید، می*توانید بلافاصله آن را تصحیح كنید، چون همه كد در ذهنتان وجود دارد. اما اگر در كدی كه چند روز پیشتر آن را نوشته*اید، ایرادی بیابید، یافتن محل دقیق آن مدتی طول خواهد كشید، البته وقتی كه كدتان را باز خواني كنید همه چیز بالاخره یادتان می*آید و در یك زمان قابل قبول مشكل رفع می*شود. اما بالاخره اگر در كدی كه چند ماه پیش آن را نوشته*اید باگی پیدا شود، به احتمال زیاد چيزهای زیادی را در مورد آن كد به فراموشی سپرده*اید و تصحیح آن بسیار سخت*تر است. ممكن است مشغول تصحیح باگ كد كسی شده باشید كه در آن لحظه برای مرخصی به جزایر دریای كارایب رفته باشد. در این صورت، تصحیح باگ به صورت یك علم در می*آید :* باید با درایت، وسواس، نظم و بدون هیچ تصوری از مدت زمانی كه یافتن راه حل طول می*كشد، عمل كنید. اگر در كدی كه تحویل داده*اید ایرادی بیابید، متحمل هزینه باز هم زیادتر برای اصلاح آن خواهید شد. پس اولین دلیلی كه باید باگها را بلافاصله رفع كرد، كم کردن زمان لازم برای این كار است. دلیل دیگری هم وجود دارد: پیش*بینی مدت زمان لازم برای نوشتن كد جدید، راحتتر از پیش*بینی زمان لازم برای رفع یک باگ است. مثلاً اگر از شما بپرسم كه چقدر زمان برای نوشتن كدی برای مرتب*سازی یك فهرست لازم دارید، جواب نسبتاً دقیق می*توانید به من بدهید. اما اگر از شما بپرسم در جایی كه IE 5.5 نصب شده باشد و کدتان دیگر كار نمی*كند چقدر زمان لازم دارید تا باگ مربوطه را رفع كنید، بعید می*دانم كه حتی بتوانید حدسی بزنید! چرا كه (بنابر تعریف صورت مسأله) نمی*دانید كه منشأ مشكل كجاست. ممكن است سه روز وقتتان را بگیرد، ممكن هم هست كه فقط دو دقیقه. به بیان دیگر، اگر در برنامه زمان*بندیتان تعداد زیادی باگی كه باید رفع شوند، وجود داشته باشد، زمان*بندیتان غیر قابل اعتماد است. اما اگر تمامی ایرادهای شناخته شده را تصحیح كرده*اید و فقط كد جدید مانده، زمان*بندیتان به طرز حیرت آوری دقیقتر خواهد بود. نكته خوب دیگری هم كه صفر نگهداشتن تعداد باگها در هر زمان دارد، عکس*العمل سریعتر در برابر رقباست. بعضی برنامه*نویسان این قضیه را به « آماده تحویل بودن*» محصول در تمام لحظات، تعبیر می*كنند. اگر رقیب شما امكان مشتری*كُشی[2] (کاربران ثبت نام کرده قادر به مشاهده لینک می باشند_ftn2) عرضه كرد، شما هم می*توانید آن امكان را فوراً به برنامه*تان اضافه كنید و آن را تحویل دهید، بدون این كه مجبور به تصحیح تعداد زیادی ایراد انباشته شده باشید. ۶. آیا برنامه زمان*بندیتان به روز است؟ می*رسیم به بحث شیرین زمان*بندی. اگر كدتان برای شركتتان اهمیتی داشته باشد، پس حتماً به دلایل زیادی برای شركتتان زمان اتمامش هم مهم هست. برنامه*نویسان به صورت خیلی مفتضحی در زمینه زمان*بندی، ترشرو هستند :* سر قسمت بیزنس فریاد می*كشند « کار وقتی تمام می*شود كه تمام شده باشد ! *» متاسفانه، این اصلاً به درد نمی*خورد. برنامه*ریزیهای زیادی باید قبل از تحویل نهایی كد انجام گیرد : دمونستراسیون، نمایشگاه*ها، تبلیغات و غیره. و تنها راه انجام این كارها، داشتن برنامه*زمان بندی و به روز نگهداشتن آن است. فایده حیاتی دیگر داشتن برنامه* زمان*بندی در این است كه مجبورتان می*كند تصمیم بگیرید چه امكاناتی[3] (کاربران ثبت نام کرده قادر به مشاهده لینک می باشند_ftn3) را می*خواهید در برنامه بگنجانید و این که امكانات با اولیت پایینتر را حذف كنید، و گرفتار بیماری featuritis (کاربران ثبت نام کرده قادر به مشاهده لینک می باشند) نشوید. (featuritis / scope creep / creeping featurism، و یا گرایش به ویژگیهای نو، بیماری طراحان است ؛ طراحان مبتلا به این بیماری دوست دارند که به سیستم پیچیده*ای بدون برنامه*ریزی كافی امكانات و ویژگیهای نو اضافه کنند؛ و در واقع آن را - به صورت غیر اصولی - فقط پیچیده*تر كنند!) نگهداشتن schedule* (برنامه زمان*بندی)، الزاماً سخت نیست. مقاله دیگرم، Painless Software Schedules (کاربران ثبت نام کرده قادر به مشاهده لینک می باشند) - كه راه ساده*ای برای این كار یاد می*دهد - را بخوانید. ۷. آیا دارای لیست مشخصات هستید؟ نوشتن لیست مشخصات (specifications) درست مثل استفاده از نخ دندان است:* همه قبول دارند كه كار خوبی است ولی هیچ كس حوصله*اش را ندارد. دقیقاً مطمئن نیستم كه چرا ؛ احتمالاً به این علت است كه برنامه*نویسان از نوشتن مستندات متنفرند. در نتیجه، تیمهایی كه همه اعضایش برنامه*نویس هستند وقتی سراغ مسأله*ای می*روند، ترجیح می*دهند كه راه*حلشان به زبان كد باشد تا به صورت سند. ترجیح می*دهند كه از اول شیرجه بزنند و كد بنویسند تا این كه ابتدا یك لیست مشخصات درست كنند. در مرحله طراحی، اگر به معضلی بر بخورید، به سادگی با تغییر چند خط می*توانید آن را حل كنید. اما زمانی كه كد نوشته شده است، هزینه درست كردن معضلات بسیار گزاف است :* هم از لحاظ عاطفی (چون مردم از دور انداختن كد خود متنفرند)، و هم از لحاظ زمانی، و به همین علت نوعی مقاومت در مقابل درست كردن معضل بوجود مي*آید. نرم*افزاری كه از روی لیست مشخصات (specifications) تولید نشود معمولاً نتیجه*اش طراحی بد و زمان*بندی خارج از كنترل است. به نظر می*رسد كه مشكل Netscape نیز همین بوده - چهار نسخه اول آن قدر شلم شوربا شد كه مدیریت به طرز احمقانه*ای تصمیم گرفت (کاربران ثبت نام کرده قادر به مشاهده لینک می باشند) همه كد آن را دور بياندازد و از صفر شروع كند. سر Mozilla هم دوباره همین اشتباه را مرتكب شدند، كه محصول آن هیولایی خارج از كنترل است كه چند سال طول كشیده تا فقط به مرحله آلفا برسد. تئوری مورد علاقه من این است كه اگر برنامه*نویسان را به یك دوره متمركز نویسندگی (کاربران ثبت نام کرده قادر به مشاهده لینک می باشند) بفرستید، یاد خواهند گرفت که نویسندگان با ذوقی شوند. راه حل دیگر، استخدام مدیر برنامه (program manager) زبردستی است كه خود نوشته*ها را تهیه كند. در هر دو حالت، *باید قانون « هیچ كدی بدون مشخصات پذيرفته نیست » را به اجرا بگذارید. در نوشته چهار قسمتی (کاربران ثبت نام کرده قادر به مشاهده لینک می باشند) من، هر چه كه در مورد نوشتن مشخصات لازم دارید را می*توانید بخوانید. ۸. آیا برنامه*نویسان شما محیط آرامی برای كار كردن دارند؟ این موضوع - كه با دادن فضای مناسب، ایجاد آرامش و محیط دنج (privacy) به كارمندان IT (یا اصطلاحاً knowledge workers) – بهره*وری افزایش می*یابد ،* به صورت گسترده*ای مستند شده است. كتاب كلاسیك مدیریت نرم*افزار، PeopleWare (کاربران ثبت نام کرده قادر به مشاهده لینک می باشند) ، این موارد را بر می*شمرد. مشكل اینجاست: همه ما می*دانیم كه نیروی كار فنی با قرار گرفتن در جریانی كه از آن به « در بحر موضوع رفتن » تعبیر می*شود - بهتر كار می*كنند ؛ این زمانی است كه تمركزشان كاملاً بر روی كارشان است و حواسشان کاملاً از محیط اطرافشان پرت شده است. احساس زمان را از دست می*دهند و از طریق تمرکز مطلق، چیزهای عالی*ای خلق می*کنند. نویسندگان، برنامه*نویسان، دانشمندان، و حتی بازیکنان بسکتبال در مورد حالت « در بحر موضوع فرو رفتن »* می*توانند برای شما توضیح دهند. وارد شدن به این حالت کار ساده*ای نیست. اگر اندازه*گیری کنید، می*بینید که حدوداً ۱۵ دقیقه طول می*کشد تا به حداکثر کارایی خود برسید. بعضی مواقع، زمانهایی که خسته هستید و یا به اندازه کافی برای آن روزتان خلاقیت به خرج داده*اید، دیگر نمی*توانید در بحر موضوع بروید و بقیه روز را به کارهای بیهوده، خواندن وب و Tetris بازی کردن می*گذرانید. مشکل دیگر در اینجاست که از دست دادن تمرکز کار ساده *ایست :*سر و صدا، تماسهای تلفنی، ناهار را بیرون خوردن، آن پنج دقیقه*ای که برای نوشیدن قهوه تا کافی*شاپ صرف رانندگی می*کنید، و علی*الخصوص مزاحمتها و سؤالهای همکاران، همگی تمرکز را از بین می*برند. اگر همکار شما ازتان سؤالی بپرسد که یک دقیقه کارتان را متوقف کند، ولی آنقدر حواستان را پرت کند که نیم ساعتی طول بکشد تا به حالت سابق برگردید، بهره*وری کلی تیمتان در خطر جدی قرار دارد. اگر در محیط شلوغی کار می*کنید – از همان نوعی که dotcom های کافئین*زده سخت عاشق آن هستند و در آنها بخش فروش زیر گوش برنامه*نویسان مشغول داد و بیداد هستند - بهره*وری شما سقوط بدی خواهد کرد. در مورد برنامه*نویسان (به نسبت بقیه knowledge workers و طیفهای دیگری که نیازمند تمرکز زیاد هستند)، قضیه سختتر است. بهره*وری، به توانایی شعبده بازی با جزئیات زیادی در حافظه موقت بستگی دارد. هر نوع وقفه*ای باعث بهم ریختن این جزئیات می*شود. وقتی کارتان را از سر می*گیرید، هیچ کدام از جزئیات (نظیر نام متغیرهای محلی یا اين که تا کجای پیاده*سازی الگوریتم جستجویتان را انجام داده بودید) یادتان نخواهد آمد و مجبور به مراجعه به کار قبلتان هستید که سرعتتان را می*گیرد. ریاضیات این مسأله زیاد سخت نیست: فرض کنید (که شواهد هم این فرض را تأیید می*کنند) که اگر برای یک دقیقه هم یک برنامه*نویس را متوقف کنید، پانزده دقیقه از بهره*وریش کم می*کنید. برای مثال، Jeff* و Mutt (که هر دو برنامه*نویس هستند) را در دو پارتیشن کنار هم قرار می*دهیم (در یک فضای کاملاً Dilbert ای). مات، نام تابع کپی رشته در یونیکد را به خاطر نمی*آورد. می*تواند جواب آن را جستجو کند - که ۳۰ ثانیه طول می*کشد، و یا این که از جف بپرسد - که ۱۵ ثانیه طول خواهد کشید. خوب، چون جف در کنارش نشسته است ترجیح می*دهد که از او بپرسد. حواس جف پرت می*شود و ۱۵ دقیقه را از دست می*دهد (برای این که مات ۱۵ ثانیه صرفه*جویی کرده باشد.) حالا اجازه دهید که جف و مات را در دو اتاق (با در و دیوار)* جدا بگذاریم. اکنون وقتی که مات اسم تابع را به خاطر نمی*آورد، می*تواند جواب آن را جستجو کند (که همان ۳۰ ثانیه طول می*کشد)* و یا این که از جف بپرسد که ۴۵ ثانیه طول می*کشد و شامل از جای خود بلند شدن هم می*شود (که با توجه به وضعیت جسمی معمول برنامه*نویسان و مسایل ديگر *، کار ساده*ای نیست!). بنابر این ترجیح می*دهد که جوابش را جستجو کند. ۳۰ ثانیه وقتش تلف می*شود اما ۱۵ دقیقه به نفع جف است! وای! ۹. آیا بهترین ابزارهایی را که وجود دارد می*خرید؟ نوشتن کد در یک زبان کامپایل شده از کارهایی است که هنوز بر روی کامپیوترهای خروس*نشان، نمی*توان با سرعت انجام داد. اگر فرآیند کامپایل، بیشتر از چند ثانیه طول می*کشد، خرید جدیدترین و بهترین کامپیوتر در وقتتان صرفه*جویی خواهد کرد. اگر کامپایل کردن حتی ۱۵ ثانیه طول بکشد، برنامه*نویسها حوصله*شان سر می*رود و می*روند به سراغ خواندن سایت The Onion (کاربران ثبت نام کرده قادر به مشاهده لینک می باشند) ، که آن هم تمام هوش و حواسشان را به خود خواهد برد و ساعتها بهره*وری از بین می*رود. debug کردن کد GUI با یک مانیتور اگر غیر ممکن نباشد، بسیار سخت و دردناک است. اگر در حال نوشتن کد GUI هستید، داشتن دو مانیتور همه چیز را بسیار ساده خواهد کرد. بیشتر برنامه*نویسان باید یک زمانی فایلهای bitmap* را (برای iconها و toolbarها) دستکاری کنند و اکثراً ویرایشگر مناسب برای این کار ندارند. استفاده از MS Paint برای این کار بیشتر شبیه یک شوخی است، که البته غالب برنامه*نویسها از همین روش استفاده می*کنند. در محل کار قبلی*ام (کاربران ثبت نام کرده قادر به مشاهده لینک می باشند)، admin شبکه دایماً برای من spamمی*فرستاد و غر می*زد که من بیشتر از ۲۲۰ مگابایت فضای مجازم، روی سرور جا اشغال کرده*ام. من روزی جواب دادم که با توجه به قیمت هارد دیسک، هزینه فضای مورد استفاده کمتر از هزینه دستمال کاغذی من است و صرف کردن حتی ده دقیقه از وقتم برای کوچک کردن دایرکتوری*ام یک هدر دادن اشرافی بهره*وری است. تیمهای تولید نرم*افزار درجه یک، برنامه*نویسان خود را شکنجه نمی*کنند. حتی موضوعات جزیی اعصاب*خردکن ناشی از داشتن ابزار نامناسب، جمع می*شود و برنامه*نویسها را بد اخلاق و ناراحت می*کند. یک برنامه*نویس بد خلق، یک برنامه*نویس با کارایی پایین است. یک نکته دیگر هم اضافه کنم*... برنامه*نویسها را به راحتی می*توان با رشوه دادن - بوسیله جدیدترین و باحالترین وسایل - تطمیع کرد. این برایتان خیلی ارزانتر از دادن حقوق مکفی تمام می*شود! ۱۰. آی� سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 704]
صفحات پیشنهادی
گیم موبایل 500 Games for Nokia N-Series
گیم موبایل 500 Games for Nokia N-Series-گیم موبایل Rapidshare.com 500 Games for Nokia N-Series جدیدترین بازیهای برای موبایل شما 500 Games for Nokia ...
گیم موبایل 500 Games for Nokia N-Series-گیم موبایل Rapidshare.com 500 Games for Nokia N-Series جدیدترین بازیهای برای موبایل شما 500 Games for Nokia ...
Nokia N Gage
Nokia N Gage-View Full Version : Nokia N-Gage Vahed15-08-2007, 05:22 PMI remember the days when a mobile phone was exactly what it said on the tin; my ...
Nokia N Gage-View Full Version : Nokia N-Gage Vahed15-08-2007, 05:22 PMI remember the days when a mobile phone was exactly what it said on the tin; my ...
دانلود بازي هاي N Gage II از سرور MediaFire / مديافاير و ...
Legend08-01-2009, 07:09 PMسلام ديگه عنوان تاپيك گوياست...:20:اينم يه آرشيو از بازي ها روي اين دو سرور قدرتمنده..:10: ممنون، شاد باشيد:40: Legend08-01-2009, ...
Legend08-01-2009, 07:09 PMسلام ديگه عنوان تاپيك گوياست...:20:اينم يه آرشيو از بازي ها روي اين دو سرور قدرتمنده..:10: ممنون، شاد باشيد:40: Legend08-01-2009, ...
101710/n/Status.zi
101710/n/Status.zi-Grand29-01-2010, 12:02 AMسلام کرک دیکشنری نارسیس من روی ویندوز هفت (و همین طور ویستا) کار نمیکنه! کسی میتونه کمکم کنه؟
101710/n/Status.zi-Grand29-01-2010, 12:02 AMسلام کرک دیکشنری نارسیس من روی ویندوز هفت (و همین طور ویستا) کار نمیکنه! کسی میتونه کمکم کنه؟
درخت سرو كهنسال كرج در آستانه نابودي است
درخت سرو كهنسال كرج در آستانه نابودي است-عليرضا دهقان مهرجردي روز يكشنبه در گفت و گو با خبرنگار ايرنا اظهار داشت : اين درخت كه بيش از يك هزار و دويست سال قدمت ...
درخت سرو كهنسال كرج در آستانه نابودي است-عليرضا دهقان مهرجردي روز يكشنبه در گفت و گو با خبرنگار ايرنا اظهار داشت : اين درخت كه بيش از يك هزار و دويست سال قدمت ...
Media Feature Pack برای ویندوز 7 سری N
Media Feature Pack برای ویندوز 7 سری N-مالتی مدیا , پخش صوت و تصویر Media Feature Pack for Windows 7 N and Windows 7 KN - KB968211 ویندوز 7 سری N ...
Media Feature Pack برای ویندوز 7 سری N-مالتی مدیا , پخش صوت و تصویر Media Feature Pack for Windows 7 N and Windows 7 KN - KB968211 ویندوز 7 سری N ...
دانلود4 تم نوكيا سری N سري 60 ورژن 3
دانلود4 تم نوكيا سری N سري 60 ورژن 3-با توجه به پر طرفدار بودن گوشی های نوکیا سری 60 ورژن 3 در این قسمت 4 تم زیبا که با این سری از گوشی های نوکیا سازگار ...
دانلود4 تم نوكيا سری N سري 60 ورژن 3-با توجه به پر طرفدار بودن گوشی های نوکیا سری 60 ورژن 3 در این قسمت 4 تم زیبا که با این سری از گوشی های نوکیا سازگار ...
رنگ مو گروه n
رنگ مو گروه n-قبل از خريد رنگ مو بخوانيد نويسنده:رقيه پورمحسني بر مبناي رنگ كردن يا رنگ نکردن مو، خانمها را ميتوان به 3 دسته تقسيم کرد؛ گروه اول آنهايي هستند ...
رنگ مو گروه n-قبل از خريد رنگ مو بخوانيد نويسنده:رقيه پورمحسني بر مبناي رنگ كردن يا رنگ نکردن مو، خانمها را ميتوان به 3 دسته تقسيم کرد؛ گروه اول آنهايي هستند ...
دانلود بازی موبايل نوكيا Metal Gear Solid n-gage
دانلود بازی موبايل نوكيا Metal Gear Solid n-gage-بازی موبایل بسیار جدید و هیجانی Metal Gear Solid که به تازگی از شرکت EA روانه ی بازار شده است این بازی برای ...
دانلود بازی موبايل نوكيا Metal Gear Solid n-gage-بازی موبایل بسیار جدید و هیجانی Metal Gear Solid که به تازگی از شرکت EA روانه ی بازار شده است این بازی برای ...
حل دستگاه n معادله n مجهول
m2babaey05-10-2008, 06:58 PMسلام من می خوام با سی پلاس پلاس برنامه حل دستگاه n معادله n مجهول بنویسم به نظر شما چه الگوریتمی خوبه؟ _H2_06-10-2008, 12:45 ...
m2babaey05-10-2008, 06:58 PMسلام من می خوام با سی پلاس پلاس برنامه حل دستگاه n معادله n مجهول بنویسم به نظر شما چه الگوریتمی خوبه؟ _H2_06-10-2008, 12:45 ...
-
گوناگون
پربازدیدترینها