מסלולי קריירה בעולם ה-Low Level - איפה בדיוק אתם משתלבים¶
אם שאלתם מישהו בהייטק "מה זה בעצם עולם ה-Low Level", כנראה תקבלו תשובה מעורפלת על "דברים עם C ואסמבלי". וזה נכון, אבל זה לא עונה על השאלה החשובה באמת - איזו קריירה בונים מזה, ומה בעצם עושים ביום-יום. אז בואו נדבר על זה בכנות, בלי סיסמאות.
זה לא שוק העבודה שאתם רגילים לשמוע עליו¶
רוב השיח על הייטק בישראל סובב סביב פיתוח ווב ואפליקציות - React, Node, פייתון, ענן. זה שוק ענק, עם המון משרות. עולם ה-Low Level שונה. הוא הרבה יותר צר, יש בו פחות משרות פתוחות, והדרישות הטכניות גבוהות יותר כבר בכניסה. אבל יש לזה גם צד שני - השוק הזה הרבה פחות רווי. פחות אנשים מוכנים להשקיע את הזמן וללמוד איך מחשב עובד באמת ברמת החומרה והמערכת, ומי שכן מגיע לרמה הזו בדרך כלל מוצא את עצמו בתפקידים מעניינים ומתוגמלים, כי הביקוש למומחיות הזו קיים תמיד, גם אם הוא לא צועק מכל דף דרושים.
אז אילו תפקידים באמת קיימים¶
מפתחי מערכות מוצבעות - embedded¶
זה אולי הכי "מוחשי" מבין התפקידים - כתיבת תוכנה שרצה ישירות על חומרה. מכשירי IoT, רכבים, ציוד רפואי, מוצרי חשמל ביתי - כולם מריצים קוד שמישהו כתב קרוב מאוד למתכת, לפעמים בלי מערכת הפעלה מלאה מתחתיו בכלל. זה תחום שדורש הבנה עמוקה של איך מעבד וזיכרון עובדים, כי אין לכם רשת ביטחון של מערכת הפעלה גדולה שתתפוס לכם שגיאות.
מפתחי מערכת הפעלה וקרנל¶
פחות משרות, אבל קיימות - חברות שבונות מערכות הפעלה, קרנלים מותאמים, או שכבות תשתית נמוכות שרצות מתחת לכל התוכנה שלכן. זה תפקיד שדורש הבנה של תזמון תהליכים, ניהול זיכרון, וסנכרון ברמה שרוב המתכנתים אף פעם לא נוגעים בה.
חוקרי חולשות ומפתחי ניצול - exploit¶
זה אולי התחום שהכי מתחבר לעולם הסייבר וליחידות הטכנולוגיות בצה"ל. חוקר חולשות מוצא נקודות תורפה בתוכנה - איפה מפתח טעה, איפה יש חוסר בדיקה, איפה אפשר לגרום לתוכנה להתנהג בצורה שלא תוכננה. מפתח exploit הולך צעד אחד קדימה ובונה קוד שבאמת מנצל את החולשה בפועל. זה תחום שקשור ישירות לעולם ה-CTF - אם אהבתם לפצח אתגרי ניצול בינארי, זה בדיוק הכיוון.
מהנדסי ביצועים - performance¶
לא כל תפקיד קשור לאבטחה. יש חברות שמחפשות אנשים שיודעים להפוך תוכנה קיימת למהירה יותר, ולשם כך צריך להבין דברים כמו איך cache עובד, מה זה branch prediction, ואיך פריסת נתונים בזיכרון משפיעה על ביצועים בפועל. זה תחום שמשלב תכנות עם הבנה עמוקה של החומרה.
נישות קטנות אך אמיתיות¶
יש עוד כמה תפקידים ספציפיים יותר - מהנדסי קומפיילרים שבונים את הכלים שמתרגמים קוד לשפת מכונה, מפתחי דרייברים שכותבים את הקוד שמחבר בין מערכת ההפעלה לחומרה, ומתכנתי מנועי משחק וגרפיקה שצריכים לסחוט כל טיפת ביצועים ממעבד וכרטיס מסך. אלה שווקים קטנים יותר, אבל למי שמתאהב בהם, זו קריירה שלמה ומספקת.
אז מה סף הכניסה בפועל¶
הדבר החשוב שצריך להבין - אי אפשר לקצר פינות בתחום הזה. אי אפשר להיכנס לתפקיד embedded בלי להבין איך מעבד מריץ פקודות, ואי אפשר להיות חוקר חולשות רציני בלי להבין איך תוכנית בנויה בזיכרון. הבסיס הזה - ארגון מחשבים, אסמבלי, שפת C, איך לינוקס עובד מתחת למכסה המנוע - הוא לא "נחמד שיהיה", הוא תנאי סף. זו בדיוק הסיבה שבניתי את קורס ליבת המחשב, שלוקח אתכם מארגון מחשבים בסיסי ועד לרמת קרנל לינוקס והנדסה לאחור, צעד אחר צעד.
ומה עם היחידות הטכנולוגיות¶
אם אתם שואפים ליחידות הטכנולוגיות של צה"ל, כדאי לדעת - זה בדיוק סוג ההבנה שהן מחפשות. לא רק לדעת לכתוב קוד, אלא להבין מה קורה מתחת לקוד. מי שמגיע למיונים עם בסיס אמיתי בארגון מחשבים, אסמבלי, ותפעול מערכות ברמה נמוכה, מתחיל כבר צעד אחד לפני כולם.
ומי שרוצה להתחיל מבסיס תכנותי לפני שצוללים לעומק - יש גם קורס תכנות בסיסי בפייתון, וכן קורסים בנושאי רשתות, פריצת אתרים, ומחקר חולשות, שכולם מתחברים בסוף לאותה תמונה גדולה.
לסיכום¶
עולם ה-Low Level הוא לא הכיוון הכי פופולרי בהייטק, וזה בסדר גמור. הוא צר יותר, דורש יותר סבלנות בכניסה, אבל פחות רווי ומאוד מתגמל למי שמתמיד. אם אתם מהסוג שרוצה לדעת מה קורה מתחת למכסה המנוע ולא מסתפק בתשובה "זה פשוט עובד" - זה בדיוק המקום בשבילכם. תתחילו מהיסודות, ומשם הדלתות נפתחות אחת אחת.
בואו תמשיכו את הלמידה עם קהילה שכבר שם.