לימודי פיתוח תוכנה

מתוך הנקודאי

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

רקע נדרש ללימודי פיתוח תוכנה

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

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

לימודי פיתוח תוכנה במסגרת תואר אקדמי

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

לימודי יסודות התכנות

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

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

דוגמאות לתוכניות לימוד יסודיות כחלק מלימודי פיתוח תוכנה

דוגמאות לתוכניות לימוד יסודיות כחלק מלימודי פיתוח תוכנה יהיו למשל:

  • שפות תפעול-התנהגות כגון שפת Bash (למערכות לינוקס)
  • שפות מבנה (כגון HTML) ושפות התנהגות תואמות המשמשות במידה רבה לפיתוח אתרי ווב כגון שפת PHP או שפת JavaScript
  • שפות מבנה (כגון XML) ושפות התנהגות תואמות המשמשות במידה רבה לפיתוח רובוטיקה כגון Java או Python
  • שפות מבנה (כגון HTML) ושפות התנהגות תואמות המשמשות במידה רבה לתשאול בסיס נתונים כגון SQL או NOSQL

האם לימודי פיתוח תוכנה דורשים מתמטיקה?

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

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

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

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

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

הערות לפרק

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

היכן אני ממליץ ללמוד פיתוח תוכנה

מניסיוני, כיום המגמה המתחזקת ביותר בלימודי תכנות היא לימודים במכללה אינטרנטית עם לימוד אינטראקטיבי; הסטודנט נרשם למכללה כזו (כגון teamtreehouse.com) בעבור סכום כסף קטן יחסית כגון 25 דולר אמריקני או 30 דולר אמריקני לחודש ובמסגרתה הוא מקבל גישה לכל קורסי הבסיס שהיא מציעה כשהם מסווגים לפי נושא; במסגרת השיטה, הסטודנט מתחיל מסלול הכולל מספר קורסים; כל קורס כולל מספר סרטונים באורך קצר מאד (לרוב בין 2 דקות ל-4 דקות) ולאחר כל שיעור או כמה שיעורים בודדים כאלה הוא משלים מבחן קצר מאד על הקורס; ניתן להיבחן שוב ושוב והלמידה שלבית, מתגמלת ואין לחץ.

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

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

  • לכל מי שלומד פיתוח תוכנה אני ממליץ ללמוד יסודות שפת Bash מסיבות אלה:
  • שפת Bash היא דרך נפלאה ומתגמלת ללמוד על נושא ממשק משתמש שורת פקודה שצריך להכיר בכלל תעשיות ההי-טק
  • שפת Bash מהווה למידת יסודות התכנות בפועל ← כיום להמון מתכנתים מקצועיים ממילא יהיה צורך ללמוד לפחות את יסודות שפה זו מתי שהוא כי היא השפה העיקרית המשמשת לתפעול מערכות הפעלה בענן (עליהן יושבות תוכנות ענן) וכן להתקנה וקונפיגורציה של רבות מן התוכנות האלה
  • אני יכול להמליץ גם ללמוד על שפת JavaScript אבל את זה הייתי ממליץ בעיקר למי שמעוניין לפתח אתרי ווב; אם מישהו מעוניין לפתח תוכנות רובוטים, תוכנות למכונות תעשייה, תוכנות לשלטים רחוקים, תוכנות לכלי רכב, תוכנות לשלדים חיצוניים (exoskeletons) וכדומה הייתי ממליץ ללמוד שפות שמתכנת העובד בתעשייה הרלוונטית המליץ ללמוד אותן (דוגמאות שאני מכיר הן Go, או C++ או Python ויש עוד רבות); להתחיל עם שפה אחת ואם לא מתחברים לתחביר שלה לעבור לאחרת וכן הלאה עד שמוצאים את דרך המלך, העיקר שזו תהיה שפה שימושית במובן שיוצרים איתה מוצרים יעילים ומוכרים היטב
  • בכל מקרה, לפי דעתי שווה להכיר את יסודות שפת HTML (שאיננה שפת פיתוח תוכנה פרופר אבל משמשת בפיתוח תוכנה לצד שפות מחשב אחרות), לצד יסודות שפת Bash, לא משנה אילו תוכנות הולכים לפתח; הן Bash והן HTML הן שפות שבאופן כללי נחשבות לקלות יחסית ללמידה ומתגמלות מאד. בניגוד לשפת HTML שהיא שפת מבנה, שפת Bash נחשבת לשפת תפעול ולשפת פיתוח תוכנה.

לימודי פיתוח תוכנה למבוגרים

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

אני מודע היטב לקשיים הנערמים אצל מבוגרים רבים כגון:

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

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

אשמח לסייע לכם לעשות את הצעד לתוך עולם פיתוח התוכנה.

ראו גם