7 במאי 2022

[עוד קצת] טיפים לאבודים בתחילת הדרך...

אני מאזין קבוע של פודקסטים בנושאי פיתוח ואחת לתקופה, אני שומע פרק שמוקדש כולו לטובת ג'וניורים, שזה מבורך כמובן. אבל לעיתים קרובות אני שומע שם עצות טובות שצולות לי את האוזניים. 

אז בתור תגובה - עשיתי את מה שאני יודע לעשות - הכנתי עוד פוסט.

"כל ההכללות אינן נכונות."

סתם משפט פרדוקסלי שאני אוהב לומר.

 לא כל התחומים שווים - לא כל המפתחים שווים, לא כל החברות שוות ולא כל התקופות שוות. 

מיתוס

לכל מפתח שמכבד את עצמו חובה שיהיה לו חשבון פעיל ב-GitHub.

הסבר

יחסית קל לביצוע, אבל ממש לא חובה. אני מכיר מגייסים שיבדקו את חשבון ה-GitHub שלכםן וכאלה שזה לא מעניין אותם בכלל. אם אין לכן חשבון המגייס יכול לבקש לשלוח לו קוד של פרויקט במייל ב-ZIP.

אם הוא בוחר בגלל הפריט הטכני הזה לא לתת לכם צ'אנס, הוא כנראה לא באמת מחפש מועמדים באופן רציני וכנראה שאתם לא רוצים מנהל כזה.

מיתוס

קורות-החיים שלכם חייבים להיות (בחר): 

  • כתובים ב-PDF
  • כתובים באנגלית
  • מעוצבים ע"י תוכנה חיצונית
  • כתובים לפי סדר XYZ
  • צריכים לעבור הגהה מקצועית

הסבר

יש מקומות שלא רוצים קו"ח ב-PDF אלא רק ב-DOC, יש מקומות שלא משנה איך נראים הקו"ח שלכם - תצטרכו למלא שאלון כאורך הגלות ובאנגלית על הניסיון שלכם לפני שאתם מגישים מועמדות ויש מקומות שעין-אדם בכלל לא קוראת את הקו"ח שלכם.

בכלל, בעידן הלינקדין - עולה שאלה האם בכלל צריך קו"ח? אני יכול להעיד שאני קיבלתי (ועדיין מקבל) כל שבוע מספר פניות לחשבון הלינקדין שלי מכל הסוגים עם הצעה למשרה רק על בסיס קריאה של הפרופיל שלי. חלקם מבקשים קו"ח כדי להיות רשמיים וחלקם לא. בכל מקרה, קו"ח אמור לעשות את אפקט ה-WOW למגייס ולגרום לו ליצור עמכם קשר. אם הוא כבר עשה את זה דרך לינקדין, אז למה לטרוח על קו"ח ?

לגבי קו"ח באנגלית - אני חושב שבכל השנים שאני בתעשייה, קיבלתי והגשתי הצעות לעשרות או מאות חברות. מתוכן, אני זוכר רק שתיים שביקשו בנוסף לקו"ח בעברית שלי גם באנגלית וזה היה מסיבות טכניות שמי שקורא וממיין את המשרות הוא דובר אנגלית. בפעם הראשונה טרחתי ושכתבתי את הקו"ח שלי לאנגלית. בפעם השנייה, פשוט הפניתי את החברה לפרופיל הלינקדין שלי שכתוב באנגלית וזה הספיק.

שורה תחתונה - כן צריך לעמול על קו"ח בפורמט נאה. כן צריך שייראה מקצועי ומכבד - אסור שיהיו שגיאות כתיב. אם עברית היא לא שפת-האם שלכם, השתמשו בחבר או חברה עם עברית שפת-אם ברמה גבוהה שיעשו לכם הגהה.

מיתוס

כל מפתח בהייטק צריך ללמוד XYZ ולהתחיל במסלול A ומשם להתקדם ל-B. לא / כן באמצעות קורסים וממש לא / כן דרך Bootcamps וכו'

