بایگانی دسته: ترجمه

کتاب رایگان شبکه عصبی تان را بسازید

جلد کتاب رایگان شبکه عصبی تان را بسازید - مقدمه ای بر مفاهیم، ریاضیات و ساخت شبکه های عصبی با پایتون

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

همان طور که گفتم کتاب ویرایش نشده است و ممکنه ایرادات نگارشی داشته باشه و به کیفیت کتابهای قبلی نباشه. امیدوارم خوانندگان عزیز با اعلام این ایرادات در رفع اونها به بنده کمک کنند. می توانید فایل PDF کتاب رو از آدرس زیر دانلود کنید:

دانلود کتاب شبکه عصبی تان را بسازید

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

ریپازیتوری GitHub کتاب

در انتها امیدوارم با وجود همه ایرادات، کتاب مورد استفاده علاقه مندان قرار بگیره و مفید باشه. خوشحال میشم اگر ایرادی در کتاب دیدین اون رو از طریق آدرس ایمیل reza_sabery_89@yahoo.com یا در قسمت نظرات به بنده اطلاع بدین.

برای آگاهی از پست های بعدی می توانید در کانال تلگرام وبلاگ عضو شوید.
برای عضویت در کانال وبلاگ اینجا کلیک کنید

مسئولیت پذیری

اخیرا کتابی خواندم به نام The Great ScrumMaster اثر Zuzana Sochova. نویسنده در این کتاب مدلی از مسئولیت پذیری ارائه کرده بود که به نظرم جالب آمد. ترجمه مختصری از این مدل را در ادامه آورده ام.

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

  1. نادیده گرفتن (Denial): ساده ترین گزینه نادیده گرفتن اتفاقی است که افتاده. اصلا به ماشین کناری خوردم؟ من که رد هیچ خط و خشی نمی بینم. آثار موجود روی بدنه ماشین دیگر هم به خاطر کثیف بودن آن است و با کارواش رفتن برطرف خواهند شد. اما صدا از کجا آمد؟ صدای خرد شدن سنگ های پارکینگ بود
  2. دنبال مقصر گشتن (Laying blame): اگر با نادیده گرفتن اتفاقی که افتاده راحت نباشید ذهنتان گزینه دیگری پیشنهاد می دهد. ناگهان در کسری از ثانیه، ذهن دنبال مقصر می گردد: اینکه به ماشین کناری خوردم مشکل راننده آن ماشین است. اگر به درستی پارک کرده بود چنین نمی شد!
  3. توجیه کردن (Justify): اگر با دنبال مقصر گشتن هم راضی نشوید ذهنتان گزینه دیگری پیشنهاد می دهد. کارتان را توجیه می کند: همه گاه و بی گاه تصادف می کنند؛ نه؟ تازه پارک کردن در پارکینگ های طبقاتی شلوغ هم سخت است.
  4. شرمندگی (Shame): گزینه بعدی شرمنده شدن است. این تصادف تقصیر من است. من هیچ وقت یاد نگرفتم در پارکینگ های طبقاتی شلوغ پارک کنم. شرمنده ام!
  5. وظیفه (Obligation): گزینه بعدی مواجهه با مشکل به گونه ایست که نشان دهد انجام یک کار خاص وظیفه شما است. شماره تلفنم را روی یک تکه کاغذ نوشتم و پشت برف پاک کن ماشینی که به آن زدم گذاشتم. در نهایت بیمه خسارتم را جبران خواهد کرد.
  6. بی خیال شدن (Quit): هر وقت بخواهید می توانید بی خیال همه چیز شوید.
  7. مسئولیت پذیری (Responsibility): این گزینه آخری است که ذهنتان در اختیار شما قرار می دهد. برای مسئولیت پذیری باید از خودتان بپرسید «دفعه بعد باید چه کار کنم تا این اتفاق نیفتد؟». در مثال پارک کردن ماشین پاسخ این سوال می تواند پارک کردن در یک جای خلوت تر، نصب سنسور پارک روی ماشین و غیره باشد.

استفاده از گزینه های مختلف این مدل را در خودم و دیگران بارها دیده ام. امیدوارم با آگاهی از این مدل بتوانیم در مواجهه با مشکلات بهتر تصمیم بگیریم.

برای آگاهی از پست های بعدی می توانید در کانال تلگرام وبلاگ عضو شوید.
برای عضویت در کانال وبلاگ اینجا کلیک کنید

چاپ ششم کتاب برنامه نویسی با پایتون

تصویر جلد کتاب برنامه نویسی با پایتون ۳ ترجمه غلامرضا صابری تبریزی

