תרגום של קטע ממאמר מאת אלכסנדר פטקוב, מייסד קהילת העזרה למפתחים ג'וניור. "אבי טיפוס, אובייקטים, אלגוריתמים... וכל השלבים הקטנים האלה בין השלבים ואין לך מושג איך ליישם אותם... ברר, תחשוב כמו מתכנת." מפתחים חדשים חשים לעתים קרובות לחץ רב במהלך העבודה הראשונה שלהם. לכן, אם תיתן להם תרגיל פשוט להשלמת המשפט "הפעם האחרונה שכתבתי קוד..." בין שתי אפשרויות התשובה:
בואו ננסה לחפור לעומק כדי להבין למה זה קורה. במהלך השנים האחרונות, פגשתי מפתחים שואפים רבים אשר:
אם תסתכלו היטב על הציטוטים האלה, תבחינו במשהו חשוב: המאבק הפנימי של האנשים האלה לא נובע מהעובדה שהם לא פעילים או לא עושים מספיק מאמצים. זה לא בגלל שיש להם תוכנית אימונים גרועה או חוסר משמעת. למעשה, חסר להם ניסיון מעשי. זה נראה קושי שניתן להתגבר עליו. עם זאת, רבים מהם היו מוכנים לוותר ולוותר על תכנות.
אבוי, זה קורה לעתים רחוקות. גם מי שמתיימר לאהוב כתיבת קוד מבלים חלק ניכר מזמנם בעבודה משעממת ומונוטונית שלא תמיד עוברת חלק. במשרד המתכנתים נשמעת שפה מגונה לא פחות מאשר במרכז שירות לרכב. בִּיוֹשֶׁר! אין שום דבר רע בלפעמים אתה פשוט שונא תכנות. כמובן, השאלה "אולי זה בכלל לא בשבילי?" לעתים קרובות עולה במוחו של מתכנת מתחיל כאשר הוא מרגיש לחץ על עצמו, מקבל עומסים כבדים והכל משתבש לחלוטין כפי שהיינו רוצים. זה נורמלי, תאמין לי. וכן, תכנות זה בשבילך, אין ספק בכך. אם אתה קורא את זה, זה אומר שאכפת לך. ואם אכפת לך, אז הכל בהחלט יסתדר.
בואו נסתכל על הדוגמה הזו. אם אתה מתנסה ב-CSS, עליך להבין שהוא נועד להחיל סגנונות על רכיבי HTML. אתה יכול ליצור כפתור שיש לו גבולות, צבע, צל או אנימציה. אתה לא יכול לדעת מה יקרה כשתלחץ על כפתור (אתה צריך JavaScript בשביל זה). לכן, אם אתה צריך "להחיות" את התמונה כשאתה לוחץ על כפתור:
- הכל הלך כמו שעון . התרווחתי, השקתי את העורך שלי וצללתי לעולם המופלא של אפסים ואחדים. שלוש שעות חלפו במהירות!
- זה היה כל כך משעמם . בקושי הצלחתי להביא את עצמי לשבת ולקוד. שגיאות צצו כל הזמן, משהו השתבש. כן, עדיין לא הבנתי הכל. 30 הדקות האלה הרגישו כמו שלוש שעות!
- לאחרונה התחלתי לתכנת ומרגישה אבוד לגמרי.
- תקועים בשלב ההיכרות וחשים אי נוחות בכל פעם שאתם צריכים לקודד לבד, ללא כל פיקוח חיצוני.
- ברור שהם היו מוכשרים, אבל הם נכשלו בראיונות או לא קיבלו הזמנות אליהם בכלל.
מהי נקודת המפנה?
הייתי צריך להשקיע זמן רב בלימוד הצרכים והצרכים של מתכנתים חדשים, כי זה מסכם את מה שאני עושה בקצרה. כדי להבין הכל טוב יותר, הייתי צריך לדבר עם עמיתים בחברה שלי, לערוך מחקר בקבוצות פייסבוק, פורומים, אתרי שאלות ותשובות, ללמוד שרשורי Reddit ענקיים ואפילו לסקור כמה קהילות קטנות. וזה מה שגילינו: "הרגשתי שפשוט העתקתי את מה שהיה בסרטון וזהו"; "חיפשתי בגוגל דוגמאות קיימות שכבר נכתבו על ידי מישהו. במקביל, הרגשתי כמו ילד בן 3 שפותר חידה מתמטית. זה כל כך מעצבן"; "אני פשוט לא מסוגל לחשוב כמו מתכנת"; הנה האהוב עלי: "הנה מה שלמדתי בזמן שלמדתי לתכנת: 99% מהמקרים אתה מרגיש מבולבל לחלוטין ולא יעיל. אבל ברגע שאתה מצליח לגרום למשהו לעבוד כמו שצריך - זהו, התחושה הזו - קרה קסם!"שני מיתוסים על הבעיות של מתכנתים מתחילים
גיליתי שבבסיסן של הרבה מהבעיות שעומדות בפני מתכנתים חדשים עומדות שני מיתוסים פופולריים על היותם מפתח תוכנה. אני רוצה להפריך את המיתוסים האלה עכשיו כדי שמתכנתים צעירים יוכלו להימנע מעומס מיותר.מיתוס מס' 1. אתה צריך לאהוב תכנות, אם אתה לא אוהב את זה, זה לא בשבילך.
באיזו תדירות אני שומע דבר כזה ממפתחים צעירים! וכן, אני מאוד לא מסכים עם האמירה הזו. אתה לא צריך לאהוב תכנות כדי להפוך למפתח. למעשה, כ-50% מהמפתחים המקצועיים ממש שונאים את זה לפעמים. אני אומר את זה על סמך תצפיות אישיות. כמובן, זה נהדר אם ניתן לפתור את הבעיה בקלות ובפשטות, באלגנטיות, כביכול. זה נהדר כשיש לך קוד מעולה, נקי בדוק שיכול לפתור בעיות של אנשים. אבל אבוי, הישגים כאלה הם לא מה שיתפוס 100% מזמנך... אפילו לא קרוב. חיי היומיום של מתכנת מלאים בדרך כלל במחשבות כמו: "כמה נהדר שהצלחתי ליישם את דפוס הזרקת התלות, לנתק בחינניות מחלקות, ובכך להגדיל את יכולת התמיכה של הקוד שלי. אני מעולה!"מיתוס מס' 2. יש כל כך הרבה שאני לא יודע, אני לעולם לא אלמד את זה!
זוהי מחשבה נפוצה נוספת (אולי אפילו יותר פופולרית מהמיתוס הראשון). הרבה אנשים מתלוננים על זה. ואני בהחלט מבין מה עומד מאחורי זה. תחום הפעילות שלנו הוא כל כך רחב שככל שאתה מעמיק יותר, אתה מבין כמה אתה עדיין לא יודע. אני גם מרגיש רע אפילו לחשוב על זה. זה מאוד מדכא! החדשות הטובות הן שלא צריך לדעת הכל. מספיק לדעת איך לגלות את מה שאתה לא יודע. לעת עתה, ודא שיש לך את העקרונות הבסיסיים של מה שאתה עובד איתו.- חייבת להיות לך תמונה ורכיבי כפתור (HTML);
- לאחר מכן תוכל להתאים אישית את האנימציה עבור מחלקה ספציפית (CSS);
- ותוכלו להוסיף מחלקה לתמונה בלחיצה על הכפתור (JavaScript).
GO TO FULL VERSION