הסבר

אני חושב שכבר הסברתי בעבר שההגדרה "מפתח" מוגדרת בצורה רופפת. ישנם סוגים שונים של מפתחים: מפתחי low-level, מפתחי אפליקציות, מפתחי Mobile ומפתחי Web וכל אחד מהתחומים שציינתי יכול להתפצל.

מפתח שכל מה שמעניין אותו זה עיצוב של אתרים הוא לא בהכרח אותו מפתח שרוצה ללמוד לפתח Clients, מפתח שכל מה שהוא רוצה זה לפתח ב-C, הוא לא בהכרח אותו מפתח שרוצה ללמוד Full Stack. 

לכל כלל שתשמעו (כולל למה שאמרתי) יש יוצאי דופן.

המטרה היא לא להתרשם מהצלחה פנומנלית של זה ש"לא למד כלום, עבד רק ברפת בצעירותו והשלים הכל אוטו-דידקט, התקדם לניהול תוך שנה, כיום ממנכ"ל את הסטארטאפ הראשון שלו והוא מחלק המלצות לג'וניורים לפני שיבואו לעבוד אצלו".

אנשים כאלה לרוב מגיעים לפודקסטים ולכתבות בעיתון ומתחילים לפזר הנחיות חסרות כיסוי ואחריות כולל המשפט המפוצץ הטריביאלי: "אם אני יכול אז כל אחד יכול". ברור.

מעטים מצליחים בקלות, הרוב עובד קשה: מנסה להתקבל למדמ"ח או שעושה הסבה ב-Bootcamp וכדו'. אלה החדשות הרעות. החדשות הטובות הן שהשוק מגוון מספיק כדי שגם את וגם אתה תוכלו למצוא משהו שיהלום אתכם ולא רק בהכרח "יביא מלא כסף", בנוסף כמובן לעובדה שיש מספיק ידע זמין כיום לכולם.

מיתוס

למפתחים בגילאי 40/45/50 מפוטרים / אין עבודה בהייטק / צריכים לעבור לתפקידי ניהול

הסבר

אחת ולתמיד, הנה הצהרה ותבדקו אותי: יש מפתחים בהייטק בגילאי 20,30,40,50 וכן גם כמה ב-60 פלוס. יש כל כך הרבה חברות והדרישה כבר כמה שנים נמצאת בשמיים עבור מפתחים טובים (שימו לב: מפתחים טובים!) עבור משרות פיתוח.

כן - חברות הייטק קטנות וצעירות במרכז ת"א יכילו סטטיסטית הרבה יותר צעירים בגילאי 20 ופחות "זקנים" בגילאי 40-50 אבל זה לא אומר שהם עושות אפלייה בכוונה. כן- את הגילאים המבוגרים אפשר למצוא בעיקר בחברות הגדולות (Enterprise) אבל זה לא אומר כלום. 