چاپ ششم کتاب برنامه نویسی با پایتون هم به بازار آمد. نام دقیق این اثر «برنامه نویسی با پایتون ۳» است. چاپ اول این کتاب (همون طور که در این پست) توضیح دادم سال ۱۳۹۳ به بازار ارائه شد، و «برنامه نویسی با پایتون» نام داشت. با به روز شدن نسخه اصلی کتاب، و ترجمه اون انتشارات تصمیم گرفت اسم ویرایش دوم و چاپ سوم کتاب را به «برنامه نویسی با پایتون ۳» تغییر دهد. چاپ ششم این کتاب هم با همین نام به بازار ارائه شده است (چاپ ششم با احتساب دو بار چاپ شدن ویرایش اول و چهارمین چاپ ویرایش دوم کتاب). امیدوارم مفید واقع بشه. می تونید کتاب رو به صورت آنلاین از نشر دانشگاهی کیان سفارش بدین.

مطالعه رایگان یک فصل از کتاب برنامه نویسی با پایتون ۳

 

برای آگاهی از پست های بعدی می توانید در کانال تلگرام وبلاگ عضو شوید.
برای عضویت در کانال وبلاگ اینجا کلیک کنید

NNT چیست؟

 برای آگاهی از اینکه پزشکی مدرن چقدر می تواند به بیماران کمک کند راهی وجود دارد. این راه، یک مفهوم آماری بسیار ساده به نام «عدد مورد نیاز برای درمان» (Number Needed to Treat) یا به اختصار NNT است. NNT معیاری برای میزان تاثیر دارو، یا درمان ارائه می دهد. این معیار، تعداد بیمارانی که باید درمان شوند تا، یک نفر تحت تاثیر قرار گیرد را تخمین می زند. NNT یک مفهوم آماری، اما شهودی است. همان طور که می دانید، همه افراد از مداخله پزشک یا استفاده از دارو سود نمی برند – برخی درمان می شوند، برخی هیچ نتیجه ای نمی گیرند، و برخی دیگر به علت درمان دچار آسیب می شوند. NNT تعداد افراد موجود در هر گروه را مشخص می کند.

برای مثال، درمانی خیالی برای حمله قلبی به نام «ضد-حمله» را در نظر بگیرید. برای بررسی میزان تاثیر این درمان، بیماران را به دو گروه تقسیم می کنیم «گروه درمان»، و «گروه شبه دارو». «گروه درمان» را در معرض «ضد-حمله» قرار می دهیم، و به اعضای «گروه شبه دارو» هیچ دارویی نمی دهیم. فرض کنید ۷۵ درصد بیماران «گروه درمان» که «ضد-حمله» را استفاده می کنند زنده مانده، و ۲۵ درصد آنها میمیرند. در گروه «شبه دارو» ۷۵ درصد بیماران میمیرند، و ۲۵ درصد آنها زنده می مانند. همان طور که مشاهده می کنید داروی «ضد-حمله» بسیار موثر است و می تواند نرخ مرگ و میر را به میزان قابل توجهی کاهش دهد. با این حال، ۲۵ درصد بیماران گروه «شبه دارو» که هیچ دارویی دریافت نمی کنند زنده مانده، و ۲۵ درصد اعضای «گروه درمان» هم با وجود استفاده از دارو میمیرند. به طور کلی، درمان «ضد-حمله» هیچ تاثیری بر ۵۰ درصد بیماران ندارد. در مقابل ۵۰ درصد بیمارانی که از این راه درمانی استفاده می کنند هم بهبود می یابند.
نکته قابل توجه، این است که در اکثر داروها و درمان ها، نمی دانیم آیا درمان به افراد کمک کرده، هیچ تاثیری بر آنها نداشته، یا باعث آسیب به آنها شده است. اگر بخواهیم حساب کنیم چند نفر باید تحت درمان «ضد-حمله» قرار گیرند تا یک نفر درمان شود این عدد ۲ نفر است (زیرا این دارو تنها ۵۰ درصد بیماران را بهبود می دهد). به عبارت دیگر، NNT درمان «ضد-حمله» برابر با ۲ است.
توجه داشته باشید در بسیاری از درمان ها نرخ میزان تاثیر درمان بسیار کمتر از ۵۰ درصد است. برای مثال، ممکن است NNT درمانی خاص ۵۰ باشد. یعنی تنها دو درصد بیمارانی که تحت این درمان قرار میگیرند از آن بهره می برند. در این حالت برای درمان یک نفر ۵۰ بیمار باید تحت درمان قرار بگیرند. مسلما، از میان این ۵۰ بیمار عده ای دچار عوارض آن خواهند شد.از این رو، بهتر است موقع استفاده از دارو، یا درمانی خاص NNT، و عوارض آن را مد نظر قرار دهید.

