הנדסה תוכנה ותכנות
כיצד לתרגל בעיות קידוד עם Per או Mentor
Table of Contents
מדוע תרגול משותף מבטיח צמיחה
עבודה באמצעות אתגרים קידוד לבד יכולה להיות יעילה, אבל הוספת עמיתים או מנטור לתהליך הופכת את החוויה.You להשיג לוח קול עבור רעיונות, זוג עיניים שנייה של פיזור, ומקור מוטיבציה כאשר אתה מרגיש תקוע.ה הכוח האמיתי הוא ב-FLT:0interactive משוב לולאה FLT:1 - תיקונים ופתרונות חלופיים כי לא יכול לשכפל את הצוותים באופן קבוע כדי ליצור שיתוף פעולה עם תכנות מהיר יותר מאשר תוכניות עבודה.
יתרון עמוק Dive: מן התיאוריה ל- Tangible Outcomes
משככי עיניים: מאיץ הלמידה
כאשר אתה קוד סולו, אתה יכול לבלות שעות רודף באג או יישום פתרון תת-אופטימי מבלי להבין אותו.עמית או מורה יכול לזהות חוסר יעילות או שגיאות תוך שניות, להפחית באופן דרסטי את הזמן בין ביצוע טעות ולהבין מדוע זה קרה.לאה משוב מהיר זה הוא בעל ערך במיוחד עבור מושגים כגון מורכבות זמן, טיפול קצה, וקודשות.
שיתוף ידע: חשיפה לגישות שונות
לכל מתכנת יש סגנון ייחודי לפתרון בעיות.שיתוף עם מישהו אחר חושף אותך לטכניקות שאולי מעולם לא חשבת.אולי השותף שלך משתמש בטיול אלגנטי בזמן שאתה נשענ על ההצתה, או שהם יודעים טריק ספציפי שפה המפשט את הפתרון.עם הזמן, אתה בונה ערכת כלים רחבה יותר של אסטרטגיות. A, בפרט, יכול לשתף את שיטות התעשייה הטובות ביותר, כגון כתיבה נקייה עם שמות משתנים, ביעילות, באמצעות יישום יעיל של שיטות הפעלה של שימוש במקרים של פתרון יעיל יותר, או ניתוח יעיל יותר מאשר פתרון יעיל של פתרון יעיל של פתרון יעיל של שימוש במקרים של פתרון יעיל של פתרון יעיל.
מוטיבציה וחשבונאות: The Consistency Factor
למידה לקוד היא מרתון, ומוטיבציה טבעית של נקודות וזרימות.מפגשים רגילים עם עמית או מורה יוצרים קצב קבוע ששומר עליך על המסלול.כאשר אתה יודע שמישהו מצפה לך להופיע ולדבר על בעיה, אתה הרבה פחות סביר לדלג על תרגול.FLT:0) שותפים פסיכולוגיה בלתי נשלטת 1 לעזור לך לדחוף דרך נושאים קשים.
סימולציה של העולם האמיתי: הכנת עבודה משותפת
בהגדרות מקצועיות, לעתים רחוקות קוד בוואקום.אתה תשתף בסקירות קוד, פגישות תכנות זוגיות, וצוות debugging. Practicing עם עמית או מנטור מדמה את התרחישים האלה.אתה לומד איך לבטא את החשיבה שלך, לקבל ביקורת קונסטרוקטיבית, ולנהל החלטות עיצוב.מיומנויות רכות אלה הן רק חשובות כמו יכולת טכנית.מעסיקים מדרגים באופן עקבי תקשורת ועבודת צוות בין התכונות המובילות שהם מחפשים בפועל על ידי תרגול, אתה מקבל את הכישורים שלך.
קביעת השלב ל-Competive Sessions
Define Your "Why" ו-Goals
לפני הפגישה הראשונה שלך, יש דיון קצר כדי להתאים ציפיות.האם אתה מכין לראיון מסוים (למשל, סגנון FAANG), מנסה לשלוט במבנה נתונים מסוים, או לעבוד דרך קורס מאתגר כמו CS50? לרשום את המטרות שלך - הן לטווח קצר (למשל, לפתור שלוש בעיות בינונית-בינוניות השבוע) וארוכות טווח ארוך (למשל, להרגיש עם אלגוריתמים בטוחים ומניעה של 1F) כדי להתאים את המטרות של חודש 1.
בחרו את הבעיות הנכונות ביחד
(ה) בעיות נבחרות מעט מעל רמת המיומנות הנוכחית שלך - המקום המתוק שבו אתה מאתגר אך לא מוצפת, השתמש בתערובת של נושאים כדי להבטיח צמיחה מאוזנת: מערךים, מחרוזת, עצים, גרפים, תכנות דינמי ועיצוב מערכת (אם מתאים) פלטפורמות כמו FLT:0LeetcodeFLT:1, FLT:2 HackernkFLT3, ו-FLT) מציעות לסקרנות טובה, אם הוא מציע לפעמים, אם הוא מציע בעיות LT5, אם הוא מציעות, ו-A.
קביעת כללים ל תקשורת
שיתוף פעולה יעיל דורש פרוטוקולי תקשורת ברורים.להחליט אם תשתמשו בסרטון, אודיו בלבד או צ'אט טקסט.לשיתוף מסך, בחרו עורך או IDE כי שניהם נוח עם (VS Code עם Live Share הוא בחירה פופולרית) מסכים על תפקיד "נהג-navigator": קוד הנהג בעוד המנחה צופה, שאלות, מציע אסטרטגיות חלופיות, אתה יכול גם לעבוד באופן עצמאי על תפקיד של 15 דקות לאחר מכן, כדי להחליף את תפקיד בטוח (F) כדי להחליף את תפקיד זה, כלומר, כלומר, אם אתה יכול להחליף את תפקיד זה, אם אתה יכול להיות מעורבבחירות של 15 דקות פעולה בנפרד, אם אתה יכול להחליף את תפקיד זה, אם אתה יכול להיות מעורב: 1.101 דקות.
פתיחת מושב אחד-Hour Practice
שלב 1: בעיות הבנה ותכנון (10 דקות)
[קרא את הבעיה הצהרה בקול רם: שני המשתתפים צריכים לנסח זאת במילים שלהם כדי להבטיח הבנה.דון מגבלות קלט אפשריות, מקרים קצה (מערך ריק, מספרים שליליים, אלמנט יחיד), ואת פורמט הפלט הצפוי. Sketch גישה ברמה גבוהה על נייר או לוח לבן לפני נגיעה במקלדת.שלב זה קריטי כי מועמדים רבים נכשלים ראיונות לא כי הם לא יכולים קוד, אלא כי הם ממהרים ליישום ללא תוכנית ברורה: כיצד ניתן להשתמש בחלל זמן קצר יותר?
שלב 2: יישום (25 דקות)
עכשיו להתחיל לקידוד.הנהג הוא הפתרון בעוד שהנווט שומר על העין על התמונה הגדולה.תפקידו של הניווט הוא לצפות בשגיאות מסוג אחד, בדיקות חסרות, או אי-קו-ציות לוגיקה, הם לא צריכים לתקן את כל מקרי הטייפון הקטנים - הנהג יכול לעתים קרובות לתפוס את אלה.
שלב 3: סקירה וספק (10 דקות)
ברגע שפתרון עבודה הוא במקום, צעד אחורה וביקורת על זה, האם זה מטפל בכל המקרים קצה? האם הקוד קורא? האם זה יכול להיות יעיל יותר? לדון גישות חלופיות.לדוגמה, אם השתמשת בטיול, האם אותו תוצאה ניתן להשיג באופן הדרגתי?אם השתמשת במפה, האם ייתכן ששלב זה מספיק איתן למידה, כי אתה ניתוח תהליך קבלת ההחלטות בעל ערך.
שלב 4: הרהורים וצעדים הבאים (5 דקות)
סיום המפגש על ידי סיכוך מה כל אדם למד.מה היה החלק המאתגר ביותר? באיזו טכניקה תנסה אחרת בפעם הבאה?קבעו יעד קונקרטי לפגישה הבאה: לדוגמה, "בפעם הבאה אני רוצה לפתור בעיית עץ בינארית בדרג בינוני תוך פחות מ-30 דקות" זה שומר על הלמידה רציפה ומכוונת תודה לבן הזוג שלך על הזמן והתובנות שלהם - חיזוקים חיוביים מחזקים את שיתוף הפעולה.
טכניקות מתקדמות ללמידה עמוקה יותר
פתרונות הנדסה הפוכה
במקום תמיד לקידוד מאפס, לפעמים לבחור פתרון באיכות גבוהה מפלטפורמה כמו פורומים של ליקטקוד ולבטל אותו יחד. Trace דרך כל קו, להסביר מדוע המחבר עשה בחירות ספציפיות, ולדון כיצד תוכל להתאים את הגישה לבעיה דומה.טכניקה זו בונה הכרה דפוס מהר יותר מאשר ניסוי וטרור בלבד.
אתגר ה-Whiteboard-Only Challenge
פעם בשבוע, לערוך ישיבה ללא כל מחשב - רק לוח לבן או גיליון של נייר. לכתוב פסאודו-קוד, לצייר דיאגרמות, ולדבר דרך ההיגיון.זה מדמה את מסך הטלפון או על דפי לוח לבן באתר משותף בחברות טכנולוגיה רבות.זה מכריח אותך לחשוב על מבנה לפני מס סינטקס, שהוא מיומנות חשובה.בנוסף, מבטל את הגולגולת של אוטומטי-compation ו-Matchr שגיאות, כל כך רק כדי לוודא את השגיאה סוג, לאחר כמה דקות.
ללמד אחד את השני
אחת הדרכים היעילות ביותר לשלוט בנושא היא ללמד אותו.קח להסביר את הרעיון אחד לשני - לדוגמה, מפגש אחד שאתה מלמד טיול, הבא שהעמית שלך מלמד memoization.FLT:0Teaching כוחות אתה לארגן את הידע שלך veFLT 1 ולהמלא פערים שלא ידעת שיש לך גם להשתמש בטכניקה "Feynman": להסביר מושג בשפה פשוטה אם אתה צריך עוד לפני הספירה.
מלכודות נפוצות וכיצד להימנע מהם
לשחרר אדם אחד
בזוגיות מסוימות, אדם אחד (לעתים קרובות יותר מנוסה) בסופו של דבר עושה את רוב הדיבורים והטיפוס.זה מביס את מטרת שיתוף הפעולה.כדי להימנע מכך, לאכוף סיבובי תפקידים נוקשים: להגדיר שעון במשך 10-15 דקות, ואז לעבור הנהג והנווט.הנווט צריך להיות עודד להפריע להבהיר שאלות.
שלב ניתוח הבעיה
זה מפתה לקפוץ ישר לתוך coding כאשר בעיה נראה מוכר.אבל אפילו מפתחים מנוסים ליהנות משלב תכנון מכוון.דלוק זה יכול להוביל לחסר מקרה קצה קריטי או בחירת מבנה הנתונים הלא נכון. לעשות את זה כלל: לא הקלדה עד שאתה תיאר את הגישה וזיהה לפחות שלושה מקרים קצה. זה הרגל ישמש אותך היטב בראיונות ובפרויקטים אמיתיים.
over-Reliance on חיצונית
כאשר נתקע, קל להציץ בפתרון או לבקש תשובה ישירה.התהליך הקצר הזה, במקום זאת, להשתמש ברמזים מובנה.לדוגמה, לשאול את העמית שלך: "האם אתה יכול לתת לי רמז על איזה מבנה נתונים להשתמש?", ולא "איך אני פותר את זה באופן דומה, אם אתה מנטור, מתנגד לדחף לספק את התשובה המלאה עם שאלות: "מה קורה אם עדיין יש לנו גישה עצמאית?"
שיקולים מיוחדים לPairing
שיתופי פעולה רבים מתרחשים באינטרנט, במיוחד כאשר מציאת עמית מקומי או מנטור אינו אפשרי.שימוש בכלים המיועדים לתכנות זוג מרחוק: VS Code Live Share, Tuple, או אפילו שיתוף מסך פשוט עם זום.וודא שלמשתתפים יש חיבור אינטרנט יציב וסביבה שקטה (FLT:0Clear אודיו הוא יותר חשוב מ- VideoFLT:1 - שימוש במיקרופון טוב ו- Headset כדי למזער את כלי הבחינה תמידית שלך כדי למנוע דוקדק, כדי לעקוב אחר בעיות הפעלה (Ric) עבור לוח זמנים משותף (Ric) כדי לעקוב אחר לוח זמנים, כלומר, כלומר, אם אתה יכול לעקוב אחר לוח זמנים, כלומר, אם אתה יכול לעקוב אחר דוקדק, אם אתה יכול לעקוב אחר בעיות הפעלה מחדש, אם אתה יכול לעקוב אחר דוקדק, אם אתה יכול לעקוב אחר דוקדק, או מעקב אחר בעיות הפעלה מחדש, אם אתה יכול לעקוב אחר דוקדק, אם אתה יכול לעקוב אחר דוקדק, אם אתה יכול לעקוב אחר בעיות הפעלה מחדש, אם אתה יכול לעקוב אחר לוח זמנים, אם אתה יכול לעקוב אחר לוח זמנים, אם אתה יכול לעקוב אחר לוח זמנים, אם אתה יכול לעקוב אחר דוקדק, אם אתה יכול לעקוב אחר דוקדק, אם אתה יכול לעקוב אחר בעיות הפעלה מחדש, אם אתה יכול לעקוב אחר
מציאת הימין או המטורף
רשתות: קהילות מקומיות ואינטרנטיות
חפש את ההתאמות (באמצעות Meetup.com או Eventbrite), קבוצות בוגרי מוסט, או קהילות מקוונות כמו FLT:0 CodementorcioFLT:1 או r / למידה programming subreddit. Pair up עם מישהו שרמת המיומנות שלו שווה בערך לשלך - זה יוצר דינמי מאוזן שבו שניהם לומדים יחד.
פלטפורמות מניטור ותכניות
אם אתה מעדיף הדרכה ממפתח מנוסה, פלטפורמות כמו FLT:0Coding CoachFLT 1 או Frontend Mentor לעתים קרובות זוג מתחילים עם אנשי מקצוע מנוסים.חברות רבות יש תוכניות הדרכה פנימית; אם אתה עובד כמו מפתח זוטר, לשאול את המנהל שלך להגדיר פגישה שבועית עם מהנדס בכיר.
יצירת הקשר הראשון
להגיע החוצה יכול להיות מאיים, אבל הודעה מבוססת היטב מגבירה את הסיכויים שלך.מדינה שאתה, מה אתה מנסה להשיג (למשל, "אני מתכוננ לראיונות הנדסיים תוכנה בחברות בינוניות"), ומדוע בחרת את אותו אדם (למשל, "ראיתי את הפתרון שלך לבעיה Dijkstra ואהבתי את ההסבר") נניח צעד קונקרטי ראשון: 30 דקות כדי להראות לך טוב אם אתה יכול להראות את זה טוב.
קידום התקדמות ושילוב של התרגול שלך
שמור יומן ריצה של בעיות שפתרנו יחד, וציין כי זה היה קשה לאחר חודש, לבדוק את הגיטו לזהות דפוסים: האם אתה נאבק באופן עקבי עם טיול?האם השותף שלך חלש בניתוח מורכבות בזמן? השתמש תובנות אלה כדי להתאים את נושאי הפגישה שלך.FLT:0Set אבני דרך קבועות כמו "פתור 10 בעיות בינוניות ללא התבוננות בסימנים" או "לזכור" את הראיונות שלך כמו לעג, כמו ריאיון קבוע, כמו ריאיון עם יכולת שיתוף פעולה, כמו לעג, הוא מרגיש לעג, כמו ריאיון עם ריאיון קבוע.
לקריאה נוספת על טכניקות תכנות יעילות, המשאב הקלאסי:0 "Pair Programming Illuminated"RuveFLT:1 מספק צלילה עמוקה.בנוסף, סדרת "קוד נקי" מאת רוברט C. Martin מציעה עקרונות החלים ישירות במהלך שלב הסקירה של הקוד של המפגשים שלך.
מסקנה: להפוך את התרגול לקדמה
תרגול קוהרטיבי הוא יותר מסתם טכניקת מחקר – זה מכפיל לצמיחה שלכם כמפתח. על ידי הצבת מטרות ברורות, בחירת בעיות מתאימות, להורות מפגשים בכוונה, ותקשורת ביעילות, אתם הופכים מאמצים מבודדים לקדמה משותפת.אם אתם מתחילים לחפש הדרכה או מפתח מנוסה רוצה להעמיק את ההבנה שלכם, לעבוד עם עמית או מדריכים את המסע שלכם.