پرسش‌های پرتکرار منتورینگ

مجموعه‌ای از پرسش‌های پرتکرار مرتبط با منتورینگ


چه چیزی یک فرد را واجد شرایط مربی بودن می‌کند؟

آیا می‌توانم زبانی را مربیگری کنم که هنوز در حال یادگیری آن هستم؟

آیا می‌توانم بیش از یک زبان را مربیگری کنم؟

آیا باید تلاش کنم همه‌ی راه‌حل‌های موجود در صف را مربیگری کنم؟

اگر یک راه‌حل روزها، حتی هفته‌ها در صف مانده باشد چه؟

اگر چیز خاصی برای پیشنهاد درباره‌ی یک راه‌حل نداشته باشم چه؟

آیا باید تمرینی را مربیگری کنم که هرگز حل نکرده‌ام؟

آیا باید تمرینی را مربیگری کنم که حل کرده‌ام، اما به زبان دیگری حل کرده‌ام؟

آیا وقتی یک راه‌حل را دیدم، باید آن را مربیگری کنم؟

اگر دانش‌آموز بعد از اینکه چند بار چیزی را توضیح دادم متوجه نشود چه؟

اگر دانش‌آموز درباره‌ی پیشنهادهایم حالت دفاعی بگیرد چطور پاسخ دهم؟

آیا دانش‌آموز باید حرف آخر را بزند، حتی اگر فکر کنم اشتباه می‌کند؟

چطور بهترین شکل یک پیشنهاد را بنویسم؟

آیا باید قالب‌بندی، کامنت‌گذاری و قواعد نام‌گذاری را الزامی کنم؟

چه چیزی یک فرد را واجد شرایط مربی بودن می‌کند؟

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

آیا می‌توانم زبانی را مربیگری کنم که هنوز در حال یادگیری آن هستم؟

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

آیا می‌توانم بیش از یک زبان را مربیگری کنم؟

می‌توانید هر تعداد زبانی که با آن راحت هستید مربیگری کنید. اشکالی ندارد که چند زبان را که در آن‌ها قوی هستید مربیگری کنید، و همچنین زبانی که هنوز در حال یادگیری آن هستید.

آیا باید تلاش کنم همه‌ی راه‌حل‌های موجود در صف را مربیگری کنم؟

اگر در آن لحظه چیز مهم یا سازنده‌ای برای گفتن درباره‌ی یک راه‌حل به ذهنتان نمی‌رسد، ممکن است بهتر باشد درخواست مربیگری را برای مربی دیگری بگذارید، حتی اگر آن دانش‌آموز مجبور شود بیشتر برای پاسخ صبر کند.

اگر یک راه‌حل روزها، حتی هفته‌ها در صف مانده باشد چه؟

اگر دانش‌آموز سؤال مشخصی پرسیده باشد که نمی‌توانید پاسخش دهید، ممکن است بخواهید آن را برای کسی بگذارید که می‌تواند به سؤالش پاسخ دهد.

در غیر این صورت، ممکن است راه‌حل مربوط به تمرینی باشد که برای شما سخت بود؛ تمرینی که یا حلش نکرده‌اید، یا حل کرده‌اید اما احساس می‌کنید خیلی خوب حلش نکرده‌اید. در آن صورت، ممکن است راه‌حل را مرور کنید تا ببینید چیزی برای یادگیری از آن هست یا نه. اگر بود، می‌توانید از دانش‌آموز برای چیزی که به‌طور مشخص از راه‌حلش یاد گرفته‌اید تشکر کنید.

یا ممکن است بخواهید دانش‌آموز راه‌حلش را برایتان توضیح دهد. این نوعی «مربیگری معکوس» است، اما بعضی دانش‌آموزان خوشحال می‌شوند اگر با ادب و احترام از آن‌ها خواسته شود راه‌حلشان را توضیح دهند. بعد می‌توانید بپرسید آیا رویکرد دیگری را در نظر گرفته‌اند و چرا همین رویکردی را که برگزیده‌اند انتخاب کرده‌اند.

یا ممکن است هنوز کلیت راه‌حل را درک نکنید، اما چیزهایی ببینید که بتوانید به آن‌ها بپردازید. برای مثال، ممکن است یادآوری کنید که برای پارامترهای تابع از اسم‌های معنادار استفاده کنند، اگر فقط از n یا m استفاده کرده‌اند.

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

اگر چیز خاصی برای پیشنهاد درباره‌ی یک راه‌حل نداشته باشم چه؟

اشکالی ندارد که بگویید چه چیزی در یک راه‌حل را دوست دارید. در واقع، گفتن اینکه دقیقاً چه چیزی در یک راه‌حل را دوست دارید راه خوبی برای شروع هر جلسه‌ی مربیگری است. بعد از آن، اگر پیشنهادی برای راه‌های جایگزین انجام تمرین ندارید، اشکالی ندارد که فقط به دانش‌آموز بگویید: «آفرین!» اگر دانش‌آموز بیش از یک نسخه ارسال کرده باشد، ممکن است بتوانید اشاره کنید که نسخه‌ی آخر از چه جهاتی بهتر شده است.

آیا باید تمرینی را مربیگری کنم که هرگز حل نکرده‌ام؟

گاهی نگاه کردن به راه‌حل یک دانش‌آموز شما را ترغیب می‌کند که خودتان تمرین را حل کنید، به‌ویژه اگر رویکرد به‌کاررفته در راه‌حل، تمرین را ساده‌تر نشان دهد از رویکردهایی که خودتان تا حالا در نظر گرفته‌اید. بعد از حل تمرین، اگر درخواست مربیگری که شما را ترغیب کرده دیگر در دسترس نباشد، دست‌کم برای دفعه‌ی بعد آماده‌اید.