منبع: http://www.thennt.com/thennt-explained

برای آگاهی از پست های بعدی می توانید در کانال تلگرام وبلاگ عضو شوید.
برای عضویت در کانال وبلاگ اینجا کلیک کنید

چاپ پنجم کتاب برنامه نویسی با پایتون

چاپ پنجم کتاب برنامه نویسی با پایتون هم به بازار آمد. نام دقیق این اثر «برنامه نویسی با پایتون ۳» است. چاپ اول این کتاب (همون طور که در این پست) توضیح دادم سال ۱۳۹۳ به بازار ارائه شد، و «برنامه نویسی با پایتون» نام داشت. طی چاپ های متوالی و با به روز شدن کتاب، نام ویرایش دوم و چاپ سومش به «برنامه نویسی با پایتون ۳» تغییر کرد و چاپ پنجم این کتاب هم با همین نام به بازار ارائه شده است (چاپ پنجم با احتساب دو بار چاپ شدن ویرایش اول و سومین چاپ ویرایش دوم کتاب). امیدوارم مفید واقع بشه. برای سفارش آنلاین کتاب می توانید به وب سایت نشر دانشگاهی کیان مراجعه کنید.

مطالعه رایگان یک فصل از کتاب برنامه نویسی با پایتون ۳

 

برای آگاهی از پست های بعدی می توانید در کانال تلگرام وبلاگ عضو شوید.
برای عضویت در کانال وبلاگ اینجا کلیک کنید

چاپ چهارم کتاب برنامه نویسی با پایتون

امروز چاپ چهارم کتاب برنامه نویسی با پایتون به بازار ارائه شد. نام دقیق این اثر «برنامه نویسی با پایتون ۳» است. چاپ اول این کتاب (همون طور که در این پست) توضیح دادم سال ۱۳۹۳ به بازار ارائه شد و «برنامه نویسی با پایتون» نام داشت. طی چاپ های متوالی و با به روز شدن کتاب نام ویرایش دوم و چاپ سومش به «برنامه نویسی با پایتون ۳» تغییر کرد و چاپ چهارمش هم، با همین نام به بازار ارائه شده است. امیدوارم مفید واقع بشه. برای سفارش آنلاین کتاب می توانید به وب سایت نشر دانشگاهی کیان مراجعه کنید.

مطالعه رایگان یک فصل از کتاب برنامه نویسی با پایتون ۳

 

برای آگاهی از پست های بعدی می توانید در کانال تلگرام وبلاگ عضو شوید.
برای عضویت در کانال وبلاگ اینجا کلیک کنید

هدف تفکر طراحی (Design Thinking)

مدتی قبل در دورهمی IDF تهران ارائه ای درباره تفکر طراحی (Design Thinking) داشتم. اسلایدها و فایل صوتی این ارائه را می توانید به صورت رایگان از آدرس زیر دانلود کنید (همین جا و داخل پرانتز از همه دوستان و عزیزانی که این دورهمی رو برگزار کردند تشکر می کنم):

دانلود اسلایدهای ارائه دانلود فایل صوتی ارائه

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

اگر تاریخچه پدید آمدن تفکر طراحی را مطالعه کنید، حتما با مقاله مهم و ارزشمند هورست ریتل (Horst Rittel) با عنوان Dilemmas in a general theory of planning مواجه خواهید شد. ریتل در این مقاله به بررسی مسائل خاصی، که خود آنها را مسائل بدخیم (Wicked Problems) می نامد پرداخته است (ممکن است بدخیم معادل فارسی مناسبی برای کلمه Wicked نباشد، اما در حال حاضر معادل بهتری برای آن نیافته ام. برخی، آن را به بدسرشت هم ترجمه کرده اند. اما، بد سرشت ترجمه مناسبی برای این واژه نیست. به خصوص وقتی با کلمه مسئله همراه می شود). مسائل بدخیم، مسائلی پیچیده (پیچیده به معنای تشکیل شده از اجزا) و چندبعدی هستند. از نظر ریتل این مسائل بیشتر در تقابل با جامعه رخ می دهند. به قول ریتل: «مشکلات اجتماعی هیچ گاه به صورت قطعی حل نمی شوند بلکه بارها و بارها فیصله می یابند». فیصله را به عنوان ترجمه Resolve به کار برده ام. وقتی مسئله ای حل می شود عموما همه طرفین از حل آن راضی هستند. اما، وقتی دعوا یا اختلافی فیصله می یابد یا اصطلاحا Resolve می شود همه طرفین رضایت ندارند!

