MeCoder הכניסה לעולם התכנות


איזו שפת תכנות ללמוד

Coding Books
photo: "library refresh" from flickr

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

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

מבין השפות הללו אפשר לציין את C, C++, C# (מבטאים סי-שארפ), PHP, Javascript, Python, Ruby, Objective-C (שפת התכנות של אפליקציות אייפון) וכמובן Java. אני מקווה שהדברים כבר מתחילים להתבהר, אם כי אני מניח שאם התייעצתם עם מישהו מהתחום אז סביר שהוא המליץ לכם על אחת השפות הללו.

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

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

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

דבר ראשון, בשביל ללמוד Javascript צריך ללמוד קודם HTML ו-CSS. זה נשמע משוגע לגמרי, שבשביל ללמוד שפת תכנות צריך ללמוד שתי שפות נוספות!?!? אז בואו נשים דברים על דיוקם - HTML ו-CSS הן לא בדיוק שפות תכנות, אלא שפות Markup, שנועדו להסביר לדפדפן מה להציג ללא כל הלוגיקה והמורכבות של שפות תכנות.

HTML הינה השפה בה בנויים כל אתרי האינטרנט שאנו מכירים, ובאמצעותה בונים את התוכן של האתרים ואת המבנה הבסיסי שלהם.

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

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

החיסרון הזה, לפיו אתם נדרשים ללמוד שתי שפות נוספות, הוא למעשה יתרון משמעותי. אני נשמע כמו משוגע? ובכן, המטרה הראשונית והחשובה ביותר מבחינתכם היא למצוא את העבודה הראשונה שלכם בתחום. דריסת הרגל הזאת היא קריטית ביותר. אבל איך מוצאים עבודה כמתכנת כשאין לכם ניסיון בכלל??? זהו הפרדוקס המוכר של עולם התכנות - מצד אחד אי אפשר לרכוש עבודה ללא ניסיון, מצד שני אי אפשר לצבור ניסיון אם אין לך עבודה! אז מסתבר שיש עבודות שדורשות הרבה פחות ניסיון מאחרות, אלו העבודות אשר לא מוגדרות כתכנות פר-אקסלנס, אלו הן עבודות של בניית אתרים סטטיים ודפי נחיתה. זאת יכולה להיות דלת הכניסה המיוחלת שלכם. הפרויקט הראשון שעשיתי היה בניית אתר, ש-95% מהזמן התעסקתי ב-HTML ו-CSS, ובקושי 5% מהזמן התעסקתי ב-Javascript. תכנות או לא, זה בכלל לא מעניין כי זה מה שאפשר לי לעשות את הדברים המדהימים שאני עושה היום.

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

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

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

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

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

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

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

יתרון אחרון שאציין כאן הוא שקהילת מפתחי JS היא הגדולה והחזקה ביותר. כשמדברים בהיי-טק על קהילה חזקה מתכוונים לכך שהרבה מאוד מתכנתים מתאגדים סביב רעיונות של שיתוף ידע ואף שיתוף כוח. לדוגמא, באתר Stackoverflow, שהוא מקום מעולה לקבל תשובות לכל בעיה תכנותית שיש לכם, השפה עם המספר הגדול ביותר של שאלות ותשובות היא .... תופים... JS! דוגמא נוספת ניתן לראות באתר Github, בו אתם יכולים גם לשתף קוד שכתבתם, או לקרוא ולהשתמש בקוד של אחרים, או הכי חשוב לקחת חלק בפרויקטי קוד-פתוח (open-source) ולבנות, ביחד עם עוד הרבה מפתחים אחרים, כלים שיעזרו לכם או לכל בן אדם אחר, לא רק למתכנתים. אז באתר זה, שפת התכנות המובילה היא...הוא....הם.... JS! בפער ניכר מול כל שפה אחרת. מבחינתכם, קהילה חזקה מהווה גב חזק לתהליך הלימוד והכניסה לעולם התכנות.

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