לדלג לתוכן

לינוקס למפתחי תוכנה - למה זה חשוב

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

הקוד שלכם בסוף רץ שם

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

הכלים שאתם משתמשים בהם בנויים על זה

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

דיבאגינג הופך לאמנות אחרת לגמרי

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

סקריפטים חוסכים לכם עבודה משעממת

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

זה גם משפר לכם את ההבנה של המערכת כולה

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

לא צריך להיות DevOps כדי להתחיל

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

מאיפה מתחילים

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

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

הצטרפו לקהילה בדיסקורד

לסיכום

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