מתכנת IT

הרבה שנים שאני מנסה להסביר לאנשים מה המקצוע שלי. אני מנסה להסביר כי המקצוע שלי הוא "מתכנת IT", אבל אנשים חושבים כי אני מדבר על DevOps.
התשובה היא לא, זה לא DevOps.

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

עכשיו אשאל אתכם שאלה: האם איש DBA שייך לקבוצה הזו? התשובה היא כן. האם הוא איש DevOps? התשובה היא לא.

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

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

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

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

האם איש רשתות (כזה המקים רשתות, משחיל כבלים, ומגדיר ציוד), יודע כיצד TCP/IP Stack עובד? אולי. האם הוא יודע עכשיו לכתוב מערכת אשר יודעת לפתוח socket ולהעביר מידע? רוב הסיכויים שלא, אבל אם כן, זה לא המומחיות שלו, והוא יעשה את זה פחות טוב מאשר מתכנת שהמומחיות שלו זה socket. לא בגלל שמסובך לעשות זאת, אלא משום שיש עוד ניואנסים על גבי זה אשר צריך לקחת בחשבון. למשל האם צריך TCP Keep-Alive? האם צריך לשנות פרגמנטציה ברמה של תוכנה ולא של TCP? כל אלו הם התפקיד של המתכנת, אבל לא של איש רשתות.

עולם ה IT הוא ענק, ומכיל בתוכו מגוון עצום של תתי מקצועות.

אז מה הכוונה שלי, כאשר אני אומר שאני מתכנת IT?

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

  • תכנות בשפות תכנות.
  • שליפה ושמירה מהירה של מידע – למשל שניה וחצי של שקט, כי יש חישובים, יגרמו לאיבוד שיחות כמעט מלא, בניגוד למערכות וויזואליות (שם יש יותר חסד בנושא).
    • מסדי נתונים – בניית index מתאים, הבנה של דברים כדוגמת partition למידע, ועוד טריקים רבים אחרים לשליפה מהירה של מידע.
    • מתי אסור להשתמש במסדי נתונים
    • יצירת נקודת אימות מהירה, במקום פניה למידע חיצוני
    • יצירת פעולות רקע לסיכום מידע, ושליפה רק של המידע המסוכם.
  • הבנה של התשתית עליה עובדים – יש שימוש ב PRI? יש שימוש בקו נחושת פשוט (FXO)? יש שימוש ברשת האינטרנט? כל אלו דורשים התייחסות והתמודדות שונה. זה לא אומר שאני יודע להגדיר פיזית רשת כזו, כלומר כבל דו גידי של FXO, ולחבר אותו למתג שיהיה מספר נכון, מעולם לא היה במומחיות שלי. גם אינני יודע למתוח או לחתוך סיב אופטי או coax.
  • הבנה של sockets ברמה נמוכה וגבוהה – אני יודע את ההבדלים בין TCP ו UDP, אבל אני גם מבין DNS והרבה דברים נוספים שמרכיבים רשת בסופו של דבר.
    • הבנה של פרוטוקולים שונים המתעסקים במידע.
  • הבנה של ממשקי Web – אחד הדברים שאני מאוד חלש בהם, אבל נעשו להכרח. אני יודע ליצור ממשקי שליטה במערכות באמצעות ה web.
  • ביזור פעולות – כשיש לך מחשב אחד, שרת אחד וכיוב', הכל טוב ויפה, אבל מה קורה כאשר יש לך המון פעילות שמחשב אחד לא מסוגל לספק את כולם? אז צריך לדעת להתמודד עם זה. שוב, לא המומחיות שלי, אבל יש לי הרבה ידע וניסיון בנושא.
  • הגדרה ושינוי שרתים בשביל שהמידע והמערכות יתפקדו טוב יותר.
  • גישה לטכנולוגיות חדשות.

והרשימה עוד גדולה מאוד יחסית.
אבל כל הרשימה הזו היא רשימה של by-product לדבר אחד – להעביר מידע ממקור x למקור y ולפעמים למספר מקורות, ולדעת להשתמש במידע הזה, או פשוט להנגיש אותו לשימוש.
זו אסופה של תכונות שמאפשרות לי לספק צרכים, אבל הם לא העיקר, אלא האמצעי. העיקר הוא הבנה של סוגי מידע והיכולת להתמודד איתו היא שהופכת אותי להיות מתכנת IT.
כלומר אני משתמש בהרבה תכונות של עולם ה IT בשביל להשיג מטרה של עבודה עם מידע.

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

אז אני מתכנת IT, מה המקצוע שלכם?

כתיבת תגובה

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s