טיפים בנושאי לימוד אונליין

כפרילאנסר שנותן שרות לדברים רבים הקשורים בלינוקס (אחרים ב-Windows או במערכות אחרות) אחד הדברים הראשונים שלמדתי – הוא שאתה לא יודע מה "יפול" עליך מחר מבחינת דרישות טכניות של לקוחות. כל לקוח והמערכות שלו, הגדרות שלו, אפליקציות ושרתים שלו וכל לקוח שונה מהשני. מחר אני יכול להרים ולתחזק שרת Jenkins עם Slaves וערימת סקריפטים הקשורים לכל מה שקשור ל-Build ו-Deploy, ומחרתיים אני אצטרך לכתוב מספר דברים ב-Python ועוד שבוע אני אצטרך לשבור את הראש מדוע אשכול (Cluster) של MySQL לא עובד טוב ואלו רק דוגמאות ספורות שכל פרילאנסר שנותן שרותים צריך להתמודד איתם, גם אם מדובר בכלים/פלטפורמות אחרות.

אחת הבעיות הגדולות היא שלפעמים אתה צריך "רענון". לא נגעת באיזה שרות כבר מספר שנים ולקוח רוצה שמחר בבוקר תטפל בדיוק בשרת שמריץ שרות כזה. מה תעשה? תעביר את הלקוח למישהו אחר? סביר להניח שלא (במיוחד אם הלקוח רווחי עבורך). אתה יכול להרים בבית איזה VM עם השרות ואולי קצת לשחק איתו כדי להיזכר, אבל עדיין – צריך איזה חומר כדי להיזכר. אחרי הכל – זה לא שיש לך בבית עותק של המערכת של הלקוח כדי לנסות לשחק ולהתמודד עם הבעיה..

אחד הפתרונות ללימוד או רענון של שפת מחשבים, שרות או מערכת הפעלה – היא קורסים Online שחברות כמו Lynda.com, Oreily.com ואחרים נותנים הוא מנוי לספריה גדולה של קורסים שאתה יכול להיות מנוי, להתחבר, לבחור את הקורס ולעבור עליו בזריזות. זה טוב ונחמד, אבל הבעיה היא שהעלות של דבר כזה נעה בין 40-50$ לחודש. כלומר אם תעשה מנוי וגם אם תבטל אותו, הלכו 40-50$ כלומר שעת העבודה הראשונה שלך אצל הלקוח – תימחק מבחינת רווח. תוסיף עלויות של דלק, אוכל וכו' – ואם העבודה היא כולה שעתיים שלוש, תראה שבקושי יצאת עם משהו.

לאחרונה גיליתי פתרון אחר. קצת יותר מורכב – אבל לעניות דעתי הוא שווה. תרשו לי לשתף אותו עמכם.

תרשו לי להכיר לכם את אתר Android Central Digital Offers. השם מרמז על דברים לאנדרואיד אבל אתר זה כמו עוד כמה אתרים – מציעים קטלוג של קורסים שכלל לא קשורים לאנדרואיד.

מה שמוצע באתר לעיל, הם קורסים שכרוכים בחבילות (Bundles) שקשורים בנושאים שונים כלליים. חלק מהחבילות לדוגמא מדבר על White Hackers, על VMWare, הסמכות MCSE ו-1001 דברים נוספים. הנה דוגמא:

ניכנס לאתר ונחפש (למעלה באמצע לחצו על זכוכית המגדלת) וחפשו VMWare. המערכת תציג 3 תוצאות, כפי שהן מופיעות בתמונה להלן (או בקישור הזה ישירות להצעות):

vmware

כפי שאנחנו יכולים לראות בתמונה, אלו 3 החבילות, והן מוצעות במחירים זולים – 19$ ו-49$.

הבה נסתכל על ההצעה מימין. החבילה הזו בעצם מדברת על Complete White Hat Hacking & Penetration Testing Bundle. לא נשמע משהו שאנחנו צריכים אולם אם נסתכל מקרוב, הקוביה השניה משמאל מדברת על .. VMWare, כלומר אנחנו מקבלים את ה-VMWare בתוספת עוד כמה קורסים – והכל ב-19$. אם, אגב, נלך לאתר שמעביר את הקורס (כדי לדעת מי נותן את הקורס, נלחץ על הקוביה של ה-VMWare, נלחץ על ה-Instructor, שם יופיע לינק בכחול – לחצו עליו ותגיעו לאתר שנותן את הקורס) נראה שאותו קורס מוצע ב-202$. היי, חסכון לא רע בכלל! אבל מה שיותר יפה, הוא שבמקרה הזה עם נחזור להצעה ב-Digital Offers נראה משהו מעניין:

vmware2