ریتل علت حل نشدن مشکلات و مسائل اجتماعی را در ذات این مسائل می داند. او این مسائل را بدخیم (در مقابل مسائل خوش خیم یا به اصطلاح Tame، مثل معادله های ریاضی که راه حلی مشخص دارند)  می نامد و ۱۰ ویژگی برای این مسائل بر می شمارد که در ادامه به بررسی این ویژگی ها می پردازیم. هدف تفکر طراحی ارائه فرآیندی برای حل چنین مشکلاتی است:

  1. مسائل بدخیم صورت مسئله مشخصی ندارند: مهمترین معضل در حل مسائل بدخیم نوشتن صورت مسئله است. منظور از «نوشتن صورت مسئله» مشخص کردن سه مورد زیر است:
    • نوشتن ویژگی های حالت ایده آل و حالت فعلی.
    • پیدا کردن علت مشکل. به عبارت دیگر، علت تفاوت بین حالت ایده آل و حالت فعلی چیست؟
    • انتخاب مجموعه ای از اقدامات برای رفع علت مشخص شده.
  2. مسائل بدخیم شرط توقف ندارند: در حل مسائل ریاضی یا موقع بازی شطرنج می دانیم کی مسئله حل شده یا بازی به اتمام رسیده است. اما، مسائل بدخیم شرط توقف ندارند. نمی دانیم مشکل چه موقع حل شده است. در واقع، مجموعه رویدادها و وقایع خاصی وجود ندارند که با رخ دادن آنها متوجه شویم مسئله حل شده است. عموما، کسانی که مسائل بدخیم را حل می کنند به علت اتمام وقت یا بودجه حل مسئله را متوقف می کنند.
  3. راه حل های مسائل بدخیم درست یا غلط نیستند، بلکه خوب یا بد هستند: این ویژگی دخیل بودن عوامل انسانی و قضاوت انسان در بررسی کارایی راه حل مسائل بدخیم را شرح می دهد. در حل مسائل ریاضی، فرد یا افرادی وجود دارند که می توانند با آگاهی از قوانین ریاضیات، راه حل ارائه شده را بررسی کرده و اعلام کنند آیا راه حل ارائه شده درست است یا غلط. اما، در بررسی صحت و کارایی راه حل های مسائل مرتبط با اجتماع سلیقه، بافت جامعه، ساختار اجتماعی و سلسله مراتبی و قضاوت افراد دخیل است. ممکن است راه حل از نظر یک فرد خوب و از نظر شخص دیگری بد باشد.
  4. پیش از پیاده سازی راه حل، تستی برای اینکه مشخص کند آیا راه حلی برای مسئله به دست آمده است وجود ندارد: در مسائل خوش خیم، پیش از پیاده سازی راه حل، می توان تصمیم گرفت راه حل ارائه شده تا چه حد خوب یا بد است. به عبارت دیگر، بررسی و تست راه حل کاملا در کنترل کسانی است که به حل مسئله علاقه مند هستند. در مسائل بدخیم، هر راه حلی، پس از پیاده سازی، موجی از عواقب و نتایج را به همراه خواهد داشت. این موج می تواند به مدت زمان نامتناهی ادامه یابد. به علاوه، ممکن است پس از پیاده سازی راه حل، نتایج به بار آمده آنقدر وخیم باشند که حل کننده گان مسئله به این نتیجه برسند که بهتر بود اصلا راه حلی ارائه نمی شد! نتایج و عواقب راه حل پیاده سازی شده بر زندگی تک تک افراد را نمی توان پیشاپیش و قبل از پیاده سازی راه حل بررسی کرد.
  5. هر راه حلی که برای یک مسئله بدخیم مطرح می شود بسیار حائز اهمیت است و نمی توان با سعی و خطا مسئله را حل کرد: فرض کنید می خواهید مشکلات سیستم آموزشی یک کشور را رفع کنید. نمی توانید این کار را با سعی و خطا انجام دهید. کوچکترین تغییری باعث تحت تاثیر قرار گرفتن زندگی یک یا چند نسل از جامعه می شود.
  6. مسائل بدخیم مجموعه راه حل های قابل شمارشی ندارند. به علاوه، اعمال مشخصی هم وجود ندارد که بتوان از آنها در برنامه ریزی استفاده کرد: راهی وجود ندارد که بتوان بر اساس آن اثبات کرد همه راه حل های یک مسئله بدخیم شناسایی و بررسی شده است. ممکن است به علت تناقض های منطقی که در صورت مسئله وجود دارد اصلا نتوان راه حلی یافت (برای مثال ممکن است در صورت مسئله نیاز به A و نقیض آن ذکر شده باشد). عموما، در زمان تلاش برای حل یک مسئله بدخیم، مجموعه ای از راه حل ها در نظر گرفته می شوند و مجموعه ای دیگر به طور کامل از نظر پنهان می مانند. تلاش برای افزایش اندازه مجموعه راه حل ها و انتخاب یک راه حل خاص تنها به قضاوت وابسته است.
  7. هر مسئله بدخیمی اساسا یکتا است: به ازای هر دو مسئله، می توان حداقل یک وجه تمایز یافت. اما، «اساسا یکتا» یعنی به ازای تعداد بسیار زیادی ویژگی مشابه بین دو مسئله بدخیم، یک ویژگی متمایز کننده وجود دارد که اهمیت بسزایی دارد. در نتیجه نباید برای انتخاب راه حل مسائل بدخیم عجله کرد.
  8. هر مسئله بدخیمی را می توان نشانه ای از یک مسئله بدخیم دیگر (و سطح بالاتر) در نظر گرفت: برای مثال جرم و جنایت را می توان نشانه ای از افول اخلاق در جامعه در نظر گرفت.
  9. توضیحات مختلفی برای وجود تفاوت بین حالت ایده آل و حالت فعلی در صورت مسائل بدخیم قابل ارائه است. اگر توضیح خاصی را به عنوان علت مسئله در نظر بگیرید در واقع راه حل خود را انتخاب کرده اید. برای مثال می توان علت جرم و جنایت در جامعه را افول اخلاق، فقر، تولید فیلم های خشن و غیره دانست. اگر علت خشونت در جامعه را افول اخلاق در نظر بگیرید راه حلتان هم در همین جهت پیش خواهد رفت!
  10. طراح (حل کننده گان مسائل بدخیم) حق اشتباه کردن ندارد: در علم، دانشمندان نظریه های مختلفی برای توضیح یک پدیده بیان می کنند. یک نظریه را می توان با استفاده از شواهد نقض کرد و نظریه جدیدی ارائه داد. هیچ کس، دانشمندان را برای ارائه نظریاتی که نقض می شوند سرزنش نمی کند. اما، در حل مسائل بدخیم، بر خلاف علم، هدف یافتن حقیقت نیست. هدف، بهبود شرایط زندگی مردم است. از این رو طراحان و کسانی که مسائل بدخیم را حل می کنند حق اشتباه کردن ندارند و باید مسئولیت تصمیمات خود را بپذیرند.

