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

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

תמונה: flickr, cc-by, mutednarayan

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

הכרת המבנה של חברת תוכנה

אמנם מבנה חברות תוכנה משתנה בין חברה אחת לחברתה, אך ברוב המקרים החברה תורכב ממפתחים, QA, Support, Product ו-IT. הבנת המבנה תעזור למועמד להבין טוב יותר את הגדרת התפקיד אליו הוא מתראיין, לעובד חדש להשתלב טוב יותר ולאמץ את התהליכים העסקיים של החברה מהר יותר ועוד.

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

בין אם זה Waterfall או Scrum, Agile או לא, הכרת הגישות השונות יכולה להעניק מושג על חיי המפתח. הכרת הגישות השונות יכולה אף לעזור בבחירת חברה שתתאים טוב יותר. לדוגמה, ספר מומלץ למתודולוגית Scrum הוא Agile Software Development with Scrum.

כלים לניהול קוד ותהליכי פיתוח

  • בוגר תואר ראשון יכול לסיים את התואר עם ידע אפסי על כלים לניהול קוד כמו SVN, Git וכו', אשר נמצאים בשימוש נרחב בחברות תוכנה.
  • Continuous Build רלוונטי לתהליך בקרת איכות.
  • Integration Test רלוונטי לשלב בתהליך הפיתוח.
  • Issue tracking systems כגון Trac ו Jira – הפועלים ככלים לניהול תהליכי הפיתוח.

קווים מנחים לכתיבת קוד

אין צורך להבהל אם לא קודדת הרבה במהלך התואר הראשון שלך (אין הכוונה לבוגר שכתב תוכניות קצרות בלבד – יש לשאוף לכתוב כמה שיותר קוד במהלך התואר). יחד עם זאת – אומרים שלוקח 100 חזרות ללמוד איך לעשות Squat נכון, אבל לוקח 10,000 חזרות לתקן תנועה שלא נלמדה נכון.

למד את עצמך כיצד לכתוב קוד טוב מהשלב הראשון. ספר נהדר להתחיל הוא Code Complete, Second Edition.

שליטה ב-IDE

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

ניצול קוד פתוח

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

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

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

 

כתב אורח

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

תגיות לכתבה:

להגיב

13 תגובות

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

  2. מאת כאילו:

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

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

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

    בסופו של דבר, הוא מסיים את הלימודים, פתאום הוא צריך ללכת לעבוד בחברה, הוא צריך להשתמש ב-GIT אין שום בעיה – הוא בטח כבר השתמש בזה, ואם לא הוא ילך לגוגל וביממה אחת ילמד את הבסיס של GIT,SVN,CI,QA – וכל דבר אחר שזה לא היה, זאת לא תהיה טרחה בשבילו, כי זה בסך הכל מעניין אותו לדעת את זה, הוא יודע שהוא צריך את זה ולאיזו מטרה.

  3. מאת Rachel Saadia:

    אממממ.. נחמד – אפשר לקבל עוד פוסטים בנושא??

  4. מאת oz:

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

  5. מאת oz:

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

  6. אדון כאילו – לא יכולתי לנסח את זה טוב יותר.
    ++

  7. מאת אופיר:

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

  8. מאת צחי:

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

  9. מאת Doron Ben Elazar:

    בלינוקס זה לא היה קורה.

  10. מאת ד"ר עמיר תומר:

    נגעתם בבעיה אמיתית ונכונה.
    אני מרצה שנים לא מעטות במסלול להנדסת תוכנה במדעי המחשב / טכניון ובמסגרת הקורסים שפיתחתי שם – שיטות בהנדסת תוכנה וניהול פרויקטי תוכנה – דאגתי לכלול חלק לא קטן מנושאים אלה. אני פוגש לא מעט סטודנטים שלי מהעבר, והם תמיד מציינים עד כמה קורסים אלה הכינו אותם ל"עולם האמיתי". ניתן לראות את שקפי הקורסים בלינקים הבאים:
    webcourse.cs.technion.ac.il/236321
    webcourse.cs.technion.ac.il/234270
    לפני כשנה הקמתי את המחלקה להנדסת תוכנה במכללה האקדמית כנרת (שימו לב: הנדסת תוכנה ולא מדעי המחשב – גם התעשיה עצמה לא יודעת לעשות את ההבחנה הנכונה!), ודאגתי שתוכנית הלימודים שם תכלול כמה שיותר נושאים רלוונטיים לתעשיה.
    אני יוזם כעת יום עיון, שייערך בשנה הבאה במכללה האקדמית כנרת, בו ייפגשו נציגי אקדמיה ונציגי תעשיה לדון בסוגיה מה צריכה להיות תוכנית הלימודים הרלוונטית להנדסת תוכנה (ולא מדעי המחשב!)
    התוכנית האקמית צריכה לכלול הכשרה הנדסית רחבה (למרות שכל הבוגרים יתחילו את דרכם בתור מתכנתים), וזאת על מנת ליצור מטען ידע שיאפשר בניית מסלול קריירה בתחום הנדסת התוכנה.

  11. מאת אבנר:

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