הגישה שיש לנו לקורס זה היא לכל החיים מבלי לשלם סנט נוסף אחד.

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

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

טיפ חשוב – לחצו בדף של המוצר שבחרתם על Course Outline ותוודאו שהתכנים שאתם צריכים מופיעים שם. 19$ זה נשמע זול אבל אם התוכן שאתם מחפשים לא מופיע שם, אז חבל על הכסף.

עוד אפשרות נחמדה שיש באתר שמופיעה בחלק מהמקרים – זה Pay What You Want. נאמר שהחברה הכניסה לשימוש GIT ואתה צריך להכיר איך להשתמש בכלי הזה. חיפוש באתר של המילה GIT תתן לנו תוצאות והתוצאה לפני ה-Our Best Sellers תתן לנו את זה. אם נסתכל בחבילה, נראה שיש שם הרבה הרבה יותר מ-GIT, אבל בואו נסתכל על החבילה מקרוב (לחצו על התמונה להגדלה):

git-package

מספר 8 ברשימה זה מה שאנחנו צריכים – את GIT. השאר נחמדים ואם נרצה את כל החבילה, נשלם עליה 19$, אבל כרגע מה שמעניין אותנו זה GIT. ליד מספר 8 אין מנעול, ולכן אנחנו יכולים ללחוץ מימין על Pay What You Want ואנחנו יכולים להזין מספר מ-1 עד 19.36$, כלומר אתם יכולים לשלם דולר יחיד דרך Paypal ולקבל קישור Redeem שמאפשר לכם לצפות בקורס ובחלק מהמקרים גם להוריד את הוידאו שאינו מוגן ישירות למחשב שלכם, לשמור אצלכם על הדיסק הקשיח. מצד שני, אם אתה מפתח, אתה יכול לשלם את ה-19.36$ ולקבל שורה של קורסים שזמינים לך לכל החיים (ושוב, בחלק מהמקרים אתה פשוט יכול להוריד כל שיעור כקובץ MP4, יש שם קישורים להורדה בכל וידאו במקרה ואתה דואג שהאתר לא יהיה זמין בעתיד או שתרצה לצפות ב-Offline). עיסקה לא רעה, הייתי אומר.

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

אז האם כדאי לוותר על ההצעות של Lynda, Oreilly ואחרים למנוי? לא תמיד. אתרים אלו מציעים דברים עדכניים. אם לדוגמא בחברתכם יחליטו בהמשך לעבור ל-vSphere 6.5 לדוגמא, ב-Digital Offers לא תמצאו כלום. עדכונים להסמכות גם לא תמצאו באתר שהצעתי לעיל ובכלל קורסים של שפות תכנות, קורסים שמורכבים מעשרות שרות – עדיף את האתרים המקצועיים שמעבירים קורסים Online. האתר שהצעתי מתאים לרענון דברים שקיימים זמן רב ומאפשרים לאנשים לרענן את זכרונם במחיר זול.

הערת מפרסם
הח"מ פרילאנסר שמחפש עבודות בתחום לינוקס, Devops, ודברים הקשורים ל-Software Defined Storage, וירטואליזציה וכו'. מי שמעוניין בפרטים – אפשר למצוא אותם כאן.

עבודה כ-Devops

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

אז נתחיל בעניין הסיסטם: בעבר, תחום הסיסטם היה מאוד פופולרי. אנשים היו לומדים MCSE (אם זה היה לגבי Windows) או RHCE או בחינה אחרת (לגבי לינוקס) והיו מתחילים לחפש עבודה בתחום. המשכורות אינם גבוהות אם אין לך נסיון – אבל היה אפשר למצוא עבודה.

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