آیا باید تمرینی را مربیگری کنم که حل کرده‌ام، اما به زبان دیگری حل کرده‌ام؟

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

آیا وقتی یک راه‌حل را دیدم، باید آن را مربیگری کنم؟

ممکن است به یک راه‌حل نگاه کنید و بفهمید به هر یک از دلایل متعدد نمی‌خواهید آن را مربیگری کنید، از جمله:

  • ممکن است دانش‌آموز سؤالی پرسیده باشد که پاسخش را نمی‌دانید.
  • ممکن است کد آن‌قدر پرحرف و/یا گیج‌کننده باشد که ندانید نقد را از کجا شروع کنید.
  • ممکن است کد نشان دهد که دانش‌آموز یک مبتدی تمام‌عیار است که به راهنمایی‌های بسیار ابتدایی نیاز دارد و شما نه وقتش را دارید نه حوصله‌اش را.
  • ممکن است کامنت دانش‌آموز طوری باشد که نشان دهد تعامل با او ممکن است ناخوشایند یا طاقت‌فرسا باشد.

هیچ‌چیز شما را ملزم نمی‌کند که اگر فکر می‌کنید درخواست مربیگری خاصی مناسب شما نیست، روی دکمه‌ی «شروع مربیگری» کلیک کنید.

اگر دانش‌آموز بعد از اینکه چند بار چیزی را توضیح دادم متوجه نشود چه؟

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

اگر دانش‌آموز درباره‌ی پیشنهادهایم حالت دفاعی بگیرد چطور پاسخ دهم؟

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

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

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

اشکالی ندارد که تا جایی که دانش‌آموز درست می‌گوید با او هم‌عقیده باشید، و اشکالی ندارد که تلاش کنید هر تصور غلط یا اغراقی را که دانش‌آموز ممکن است بیان کرده باشد تصحیح کنید.

آیا دانش‌آموز باید حرف آخر را بزند، حتی اگر فکر کنم اشتباه می‌کند؟

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

چطور بهترین شکل یک پیشنهاد را بنویسم؟

برای پیشنهاد چیزی به‌عنوان جایگزینی که لزوماً بهتر نیست، می‌توانید با «رویکرد دیگری می‌تواند این باشد که...» شروع کنید. برای مثال، «رویکرد دیگری می‌تواند استفاده از every همراه با includes باشد.»

Note

اگر ویژگی زبانی‌ای را معرفی می‌کنید که دانش‌آموز در راه‌حل از آن استفاده نکرده است (مانند every یا includes)، خوب است به مستندی پیوند بدهید که آن را توضیح می‌دهد.

راه دیگری برای شروع یک پیشنهاد می‌تواند «شاید در نظر بگیرید...» باشد. برای مثال، «شاید در نظر بگیرید به‌جای split() از نحوه‌ی نگارش spread استفاده کنید.» اگر قویاً احساس می‌کنید دانش‌آموز باید از جایگزینی استفاده کند، ممکن است «شاید» را حذف کنید و با «در نظر بگیرید...» شروع کنید. برای مثال، «در نظر بگیرید از یک آرگومان پیش‌فرض استفاده کنید.»

برای مجموعه‌ای از پیشنهادها ممکن است بخواهید نحوه‌ی معرفی هرکدام را متنوع کنید.

نقطه‌گلوله‌ها راه مؤثری برای فهرست کردن چیزهایی هستند که در یک راه‌حل دوست دارید. اما هنگام فهرست کردن پیشنهادها ممکن است دوستانه به نظر نرسند. ارائه‌ی پیشنهادها به شیوه‌ای خودمانی و گفت‌وگومحور ممکن است بررسی و پذیرش آن‌ها را برای دانش‌آموز آسان‌تر کند.

یک کلمه‌ای که هنگام ارائه‌ی پیشنهاد احتمالاً بهتر است به کار نرود «باید» است. برای مثال، «شما باید از یک آرگومان پیش‌فرض استفاده کنید.» استفاده از کلمه‌هایی مانند «باید» یا «حتماً باید» می‌تواند خودبرتربینانه به نظر برسد.

آیا باید قالب‌بندی، کامنت‌گذاری و قواعد نام‌گذاری را الزامی کنم؟

مربیان احتمالاً درباره‌ی اینکه چه زمانی و با چه شدتی مسائلی مانند قالب‌بندی کد، کامنت‌گذاری و قواعد نام‌گذاری را مطرح کنند اختلاف نظر دارند. از یک سو، ممکن است بخواهید دانش‌آموز را از همان ابتدا با تمرین‌هایی مانند Two Fer به فکر چنین چیزهایی بیندازید، پیش از آنکه عادت‌های بد در او شکل بگیرد. یا ممکن است نخواهید یک مبتدی را با همه‌ی ملاحظات مربوط به درستی و مناسب بودن بترسانید. از سوی دیگر، دانش‌آموزانی که تمرین‌های پیشرفته‌تر را انجام می‌دهند ممکن است قواعد را از قبل بدانند اما ترجیح دهند هنگام تمرکز روی کار فعلی نادیده‌شان بگیرند. ممکن است تداوم تمرکز روی قواعد را خرده‌گیری آزاردهنده ببینند. اگر زبانی یک یا چند قالب‌بند یا لینتر داشته باشد، خوب است تمرینی انتخاب کنید که آن‌ها را در آن معرفی کنید. در غیر این صورت، اگر نقض قاعده‌ی خاصی واقعاً بد باشد، ممکن است بخواهید هر جا رخ دهد به آن اشاره کنید. جایی که ممکن است مربیان با هم اختلاف داشته باشند این است که چه چیزی «واقعاً بد» به شمار می‌آید.