על מקצועות ההיטק השונים, פתיחה
רגע,
לפני שאתה מתחיל בחיפוש עבודה, האם אתה מכיר את האפשרויות השונות? מה אתה יודע על עולם ההיי-טק ? מה ההבדל בין מערכות משובצות מחשב (embedded) לבין מערכות נתונים? מה המשמעות של פיתוח מערכות בדיקה אוטומטיות ? ניתוח נתונים? כתיבת דרייברים? מה תפקידו של מנהל גירסאות ? איך מתנהל פרוייקט פיתוח? מי בעלי התפקידים ?
אפתח כאן בסדרה של מאמרים בנושאים שונים מתוככי עולם הפיתוח בכדי לתת לך, המועמד, הצצה פנימה ובכך לאפשר לך לקחת החלטה מושכלת, מה יכול להתאים לך ולאן תרצה לכוון את הקריירה שלך.
את הסידרה אפתח באחד הנושאים החמים ביותר היום: פיתוח אפילקציות לטלפונים הניידים. לא צריך להכביר מילים על התפתחות הנושא, כולנו יודעים כמה הנושא חם ופופולרי, ואין לי ספק שרק מעטים מבין הסטודנטים היום לא התנסו כך או אחרת בתחום.
מה כל כך מושך אותנו בפיתוח אפליקציות? ההזדמנות לפתח אפליקציה שתהפוך אותנו לעשירים בין רגע? התחושה שזה פשוט ומהיר לעבור מגיבוש הרעיון ועד שיש לנו אפליקציה עובדת? אולי העובדה שיש לכולנו מכשירים ולא צריך מערכות פיתוח מסובכות בכדי לפתח אפליקציה ? כל מה שצריך הוא טלפון נייד ומחשב? תהה הסיבה אשר תהה, הפופולריות של הנושא אינה מוטלת בספק.
ובכן, מה זו אפליקציה ? ברוב המקרים, האפליקציות שאנו מכירים הם הממשק משתמש של תוכנה העובדת בארכיטקטורת שרת-לקוח. השרת יושב על מחשב או קבוצת מחשבים ב”ענן האינטרנט” אי שם ומקבל בקשות מה”לקוח”, הוא האפליקציה שיושבת לנו על הטלפון. באפליקציות מסויימות עושה הלקוח (הטלפון) את עיקר העבודה או אפילו את כולה, ובאחרות עושה השרת. דוגמא היא אפליקצית ניווט כדוגמאת Waze, הטלפון משמש להצגת המפה, ניתוח אותות ה GPS ושליחת נתונים ובקשות לשרת, השרת מחפש עבורינו את היעד, מחשב את המסלול ושולח את המפה של המסלול לטלפון.
אם ננתח לרגע את סוגי המפתחים שאנו זקוקים להם על מנת לפתח אפליקציה כזו הרי שנמצא שם שתי קבוצות עיקריות: קבוצה ראשונה מורכבת ממומחי מכשירים/מערכות הפעלה לטלפונים (Android, iOS…), רכיב ה GPS במכשירים כבר “מרופד” בשכבת תוכנה (drivers ו APIs) הנותנת לנו גישה ברמה אבסטרקטית גבוהה ו”מחביאה” מאיתנו את רכיב החומרה לכן אין צורך במומחיות embedded. מפתחי האפליקציה על המכשיר צריכים להכיר את מערכת ההפעלה על כל תכונותיה ואת ה APIs השונים לתפעול הפונקציונליות הנדרשת.
קבוצה שניה היא קבוצת הפיתוח על השרת, אנשים אילו לא עובדים עם מכשירי טלפון, תפקידם לפתח את המנוע של האפליקציה, אילו יכולים להיות מומחים בפיתוח אלגוריתמים, מבני נתונים מורכבים, בסיסי נתונים ועוד ועוד, נושאים שבינם לבין המכשירים אין שום קשר. המערכות האילו יכולות לשבת על שרתים המבוססים לינוקס, ווינדוס ועוד.
כל קבוצה אחראית על פיתוח הצד שלה, אולם צריך גם להגדיר את הממשקים בין השרת ללקוח, להגדיר איזה חלקים ישבו בשרת ואיזה אצל הלקוח, הפיתוח כולל עבודת אינטגרציה בין שני הצדדים של המערכת וכמובן בדיקות, של כל תת מערכת בנפרד, של צד השרת, של צד הלקוח וכמובן בדיקות אינטגרציה של כל המערכת.
אז איזה בעלי התמחויות ספרנו כאן?
- מפתחים למערכות ההפעלה השונות של טלפונים
- מפתחים לשרת המומחים בנושאים שבמנוע החישובי של האפליקציה, בסיסי נתונים, תקשורת ועוד
- אנשי אינטגרציה
- ארכיטקטים לתכנון המערכת
- אנשי פיתוח מערכות בדיקה
ועוד מוקדם מדי לספר על מנהל הגרסאות, מנהל הפרוייקט ומנהל המוצר.
מי מהם תרצה להיות?
רק זיכרו שהמאמר מדבר בהכללה כמובן. ב”שטח” תמצאו קבוצות לפיתוח אפליקציות הכוללות עוד או פחות סוגים של התמחויות.