שני הדברים שהכי קובעים בקבלת מועמד לעבודה הם ידע ונסיון. כשאדם לומד מ-ספר או קורס, יהיה עדיין חסר לו בין 50-90% מהידע שחברה צריכה. כך לדוגמא מבחינת Troubleshooting – רוב הקורסים בקושי נוגעים בנושא (וברוב עבודות הסיסטם הזמן שנשרף הוא על תקלות, בין אם זה AD שעושה צרות, SQL שעובד לאט, תקשורת איטית, תקלות ב-1001 שרותים ואפליקציות וכו' – ובלינוקס זה יכול להיות תקלות של ביצועי שרותים, שרת שלא עולה, הרשאות לא נכונות, Segfault של אפליקציות ועוד המון המון סוגי תקלות). בקורסים אולי מלמדים אותך איך להקים מערכות ושירותים – אבל בקושי נוגעים ב-Troubleshooting, ולכן חשוב לבדוק כמה שנות נסיון אמיתיות יש למועמד.

בתחום הסיסטם תמיד כדאי שיהיה לך נסיון בשפת סקריפטים כלשהי. בעולם המיקרוסופט כדאי מאוד שיהיה לך נסיון ב-Powershell וגם ב-Batch. בלינוקס – כדאי מאוד שיהיה לך נסיון לפחות ב-BASH ועדיף גם נסיון ב-Python או PHP, כלומר ידע ונסיון בשפת סקריפטים – חובה. ידע בשפת תכנות אחרות – זה פלוס.

בעולם ה-Devops לעומת זאת, אם יש לך נסיון בסיסטם (בין אם שנתיים או 5) – הידע הזה הוא פחות מהבסיס שצריך לאיש Devops. איש Devops צריך להכיר את הדברים בצורה הרבה יותר רחבה.

כמה רחבה? בניגוד לאיש סיסטם, איש Devops הוא בעצם ה"מכתיב" בכל התחומים שקשורים החל משרתים ועד לפיתוח. כך לדוגמא אם איש סיסטם הכיר Puppet לאוטומציה, איש Devops טוב יצטרך להכיר גם Chef וגם Ansible. הוא לא חייב להכיר אותם עד רמת הבורג, אבל צריך שיהיה לו ידע בהרמה לדוגמא של 2 שרתים, "חיבור" למערכת אוטומציה והתקנת שרות כלשהו, לדוגמא. עניין אחר הוא בשינוי מתודת פיתוח אפליקציות של החברה (במיוחד של חברות שנותנות שרותי SaaS לדוגמא) – בעבר חברות היו מפתחות גירסה 1 ואחר כך היו מתחילים לעבוד על גירסה 1.1 או 2. כיום חברות רבות עוברות לשיטה שבה הפיתוח הוא מתמשך ו"נזרק" מיד לפרודקשן לאחר שהוא מתקמפל ועובר סט בדיקות אוטומטי (מה שנקרא CI או Continuous Integration) ובשביל זה קיימים כלים כמו Jenkins. מי שצריך להרים מערכת CI, לכתוב לה סקריפטים, לכתוב בדיקות וכו' – הוא איש ה-Devops.

עדכון: להלן כמה דברים שאנשי Devops כותבים לגבי הנושא:

יבגני זיסלס כותב: "בוא נתחיל מזה שדבאופס, כפי שהגו האנשים שהכניסו לנו את המושג, זה בכלל לא קשור לכלי כזה או אחר. וזה גם לא ״בן אדם״, ז״א אין דבר כזה ״מהנדס דבאופס״ או ״צוות דבאופס״. אבל כמו כשציינתי, ככה מסתכלים על זה האנשים שהגו את המושג. היום יש גם את כל החברות והציידי ראשים והמחפשי עבודה שכמובן רואים את זה אחרת לגמרי, אבל אני קופץ קדימה מדי.
דבאופס לפי ההגדרה הראשונית, זה עניין של תרבות חברה. וכל הכנסים והפרסומים שמבטיחים שדבאופס יתן כל מני אחוזים ענקיים בשיפור העסק, כל זה מסתמך על השוואה של חברות שיש בהן תרבות דבאופס, לבין אלו שאין. אני מזמין אותך לקרוא את סקר ה-״דבאופס״ שחברת פאפטלאבס הכינו ב-2015 ו-2014, וכאשר אתה קורא את התוצאות שים לב שמדובר בתרבות, לא כלים.
אבל בוא נחזור אל מחפש העבודה הממוצע שחושב לעשות תיקון קריירה ולקרוא לעצמו ״דבאופס״. תתחיל בזה שכנראה הוא, והחברה שרוצה לגייס אותו, לא יועץ או פרילנסר. לכן לא באמת יש סיבה למישהו שעובד בחברה שעושה שימוש בשף, שיהיה לו ידע בסיסי בדברים אחרים. וכמובן גם חברה שמחפשת אנשים עם ידע בשף, לא צריכה את אלה שלא מכירים אותו.
עניין הנסיון הוא באמת משחק תפקיד די גדול אצל מישהו כזה שקורא לעצמו ״דבאופס״, אחרי הכל הכלים שאותו אדם טוען לדעת לא טריוויאליים, ולרוב לא היו בשימוש בעבר בשום מקצוע אחר (לא סיסטם ולא מתכנת ולא הלפדסק ולא בדיקות). אז יש כלי חדש, צריך תווית חדשה, ולמזלנו בדיוק הגיע ה״דבאופס״ הזה, אז למה לא. אבל נסיון בשימוש בכלי הוא שום דבר ליד נסיון בהבנה של מערכות, ויותר חשוב, בהבנה של מערכות של אנשים.
אתה בטח מכיר ארגונים שבהם הפוליטיקה שולטת, אז דמיין בן אדם בארגון כזה שיודע להשיג דברים שהוא רוצה שיקרו כאילו אין שום פוליטיקה … זה מיומנות, גם כאן יש אנשים עם נסיון בזה וכאלה בלי נסיון, וגם זה דוגמא לכלי, לא פחות חשוב משף או ג'נקינס.
קיצור, העליתי כמה נקודות, אבל המאמר בא לחזק בדיוק את הדברים שאנשים בעולם ה״דבאופס״ מנסים להעלים." (יבגני גם ממליץ לקרוא את ה-Agile Manifesto וגם את הקישור הבא)

עמוס שפירא כותב: "…בכלל מזה "איש DevOps"? הרי DevOps זה צורת מבט על כל תהליך הפיתוח (Dev) והרצת שרתים (Ops) כשלבים מאד קשורים אחד לשני, לעומת המודלים הקודמים שבהם אנשי הפיתוח לא יודעים כלום ולא מעניין אותם איך הקוד שלהם רץ בשטח והתפקיד שלהם נגמר כשהם " זורקים את הקוד מעבר לגדר" ("chuck over the fence").
מבחינת אנשי סיסטם (ואני לא בטוח כמה זה קשור ספציפית ל-Devops), איש סיסטם עדכני צריך להבין את החלק שלו בכל התהליך מהגדרת המוצר וכתיבת התוכנה (ששם הוא יכול לתרום בהסבר מראש מה הוא צריך כדי לעשות את החלק שלו) וכן לממש "infrastructure as code", אוטומציה של תהליכים, תמיכה בשרשרת הבניה והבדיקות של התוכנה וכו'." (למעוניינים, ישנו שרשור של אנשי Devops המתייחסים לפוסט זה ואנשי Devops מסבירים מה הוא המקצוע)

איש ה-Devops ברמת המאקרו צריך להכיר המון טכנולוגיות חדשות ועדיף שיהיה לו מבחינת שפות ידע ב-Python, JAVA ואם אפשר – גם RUBY (ולאחרונה מה שנהיה פופולרי – שפת Go של גוגל), אך כאן זה לא נעצר – איש Devops חייב להמשיך להכיר טכנולוגיות חדשות בזמן  העבודה או מחוץ לעבודה. מכיר קונטיינרים? אם לא – תכיר. אתה צריך להרים מכונות VM בצורה אוטומטית? תכיר את Vagrant והרשימה ארוכה ומתארכת כמעט כל יום או כל שבוע. כך לדוגמא בעבר אם היה לך נסיון ב-RDBMS כלשהו (החל מ-MySQL או SQL server של מיקרוסופט או Oracle DB) – כיום חברות רבות מחפשות ידע בשרותי DB שמבוססים NoSQL (כמו MongoDB ואחרים).

ואחד הנושאים הכי חשובים שאיש Devops צריך להכיר ברמה מעולה – הם העננים הציבוריים. פחות ESXI/Xen ויותר אמזון AWS, מיקרוסופט Azure, או גוגל Cloud Computing. כל אחד מהעננים הציבוריים מציע עשרות (ובמקרה של אמזון מאות) שרותים שונים ורוב מוחלט של חברות שמציעים שרותים באינטרנט – מארחות בענן ואותם שרותים שמציעים העננים הציבוריים נגישים דרך API או SDK (ומי ש"בונה" על ממשק GUI של ספק הענן – שיקח בחשבון שבמקרים רבים ה-GUI מספק פונקציונאליות פחותה מה-API) ובשביל להשתמש ב-API או SDK – יש צורך בידע בשפות כמו Python או JAVA ובמקרים מסויימים Javascript וידע ב-JSON לדוגמא.

לסיכום: המקצוע של איש Devops שונה מתפקיד של איש System. הוא כולל את התפקיד של איש סיסטם ולוקח אותו כמה צעדים (די הרבה, למען האמת) קדימה. איש Devops להישאר במצב של לימוד X והלימודים הבאים שלו יהיו שנה הבאה אם בכלל. הוא חייב להשקיע המון בלימודים של דברים חדשים. אלו שהתרגלו לעולם של מיקרוסופט יצטרכו לבצע לעצמם הסבה ללינוקס (מה לעשות, אמזון שולטת בשוק הענן הציבורי), הכרת VI (או emacs, לא nano), הכרת רשת על לינוקס, שרותים, סקריפטים ועוד ועוד.

ולאלו שמתעניינים במיוחד בשורה התחתונה של "כמה מקבלים" – באופן עקרוני, איש Devops מקבל יותר מאיש סיסטם, אבל שוב – תלוי כמה נסיון יש. אפשר להגיע ל-30K+ אם יש לך נסיון עשיר ב-Devops, Linux ונסיון טוב עם שרותי ענן של אמזון לדוגמא.

(גילוי נאות: כותב שרות אלו מציע שרותי Devops כפרילאנסר)