שורה תחתונה - אם תהיו טובים ותמשיכו ללמוד כל הזמן, אני מבטיח לכם שלאף מעסיק שפוי (כן יש גזענים, מורעלי צה"ל ושוביניסטים בקרב המגייסים אבל הם לא הרוב) לא יהיה אכפת הגיל שלכם, צבע העור שלכם או האמונות הדתיות שלכם ומבחינתו אתם יכולים גם לשבת בבית בתחתונים ולקודד - כל עוד, וזו השורה החשובה, אתם מביאים תוצר איכותי.

אז למה הנושא הזה ממשיך לפמפם בכתבות ומבעבע בטוקבקים ? כי הוא לא תלוש לחלוטין מהמציאות. זה לא שיש מיתוס שלאנשים ג'ינג'ים שמנים דוברי אסטונית יש אפלייה. יש משהו שמתדלק את המיתוס הזה וחשוב שתבינו אותו לא משנה בני כמה אתם.

ישנם אנשים מסויימים בתעשייה (ויצא לי לעבוד עם כמה) שבאים בגישה של "למדתי תואר-ראשון לפני 20 שנה. עבדתי קשה בשבילו וזה מספיק לי. מעכשיו ועד הפנסיה אני רוצה לגרוף את התמורה וזהו." הם לא לומדים דברים חדשים, הם עקשנים ודעתנים וחושבים שהם חכמים יותר ממה שהם באופן כללי, הם לא אוהבים שמתקנים או שמבקרים אותם ובגלל הגישה שלהם, הם גם לא משתפרים מקצועית או אישיותית.
אנשים כאלה בזכות הרזומה שלהם מצליחים להתקבל בלי בעיה יחסית אבל את הנזק התדמיתי שלהם למפתחים מבוגרים הם עושים.

חלק מהם מפוטרים ואז הם מעלים פוסטים בלינקדין ובפייסבוק ומגיבים בטוקבקים ונוצר רושם שיש פה אפלייה. אבל היא לא בהכרח ניראית כך.

ברור שאין הגינות ב-100% בשוק אבל זה שפסלו אתכם בראיון, לא בהכרח קשור לגיל שלכם. יכול להיות שהגישה שלכם טעונה שיפור וכשהמעסיק רואה אתכם הוא גם רואה צרות בהמשך. זה כמובן משהו שאפשר לשנות ולעבוד עליו.

ונקודה למחשבה: אפלייה על רקע גיל תופסת כותרות בעיקר כי היא משותפת לכולם וצוברת תהודה אבל ישנה אפלייה עבור אוכלוסיות רבות אחרות כגון: נשים, חרדים/יות, ערבים/יות, אתיופים/יות ועוד.. והרבה מהם לא חושבים להתמרמר אלא מפשילים מרפקים ועובדים קשה בראיונות ומנסים להשתפר. 

מיתוס

היום כבר אי אפשר לעשות הסבה אחרי גיל 30/40/50

הסבר

הגיל הוא פונקציה של קושי. ככל שהגיל עולה, כך לרוב האנשים קשה ללמוד דברים חדשים. זה לא משנה אם בגיל 20 למדת דברים מאד מסובכים, יהיה לך קשה להיכנס לתחום חדש וענק כמו פיתוח ולהתחיל ללמוד טונות של דברים חדשים.

כן, ככל שתהיה מבוגר יותר - יתקשו לקבל את העובדה שמהיום תהיה מפתח מצטיין במיוחד כאשר אתה מחפש את המשרה הראשונה שלך בתחום. אבל - זה לא אומר שאתה צריך להרים ידיים.

אתה צריך הרבה תושיה ונחישות. למשל, להתחיל לתרום לקוד פתוח כלשהו כדי לקבל טעימה משיתוף פעולה עם מפתחים אחרים, לבנות פרויקטים הולכים וגדלים עם הזמן ולהציג אותם ב-GitHub ולעשות להם Deploy לענן, להציע את עצמך ב-Fiverr בשכר נמוך ולהתחיל ממשימות פשוטות כדי לבנות ניסיון אמיתי מול לקוח. כל הצלחה כזו תתווסף לרזומה שלך ועם הזמן מעסיקים לא יוכלו להתעלם ממך.

מיתוס

בשביל להיות מפתח, חייבים להיות (בחר): טובים במתימטיקה / בעלי תואר ראשון מהטכניון / מ-8200 / להיות טיפוס מסוג X 

הסבר

כמו שכתבתי למעלה, ישנו גיוון מספיק גדול בתפקידי פיתוח. בנוסף, תפקיד שנתפס בעיני רבים כמפתח הוא לא בהכרח מפתח פר-אקסלנס. 

כבר מזמן אפשר להקים אתר ללקוחות בעזרת WordPress בלי לכתוב שורת קוד אחת. כמובן שזה לא הופך אותך למפתח Full Stack, אבל אתה יכול להציע שירות של הקמת אתרים ללקוחות ולהיות טוב בזה בלי להתעסק עם תכנות אלא להתמקד בעיצוב שהוא זה שחשוב בעיקר.
בשביל הלקוחות אתה מפתח Web כיוון שאתה מספק להם פתרון מלא ובזול יחסית במקום מפתח FullStack שיגרוף מהם הון ובסוף העיצוב שלו לא ייראה להם והאתר ייפרץ אחרי שבוע.

בנוסף, אפשר ללמוד על עיצוב אתרים דרך CSS ולעשות עם זה דברים פסיכיים אפילו בלי JavaScript ולהתמחות בזה.

מי שנכנס ל-JS ולתחום ה-Clients בכלל יגלה שם ים הזדמנויות נפלאות להתפתח, לעצב וללמוד עולם שלם בלי בכלל להגיע לתכנות קלאסי מהסוג ה-Hard Core. 

בנוסף, ישנם תפקידי פיתוח של Backend שאינם מקושרים ישירות ל-Production. הדרישות לתפקידים כאלה לרוב סלחניות יותר.

וזה בלי להזכיר תפקידי DevOPs ומפתחי אוטומציה שיכולים לספק עניין ואתגר להרבה אנשים.

אז איפה כן צריך להבין פיתוח ברמה גבוהה ?

אם רוצים לעבוד מול מערכות-הפעלה שונות (Linux, Window, Android) - בפיתוח של אפליקציות שונות, אם רוצים לעבוד עם טכנולגיות תקשורת (TCP/IP), או Big Data ,  או לפתח מערכת High Availability שמשרתת הרבה מאוד משתמשים שצריכה לעמוד בעומסים, שצריכה להיות עמידה לפריצות ונקייה מבעיות Security, או שרוצים לפתח קוד לחומרה ועוד ועוד.

כל הדברים האלה הם חיה שונה לגמרי ודורשת הכנות, ידע וניסיון שלא בהכרח מתאימים לכל אחד.

לסיכום 

עזבו "טיפים סודיים של יודעי-דבר". מי שמתאמץ באופן קבוע, שומר על סטנדרטים גבוהים, לומד כל הזמן ומאמץ טכנולוגיות חדשות - בהכרח עם הזמן ימצא משרה שתואמת את כישוריו - לא בהכרח בחברות הגדולות ומהמבוקשות ולא בהכרח מתחת לבית.

ההמלצות הקבועות שלי לכל מפתח בתחילת הדרך:


קידום עצמי

דאגו לפרופיל לינקדין (באנגלית) מעודכן ומפורט כולל הסברים על התפקידים האחרונים שביצעתם (אבל לא יותר מכמה משפטים) כולל הטכנולוגיות שנגעתם בהן. לא לקמץ ולא להפריז.

כתבו קו"ח ב-Word בעברית בפורמט מסודר ונאה לעין עם פסקאות ותאריכים לכל מקום עבודה. לא חסר דוגמאות ברשת. לא צריך גרפיקה מרשימה אלא אם כן אתם אנשי UI. כללו את הלינק לדף הלינקדין שלכם ורצוי גם לינק לחשבון Github פעיל אם יש לכם.

ניסיון

בתור מתחילים - קבלו בברכה כל חברת תוכנה שתקבל אתכם גם היא לא הכי מפנקת בתנאים. בנו את הניסיון שלכם לפחות לשנה -שנתיים הראשונים ואז התקדמו בתנאים ובדרישות. כנ"ל בשכר.

לא ממליץ לקפוץ לניהול בשנים הראשונות, למרות הפיתוי - עדיף למצות היטב את התחום המקצועי לפני שקופצים למעלה.

סטארטאפים קטנים ובינונים יקדמו אתכם בצורה מטאורית לעומת קורפורייטים שעלולים לתקוע אתכם באותו מקום להרבה זמן. החליטו מה מתאים לכם בהתאם לקריירה ולא לנוחות.

ידע

השקעה בטוחה שדורשת שנים של טיפוח קבוע אך מניבה פירות נאים בטווח הארוך.

ככל שתדעו יותר - יותר טוב, אך מצד שני, אל תתפזרו מדי. החליטו מה הכיוון שלכם לשנים הבאות ושימרו עליו. פרופיל ידע מתפזר מבלבל את המגייס.

רשימה (חלקית) ולא מחייבת:

  • שפות תכנות: רצוי לבחור שתיים מודרניות וחזקות כשאחת מהן תהיה מתקמפלת. אין תועלת גדולה בלמידה של ריבוי שפות. רצוי שבאחת מהן אתם שולטים חזק. עדיף להעמיק באותה שפה מאשר ללמוד עוד אחת שלא תשתמשו בה. 
  • ניהול גירסאות: כל פקודות GIT הבסיסיות: Branch, Merge, Pull, Push, למדו לעבוד מול Remote כמו GitHub ודומיו.
  • מדעי המחשב: אם לא למדתם את הנושא בתואר-ראשון, מומלץ להכיר את הנושאים המרכזיים: יעילות, מבני-נתונים בסיסיים ומתקדמים, ירושות, אובייקטים, ניהול זיכרון וכו. קורס מקוון מומלץ: CS50.
  • מערכות הפעלה: מרכז הכובד הוא Linux. למדו פקודות בסיסיות של ניהול קבצים, תקשורת, התקנה של אפליקציות על מספר הפצות שונות וכדו'.
  • בסיסי נתונים: למדו SQL בסיסי בתור התחלה. כדי לתרגל, התחילו עם DB מבוססי קובץ כמו SQLite בלי להסתבך עם התקנות מפרכות. אח"כ Postgres או MySQL. העמיקו בנושא. לא רק Queries פשוטים, אלא בעיקר בניית יחסים בין טבלאות: OneToMany / ManyToMany וכו'. מי שבפייתון מומלץ ללמוד ORM. בהמשך לימדו NoSQL - אפשר להתחיל מ-DB מבוסס Key-Value פשוט ולהתקדם ל-MongoDB. 
  • ענן: התחילו עם Serverless פשוט (Heroku למשל) ובהמשך התקדמו ל-AWS. רוב השוק נמצא שם. גם GCD ו-Azure שולטים, אבל פחות.
  • טסטים: UnitTests ,IntegrationTests, כל נושא ה-CI/CD. למדו לכתוב טסטים ב-Coverage גבוה. העמיקו בנושא ה-Mocking.
  • ניקיון קוד: Clean Code, Code Smell, Uncle Bob, DRY , SOLID, Design Patterns
  • HTML: עקרונות בסיס של HTML / CSS / JS.
  • טכנולוגיות: כדאי ללמוד טכנולוגית קונטיינרים כלשהי הנפוצים הם Docker ו-Kubernetes. כדאי ללמוד טכנולוגית Messaging כלשהי כמו Kafka או RabbitMQ. 
  • תקשורת: עקרונות בסיס של TCP/IP: נושאי השכבות, 3WayHandShake, DNS, Router, Firewall.
  • אבטחה: למדו על Vulnerabilities, Exploits בחבילות נפוצות, הרשימה של Top10 OWASP. למדו על Authentication ועל Authorization. כל נושא ה-Login: מלוגין פשוט דרך JWT ועד OAUTH.

הערה קטנה לסיום:
ייתכן שלמתחילים שביניכם זה נראה כמו רשימה אינסופית, אבל צריך לזכור שקריירה נבנית לאורך שנים ועשרות שנים וזה מספיק זמן כדי לרכוש ידע בכל התחומים האלה שלבסוף תתן לכם כמה ג'וקרים בכיס.

דבר נוסף - למרות שיש צורך ללמוד על טכנולגיות שונות - שימו לב שאתם מתמקדים בפיתוח ולא מתפזרים לכיוונים של  DevOPs או QA (אלא אם כן זה מבחירה). אמורים להיות אנשים אחרים שהתפקיד שלהם הוא להקים את השירותים האלה ולתחזק אותם - אתם אמורים להיות היוזרים של המערכות ולא האדמין.

אין תגובות:

הוסף רשומת תגובה