אני מניח שכל מי שקורא את הפוסט הזה הבין כבר למה חשוב להתחיל ללמוד במהלך התואר? וגם יודע שההחלטה החשובה ביותר לעתיד הקריירה שלכם היא בחירת המשרה הבאה שבה תעבדו מבחינת סוג התפקיד שתעשו, הטכנולוגיה שבה תעבדו, באיזה סוג של חברה ובאילו תנאים. הפוסט הזה יתמקד בסוג הטכנולוגייה, עם דגש כמובן על סוגי הטכנולוגייה הנפוצים פה בתעשית ההיי טק המקומית.
כפי שנראה מיד, קיימות טכנולוגיות רבות בשוק. כל טכנולוגיה מיצרת סוג שונה של מוצרים לקהלי יעד שונים. מעבר לזה, כל טכנולוגיה דורשת סוג שונה של מיומניות מצד המפתחים שעובדים איתה ואפשר לומר שלכל טכנולוגיה יש אנשים עם אופי מסוים שהיא מתאימה להם במיוחד.
בגלל הדמיון הרב אני מכניס לקטגוריה הזאת גם מקרים של כתיבה לתוך מערכת ההפעלה של Linux מה שנקרא ה Kernel. למשל חברות תקשורת נתונים שאחראיות על שיפור ביצועי מערכת ההפעלה הרגילים, משתמשות בטכנולוגיה הזאת במימוש המוצר ובהחלט יתכן במקרה הזה שהמוצר יהיה על מחשב רגיל ולא על שבב אלקטרוני כלשהו. מה שנחמד בתחום הזה הוא שהפיתוח משותף לחומרה ולתוכנה כך שנפוץ מאוד למצוא מהנדסי חומרה ותוכנה באותו צוות אפילו בחברות שנמצאות בתחום הזה.
כפי שנראה מיד, קיימות טכנולוגיות רבות בשוק. כל טכנולוגיה מיצרת סוג שונה של מוצרים לקהלי יעד שונים. מעבר לזה, כל טכנולוגיה דורשת סוג שונה של מיומניות מצד המפתחים שעובדים איתה ואפשר לומר שלכל טכנולוגיה יש אנשים עם אופי מסוים שהיא מתאימה להם במיוחד.
6 סיבות למה כדאי לבחור את הטכנולוגיה (במקום שהיא תבחר אותכם)
בפוסט על "הדבר הראשון שצריך לדעת לפני שמתחילים לחפש עבודה" - תחת הכותרת "במה אתם רוצים להתמחות, איזו טכנולוגיה מעניינת אותכם?" -אתם יכולים למצוא את הסיפור האישי שלי בתחילת הקריירה. כמעט כל אחת מהסיבות שלפניכם היא לקח שהצלחתי להבין רק אחרי כמה שנים בתחום.
1. לא כל טכנולוגיה מתאימה לכל אדם שמתחבר לטכנולוגיה. לאחר שעזבתי את התחום של Real Time Embedded ולפני שעברתי לתכנת לאייפון - הייתי בטוח שאני שונא לתכנת, ושתכנות זה לא בשבילי. אמרתי לעצמי, אם אחרי כמעט 3 שנים בתעשייה אני לא נהנה לתכנת (בעבודה בשפת C המוצר היה קופסא שמעבירה תקשורת בין מחשבים) זה אומר שכנראה יש לי בעיה כלשהי עם התחום הזה.
למזלי גיליתי לאחר זמן קצר שאני דווקא מאוד אוהב לתכנת. אבל בסוג אחר של טכנולוגיה (אייפון) שמיצרת סוג אחר של מוצרים. גיליתי שאני נהנה ליצר דברים טכנולוגים שאני יכול לראות אותם ולהשתמש בהם כמו אפליקציות לאייפון.
2. שנות נסיון תעסוקתי בטנולוגיה מסויימת כמעט לא שוות כלום כאשר מחליטים לעבור לטכנולוגייה אחרת.
אנשים שהם טכנולוגים יכולים "להסתדר" עם הרבה טכנולוגיות. אבל המטרה שלכם היא לא "להסתדר" אלא להנות ממה שאתם עושים. אף אחד לא היה רוצה לעבוד במשרה שהוא יכול לבצע אותה מבחינה טכנית אבל אין לו שום ענין בה.
אנשים שהם טכנולוגים יכולים "להסתדר" עם הרבה טכנולוגיות. אבל המטרה שלכם היא לא "להסתדר" אלא להנות ממה שאתם עושים. אף אחד לא היה רוצה לעבוד במשרה שהוא יכול לבצע אותה מבחינה טכנית אבל אין לו שום ענין בה.
3. אתם תהיו הכי טובים במה שאתם עושים אם אתם תעשו את מה שאתם אוהבים - זה אולי נשמע קלישאתי קצת, אבל זה כל כך נכון.
4. תחשבו על הקריירה שלכם בטווח הארוך, האם התחום שאתם עובדים בו כעת הוא תחום שתרצו לעבוד בו ב10 שנים הבאות (האם הוא בכלל יהיה קיים ב10 שנים הבאות?), האם הנסיון הטכנולוגי שאתם צוברים היום ישרת אתכם בעוד 5 שנים, 10 שנים? במידה ואתם חושבים יום אחד להקים סטארט-אפ, האם יש סיכוי שהסטארט-אפ שלכם יהיה בתחום בו אתם עוסקים היום?
5. קל מאוד להישאב לתחום ולהישאר בו בגלל שמהרגע שהתחלתם לצבור נסיון בתחום מסוים תמיד ההצעות לקידום שתקבלו בתחום הזה יהיו אטרקטיביות יותר מכל תחום אחר (כי יש לכם נסיון, נסיון שווה כסף).
6. חשוב להבחין בין טכנולוגיות שמייצרות מוצרים שאתם יכולים להיות המשתמשים בעצמכם, לבין טכנולוגיות שמייצרות מוצרים ש"אי אפשר לראות" ואתם לא יכולים להיות משתמשים של המוצר. זה לא שאחת מהן טובה יותר מהשניה אלא זה פשוט נושא שכדאי להיות מודעים אליו.
האתגר הגדול שעומד בפניכם הוא לנסות להסיק עוד בטרם התחלתם לעבוד, מהי הטכנולוגיה שהכי מתאימה לכם. אני אנסה לשפוך קצת אור על כל טכנולוגיה ולספר עליה קצת, אני מזהיר אותכם מראש, זה לא ויקיפדיה פה אז תגלו סלחנות אם הנסיונות שלי להסביר טכנולוגיות לא מושלמים... אז בואו נתחיל
Real Time Embedded \ Kernel
מה זה?
מדובר בטכנולוגיה של כתיבת תוכנה לשבב כלשהו שנמצא בקופסה כשלהי ואמור לעשות כל מיני דברים. זה לא היה ברור? טוב אז ככה, רוב החברות שפועלות בתחום הזה אינן מוכרות למשתמשים פרטיים כמוני וכמוך אלא מהווים למעשה ספקי משנה לחברות טכנולוגיה אחרות שעושות שימוש פנימי כלשהו במוצר, לדוגמה השבב בטלפון הנייד שאחראי על גלישת הסלולר - 3G.בגלל הדמיון הרב אני מכניס לקטגוריה הזאת גם מקרים של כתיבה לתוך מערכת ההפעלה של Linux מה שנקרא ה Kernel. למשל חברות תקשורת נתונים שאחראיות על שיפור ביצועי מערכת ההפעלה הרגילים, משתמשות בטכנולוגיה הזאת במימוש המוצר ובהחלט יתכן במקרה הזה שהמוצר יהיה על מחשב רגיל ולא על שבב אלקטרוני כלשהו. מה שנחמד בתחום הזה הוא שהפיתוח משותף לחומרה ולתוכנה כך שנפוץ מאוד למצוא מהנדסי חומרה ותוכנה באותו צוות אפילו בחברות שנמצאות בתחום הזה.
שפות תכנות רלבנטיות:
C, C++, Assemblyאיזה סוג של מוצרים מיוצרים בטכנולוגיה הזו?
מאיצים גרפיים למסכי טלויזיה, ראוטרים (כמו זה שיש לכם בבית), מעבדים של טלפונים חכמים, מעבדים של מחשבים, שבבים לצילום וידאו דיגיטלי, שבבים להאצת תקשורת נתונים
דוגמאות לחברות שפועלות בתחום
Ceva, Intel, Mellanox, Texas Instrumentsלאיזה סוג אופי של אנשים זה יכול להתאים?
התחום הזה תפור על מי שחומרה מעניינת אותו, כל מי שרוצה לעסוק בקשר שבין התוכנה לחומרה - התחום הזה הוא בשבילכם.
Client Side
מה זה?
השם המקצועי של מי שכתב את הדף אינטרנט שאתם גולשים בו הוא Web Client Developer - והאתגר שלו הוא לקחת את העיצוב של האתר מהמעצב הגרפי (שאין לו מושג בתכנות אלא רק בלצייר) ולהפוך את העיצוב לאתר שעובד פונקציונאלית, כלומר לחיצה על כפתור תגרום למשהו להשתנות במסך. מעבר לזה הוא צריך לגרום לאתר עבוד מול שרת חיצוני שבדר"כ עיקר המידע מרוכז אצלו.
העבודה היא בעיקר מימוש הפונקציונאליות של המוצר בצד של הלקוח ובמימוש ה GUI - Graphical User Interface. למשל, כשאתם גולשים לפייסבוק, צד הלקוח אחראי על מימוש התצוגה הגרפית שאתם רואים ועל הפונקציונאליות. למשל לחיצה על תמונה ב News Feed תגרום לה להופיע בהגדלה במרכז המסך - מישהו כתב את הקוד שגרם לזה לקרות.
שפות תכנות רלבנטיות:
Java Script, PHP, Ruby On Rails, HTML, CSS, Java (GUI), #C
העבודה היא בעיקר מימוש הפונקציונאליות של המוצר בצד של הלקוח ובמימוש ה GUI - Graphical User Interface. למשל, כשאתם גולשים לפייסבוק, צד הלקוח אחראי על מימוש התצוגה הגרפית שאתם רואים ועל הפונקציונאליות. למשל לחיצה על תמונה ב News Feed תגרום לה להופיע בהגדלה במרכז המסך - מישהו כתב את הקוד שגרם לזה לקרות.
שפות תכנות רלבנטיות:
Java Script, PHP, Ruby On Rails, HTML, CSS, Java (GUI), #C
איזה סוג של מוצרים מיוצרים בטכנולוגיה הזו?
כל אתרי האינטרנט שאתם מכירים, גם אלו שאתם גולשים דרך המכשיר הנייד שלכם לפעמים.
לאיזה סוג אופי של אנשים זה יכול להתאים?
אנשים שאוהבים ליצור דברים שאנשים אחרים יכולים להשתמש ולראות. וכמובן כאלו שיש להם משיכה מיוחדת לעולם האינטרנט ופיתוח אתרים בפרט.
Server Side
מה זה?
כמעט כל תוכנה, אתר או אפליקציה סלולרית מורכבים מ Client \ Server. הצד של השרת אחראי על מתן שירותים שונים לצד הלקוח ועל ניהול המידע של כלל המשתמשים \ גולשים.
אם ניקח את פייסבוק לדוגמה, אז השרת שלה צריך לדעת לנהל את כל התמונות, התיוגים, הסטטוסים וכל הקשרים שקימים בין כל המשתמשים (750 מליון פעם אחרונה שבדקתי). אם זה לא מספיק השרת חייב לדעת להחזיר לכל בקשה שמגיעה מצד המתמשים של פייסבוק את המידע שהם ביקשו - למשל, תן לי את עדכוני הסטטוס האחרונים שלי - ולהצליח לעשות זאת בפחות מחצי שניה.
שפות תכנות רלבנטיות:
Java, Python, PHP Server, C++, #C
אם ניקח את פייסבוק לדוגמה, אז השרת שלה צריך לדעת לנהל את כל התמונות, התיוגים, הסטטוסים וכל הקשרים שקימים בין כל המשתמשים (750 מליון פעם אחרונה שבדקתי). אם זה לא מספיק השרת חייב לדעת להחזיר לכל בקשה שמגיעה מצד המתמשים של פייסבוק את המידע שהם ביקשו - למשל, תן לי את עדכוני הסטטוס האחרונים שלי - ולהצליח לעשות זאת בפחות מחצי שניה.
שפות תכנות רלבנטיות:
Java, Python, PHP Server, C++, #C
איזה סוג של מוצרים מיוצרים בטכנולוגייה הזו?
כאמור, כל אפליקצייה או אתר שאתם יכולים לחשוב עליו מכיל web server
לאיזה סוג אופי של אנשים זה יכול להתאים?
אנשים שעושים server בצורה טובה הם בדרך כלל אנשים מאוד חזקים טכנולוגית. מכירים את היכולות של שפת הפיתוח שהם עובדים איתה ברמה גבוהה, מכירים design patterns ושולטים טוב ב data bases. בכלל הם בדרך כלל מכירים כמה טכנולוגיות שונות של web server - שכן עבור כל דרישה של הלקוח יש למצוא את הטכנולוגיה המתאימה לה ביותר.
אנשים שעושים server בצורה טובה הם בדרך כלל אנשים מאוד חזקים טכנולוגית. מכירים את היכולות של שפת הפיתוח שהם עובדים איתה ברמה גבוהה, מכירים design patterns ושולטים טוב ב data bases. בכלל הם בדרך כלל מכירים כמה טכנולוגיות שונות של web server - שכן עבור כל דרישה של הלקוח יש למצוא את הטכנולוגיה המתאימה לה ביותר.
Mobile Application
מה זה?
מדובר למעשה בפיתוח אפליקציות לסלולר, פיתוח ל Android, iPhone ומי יודע אולי בעתיד גם ל Windows Phone
שפות תכנות רלבנטיות:
Java (Android), Objective-C (iPhone), Java Script (Hybrid apps), C# (Windows Phone
שפות תכנות רלבנטיות:
Java (Android), Objective-C (iPhone), Java Script (Hybrid apps), C# (Windows Phone
איזה סוג של מוצרים מיוצרים בטכנולוגייה הזו?
כל האפליקציות הסלולריות שאתם מכירים.
לאיזה סוג של אופי של אנשים זה יכול להתאים?
כל מי שמוצא ענין בתחום הזה של המובייל ורוצה לדעת לפתח אפליקציות בעצמו. זה ביחוד מתאים למי שרוצה ונהנה לעבוד בזמנו הפנוי על דברים טכנולוגיים שמעניינים אותו.
כל מי שמוצא ענין בתחום הזה של המובייל ורוצה לדעת לפתח אפליקציות בעצמו. זה ביחוד מתאים למי שרוצה ונהנה לעבוד בזמנו הפנוי על דברים טכנולוגיים שמעניינים אותו.