هدف فرآیندهای گوناگون تفکر طراحی حل مسائلی است که ویژگی های فوق را دارند. مسائلی که اصطلاحا انسان-محور هستند. این گونه مسائل در بطن جامعه یا سیستمی هایی که عوامل انسانی در آنها نقش دارند (برای مثال سیستم های نرم افزاری) پدید می آیند و برای حل آنها باید نیازهای افراد مختلف در نظر گرفته شود. حال که ویژگی های مسائل بدخیم را برشمردیم می توانید برای مشاهده مراحل گوناگون فرآیند تفکر طراحی (که فرآیندی برای حل این مسائل ارائه می دهد) و انواع مختلف آن به اسلایدها مراجعه کنید. در انتها امیدوارم توضیحات فوق مفید واقع شوند.

برای آگاهی از پست های بعدی می توانید در کانال تلگرام وبلاگ عضو شوید.
برای عضویت در کانال وبلاگ اینجا کلیک کنید

رفتار نرم افزار دربرابر خطا

تصویری که کاربری خیالی را در مواجهه با خطا نشان می دهد

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

در سال ۱۹۸۶ دون نورمن (Don Norman) و کلیتون لوییس (Clayton Lewis) مقاله ای را با عنوان طراحی برای خطا (Designing for error) در کتاب User-Centered System Design چاپ کردند. آنچه در ادامه می خوانید خلاصه این مقاله (با کمی تغییر) است.

اگر با سیستم های کامپیوتری کار کرده باشید حتما با پیغامهای خطا هم مواجه شده اید. برخی از پیغام هایی که ممکن است دیده باشید عبارتند از:

  • فایل یا دایرکتوری مقصد موجود نیست
  • خطا در اتصال به سرویس دهنده
  • خطا در نوشتن فایل در دایرکتوری مقصد

