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


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

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

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

programming languages names

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

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

את השלב ראשון בקבלת ההחלטות שלי עברתי – אני הולך ללמוד שפת תכנות צד –שרת. עכשיו הגיע הזמן לדילמה האמיתית... איזו שפה כדאי שאלמד? C? לא, זאת שפה מיושנת שכמעט ואין ביקוש אליה למרות שזאת השפה עליה בנויות רוב שפות התכנות כיום. אז אולי JAVA? השתגעתי??? אמנם זאת שפה מאוד פופולרית, בעיקר בחברות גדולות, אבל הסיבה לכך היא שבעבר היא היתה מאוד פופולרית ולחברות גדולות קשה להחליף טכנולוגיות. אז אולי C# (מבטאים את זה סי-שארפ)? אחרי הכל זאת אחת השפות הפופלריות ביותר. אבל יש גם את Node.js שהיא שפה בצמיחה מרשימה ביותר, עם ביקושים עולים בעיקר מצד חברות קטנות וסטארט-אפים. ומה עם Ruby? או C++? וואו! הלכתי לאיבוד!!!

לא פשוט לקבל החלטה שכזאת, בטח עם הידע המועט שיש לי... אז ההתיעצתי עם אנשים שיש להם "קצת" יותר ידע ממני. והתשובות היו חד-משמעיות! כולם אמרו לי שכדאי לי ללמוד Node.js. למה? משתי סיבות עיקריות:

  1. השפה כתובה ב-Javascript. היי, אני כבר יודע Javascript!!! אמנם JS היא שפת צד-לקוח אשר "מדברת" עם הדפדפן, אבל למעשה היא מתקמפלת (מלשון compile) ל C++. בקיצור, יהיה לי הרבה יותר קל ללמוד אותה ובנוסף היא תשפר את יכולותיי ב-JS.
  2. Node.js היא אחת השפות הצומחות ביותר כיום בעולם התכנות. השפה בשימוש רב בעיקר אצל סטארט-אפים וחברות קטנות.

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

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

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

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

  1. מכיוון שיש לי תיאבון מטורף ללמוד ולספוג, אז ללמוד עכשיו C# לא יבוא על חשבון ללמוד Node.js, אלא פשוט יידחה אותו במעט.
  2. אמנם אני לא יודע בוודאות מה הנתיב בו אלך מבחינת תפקידים (מתכנת, מנהל, יזם וכו'), אבל אני רוצה להשאיר את כל הדלתות פתוחות. ומכיוון ששפות C עדיין פופולריות מאוד (גם בחברה בה אני עובד) אז אם ארצה לנהל צוות בהמשך הדרך, כדאי מאוד שאדע את השפה הזאת.

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