اما آیا استفاده از کلمه خطا (Error) در چنین شرایطی درست است؟ نویسندگان مقاله می گویند خیر! چون خطا کلمه ای است که عموما با شنیدن آن، دنبال مقصر می گردیم. این کلمه بار منفی دارد و کاربر با دیدن آن احساس می کند ناتوانی او باعث خطا شده، در حالیکه نرم افزار نتوانسته به درستی به درخواست یا ورودی کاربر پاسخ دهد. بنابراین نویسندگان مقاله استفاده از هر کلمه دیگری را در این شرایط، بر خطا، مقدم می دانند. به علاوه انسانها همان طور که با دیگر انسانها در تعاملند، با کامپیوترها تعامل (Interact) می کنند. سیستمی که مدعی تعاملی بودن است باید همان طور که دو طرف یک گپ و گفت سعی در رفع اشکالات کلامی و مفهومی هم می کنند (تا حرف هم را بفهمند) سعی کند به کاربر کمک کند و اشکالات او را رفع کند.

اما آیا می توان “خطاهای” کاربر را دسته بندی کرد؟ به طور کلی کاربران هدف یا مقصودی (Intention) برای استفاده از نرم افزار دارند:

  • اگر هدف و مقصود کاربر درست باشد اما عملی که برای دست یافتن به آن انجام می دهد اشتباه باشد او مرتکب لغزش (Slip) شده است
  • اگر هدف و مقصود به کلی اشتباه باشد کاربر مرکتب اشتباه (Mistake) شده است

عموما کسانی که در استفاده از نرم افزار خاصی خبره هستند دچار لغزش می شوند چون کارها را ناخودآگاه (به علت تمرین و تکرار) و بدون دقت انجام می دهند.

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

  1. Gag: در این حالت سیستم کار مورد نظر کاربر را انجام نمی دهد. این توقف کاربر را آگاه می کند که خطایی رخ داده، اما کاربر متوجه نمی شود این خطا چیست. برای مثال وقتی سعی می کنید ماشین را روشن کنید اما هیچ اتفاقی نمی افتد. در این حالت متوجه می شوید که مشکلی وجود دارد اما نمی توانید تشخیص دهید این مشکل چیست؟
  2. Do Nothing: در صورت بروز خطا سیستم، هیچ عکس العملی از خود نشان نمی دهد. این روش تنها در شرایطی قابل استفاده است که کاربر متوجه شود در پاسخ به درخواست وی هیچ اتفاقی نیفتاده است، در غیر این صورت ممکن است کاربر به اشتباه فکر کند درخواستش انجام شده است.
  3. Warn: در این حالت در صورت بروز خطا یک اخطار به کاربر نمایش داده می شود اما سیستم به کار خود ادامه می دهد. برای مثال در حین کپی فایل سیستم به کاربر اطلاع می دهد دیسک در حال پر شدن است اما به کپی فایل ادامه می دهد.
  4. Self-Correct: در این روش در صورت خطای کاربر، سیستم سعی می کند به صورت خودکار هدف کاربر را تشخیص و کار مورد نظر او را انجام دهد. این مکانیزم تنها در شرایطی مفید است که بتوان کار انجام شده توسط سیستم را به راحتی لغو کرد. مثالی از این سیستم ها را می توان در برنامه هایی که به صورت خودکار کلمات تایپ شده کاربر را کامل می کنند مشاهده کرد.
  5. Teach Me More: در این حالت اگر نرم افزار نتواند درخواست کاربر را به درستی درک کند از کاربر می خواهد اطلاعات بیشتری در اختیارش قرار دهد. برای مثال دیکشنری هایی که برخی از کلمات را ندارند به کاربر امکان می دهند کلمه ناموجود را اضافه کند.
  6. Let’s Talk About It: این روش که قدمی به سوی تعاملی تر شدن برنامه ها است سعی می کند با برقراری دیالوگ با کاربر مشکل را حل کند. برای مثال با پرسیدن مجموعه ای از سوالات.

توجه داشته باشید رفتار نرم افزار در برابر خطا می تواند ترکیبی از موارد فوق باشد.

آخرین نکته ای که باید در مورد رفتار نرم افزار دربرابر خطا به آن توجه شود پیغام های خطا هستند. پیغام خطا (در صورت نمایش) باید دو نوع اطلاعات مختلف در اختیار کاربر قرار دهد:

  1. اینکه خطایی رخ داده است (Detection of error)
  2. اینکه خطا در چه سطحی از نرم افزار اتفاق افتاده (Identification of error)

عموما پیغام های خطا مورد اول را در اختیار کاربر قرار می دهند اما اطلاعات دقیقی در مورد مکان و علت دقیق رخ دادن خطا به کاربران نمی دهند و این امر می تواند باعث سردرگمی کاربران شود.

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

برای آگاهی از پست های بعدی می توانید در کانال تلگرام وبلاگ عضو شوید.
برای عضویت در کانال وبلاگ اینجا کلیک کنید

کتاب برنامه نویسی با پایتون ۳

سرانجام کتاب برنامه نویسی با پایتون ۳ به چاپ رسید. این کتاب درواقع ویرایش دوم کتاب برنامه نویسی با پایتون است که چاپ اول آن در سال ۱۳۹۳ و چاپ دومش در سال ۱۳۹۴ روانه بازار شد و با استقبال خوبی از طرف مخاطبین عزیز مواجه شد. در این ویرایش کتاب برای تغییرات پایتون ۳ به روز رسانی شده است. به علاوه چند فصل هم به کتاب اضافه شده. در این کتاب نه تنها با نحو (Syntax) زبان پایتون آشنا می شوید بلکه می آموزید چطور مثل یک کامپیوتردان فکر کنید و با مهارت های حل مسئله و اشکال زدایی که برای برنامه نویسان تازه کار بسیار مهم هستند آشنا می شوید. به علاوه در سی دی همراه کتاب می توانید به نسخه لاتین و یک مجموعه ویدئوی آموزشی پایتون و کدهای کتاب هم دسترسی داشته باشید. امیدوارم از مطالعه کتاب لذت ببرید. می توانید یک فصل از کتاب را به صورت رایگان در آدرس زیر مطالعه کنید:

مطالعه رایگان یک فصل از کتاب برنامه نویسی با پایتون ۳

برای سفارش آنلاین کتاب می توانید به وب سایت نشر دانشگاهی کیان مراجعه کنید.

برای آگاهی از پست های بعدی می توانید در کانال تلگرام وبلاگ عضو شوید.
برای عضویت در کانال وبلاگ اینجا کلیک کنید

هشت اشتباه که باعث از دست دادن کارمندان خوب می شود

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

نگه داشتن کارمندان خوب در شرکت ها کار سختی است (اگر چه نباید چنین باشد). وقتی (به عنوان مدیر یک کمپانی) اشتباهی مرتکب می شوید،  اولین کسانی که از دست می دهید بهترین کارمندانتان هستند، چون بیشترین انتخاب را دارند.
اگر نتوانید بهترین کارمندانتان را دلگرم و درگیر کار نگه دارید، آنها را از دست خواهید داد. اگرچه درک این جمله ساده به نظر می رسد، در واقع چنین نیست! طبق نظرسنجی که CEB انجام داده، یک سوم کارمندان خوب شرکت های مختلف نسبت به کار و کارفرمای خود دلسرد هستند و دنبال یک شغل جدید می گردند.
از دست دادن کارمندان خوب یکباره اتفاق نمی افتد. علاقه به کار در آنها به مرور از دست می رود. مایکل کیبلر که زمان زیادی را صرف مطالعه این پدیده کرده، آن را خاموش شدن می نامد. مثل ستاره های در حال مرگ که به مرور نور خود را از دست می دهند، کارمندان خوب هم عطش و علاقه خود به کار را به مرور از دست می دهند. کیبلر می گوید: “در این حالت به نظر می رسد همه چیز خوب است. کارمندان ساعات زیادی را صرف کار می کنند، در کارهای تیمی مشارکت می کنند و کارهایشان را به خوبی انجام می دهند. اما در واقع دارند در سکوت از پای در می آیند و نتیجه واضح این امر دلسرد شدن است”. برای پیش گیری از خاموش شدن کمپانی ها و مدیران باید بدانند اعمال و تصمیماتشان چگونه بر این امر تاثیر می گذارد. در ادامه برخی از اموری که باعث دلسرد شدن کارمندان خوب می شود و باید از انجام آنها پرهیز کرد را آورده ایم:

  1. آنها قوانین احمقانه زیادی وضع می کنند: همه می دانیم که شرکت ها و کمپانی ها باید قانون مند باشند. اما این قوانین نباید سرسری وضع شوند. حتی وضع تعداد اندکی قانون غیرضروری و اضافه می تواند به شدت باعث ناراحتی افراد شود. وقتی کارمندان خوب احساس کنند همه چیز تحت نظر است و برادر بزرگ همه رفتار و اعمال آنها را مثل یک جاسوس تحت نظر دارد مکان دیگری برای کار پیدا خواهند کرد.
  2. آنها با همه یکسان برخورد می کنند: اگرچه این رفتار با بچه مدرسه ای ها به خوبی جواب می دهد، محیط کار متفاوت است. اگر با همه یکسان برخورد کنید بهترین کارمندانتان فکر می کنند کار کردن اهمیتی ندارد. چون به هر حال چه کار کنند و چه کاری انجام ندهند برخورد شما با آنها یکسان خواهد بود.
  3. کارایی ضعیف برای آنها قابل قبول است:  می گویند در گروه های جاز، گروه به خوبی بدترین نوازنده است. مهم نیست بعضی از اعضا چقدر خوب هستند همه صدای ساز بدترین نوازنده را میشنوند. در شرکت ها هم چنین است. اگر اجازه دهید پیوندهای ضعیف بدون هیچ پیامدی باقی بمانند، همه تیم را باخود پایین می کشند.
  4. آنها به نتایج اهمیت نمی دهند: ممکن است اثر نوازش را دست کم بگیرید، به خصوص در مورد بهترین کارمندانتان که انگیزه ذاتی و غریزی دارند. همه تشویق شدن را دوست دارند، به خصوص کسانی که به سختی کار می کنند و تمام تلاششان را انجام می دهند. پاداش دادن به دست آوردهای افراد نشان می دهد شما به کارهای آنها توجه دارید. مدیران باید با افراد در ارتباط باشند تا بدانند چه چیزهایی آنها را خرسند می کند و برای کارهایی که انجام می دهند به آنها پاداش دهند.
  5. آنها به افراد اهمیت نمی دهند: بیش از نیمی از کسانی که کار خود را رها می کنند، این کار را به خاطر رابطه با مدیرشان انجام می دهند. شرکت های موفق سعی می کنند مدیرانشان را طوری تربیت کنند که بین انسان بودن و حرفه ای بودن متعادل باشند. یعنی مدیرانی که از پیشرفت کارمندانشان خرسند می شوند، در دوران دشواری و سختی با کارمندان همدردی می کنند و آنها را به چالش می کشند. مدیرانی که چنین نیستند نیروهای زیادی را از دست می دهند. هشت ساعت (یا بیشتر) کار در روز با کسی که خود درگیر کار نیست و به چیزی به جز خروجی اهمیت نمی دهد غیر ممکن است!
  6. آنها تصویر بزرگ را به شما نشان نمی دهند: ممکن است فکر کنید تخصیص کارها به کارمندان و پیش روی روشی موثر برای مدیریت است. اما اگر تصویر بزرگ (دید کلی) به کارمندانتان ندهید، به خصوص کارمندان خوب، آنها را از دست خواهید داد. کارمندان خوب فشار کاری بیشتری را تحمل می کنند در نتیجه کارشان باید هدفمند باشد. وقتی هدف آنها مشخص نباشد دلسرد می شوند.
  7. آنها اجازه نمی دهند افراد علایقشان را دنبال کنند: گوگل کارمندانش را مجبور می کند حداقل بیست درصد از زمانشان را صرف کارهایی کنند که “فکر می کنند” در پیشرفت گوگل موثر است. این کارهای داوطلبانه نه تنها تاثیر بسزایی در بسیاری از پروژه های گوگل دارد بلکه موجب دلگرم شدن کارمندان گوگل هم می شود. کارمندان با استعداد به کارشان علاقه مند هستند. فراهم آوردن فرصت هایی که به آنها امکان می دهد علایقشان را دنبال کنند باعث افزایش کارایی و رضایت شغلی آنها می شود.
  8. کارکردن با آنها لذت بخش نیست: اگر مردم از کارشان لذت نبرند، یعنی مدیریت به درستی انجام نمی شود. اگر افراد از کار لذت نبرند تمام توان خود را صرف انجام کار نمی کنند و نسبت به کار دلسرد می شوند. برای مثال گوگل تمام تلاش خود را برای لذت بخش کردن کار انجام می دهد از کلاس های بدنسازی گرفته تا غذای رایگان. ساده است، اگر کار لذت بخش باشد شما ساعات بیشتری در محیط کار صرف می کنید و سالهای بیشتری را به کار می پردازید.

نتیجه گیری

به یاد داشته باشید مردم کارشان را رها نمی کنند بلکه مدیرشان را رها می کنند! می خواهید محیط کار بهتری را فراهم کنید؟ سعی کنید درباره EQ بیشتر بیاموزید.

 

برای آگاهی از پست های بعدی می توانید در کانال تلگرام وبلاگ عضو شوید.
برای عضویت در کانال وبلاگ اینجا کلیک کنید