וובכן
נתחיל בתפקיד הפחות מובן שהוא "מהנדס תוכנה" - למעשה, אין כזה מקצוע של ממש "מהנדס תוכנה", אלא זה יותר title מאשר תפקיד ממשי. התחום שנקרא הנדסת תוכנה מכיל בתוכו את כל התחומים הקשורים לבניית מערכות תוכנה, שזה לא רק תכנות, אלא גם ניתוח, עיצוב, ניהול פרויקטים, בדיקות, הבטחת איכות וכו', כך שקשה לתפוס בן אדם בהיי-טק ולומר "אתה מהנדס תוכנה" ! במקסימום תוכל לומר - "אתה עוסק בהנדסת תוכנה". בארץ, מאחר והישראלים אוהבים להמציא תפקידים מוזרים (מי אמר מנהלת אדמיניסטרטיבית ?) המציאו תפקיד שנקרא "מהנדס תוכנה". במקרה הטוב "מהנדס תוכנה" זה מישהו שעוסק בארכיטקטורה (עיצוב) של מערכות - קובע איך תראה מסגרת המערכת (חלוקה למחלקות, מודולים, מה יעשה כל רכיב וכו'). במקרה הפחות טוב - "מהנדס תוכנה" זה סתם שם מפוצץ לתוכניתן. אז מה ההבדל בין מהנדס תוכנה לתוכניתן ? קיבלת את התשובה. בין מנתח מערכות לתוכניתן יש הבדל גדול מאוד. אם תוכניתן הוא זה שמקבל דרישות של מה המערכת אמורה לעשות ומתרגם את הדרישות לשפת תוכנה, אז מנתח מערכות הוא זה שמגדיר את הדרישות. תפקידו של מנתח המערכות מורכב מכמה שלבים: 1. ניתוח הדרישות - לשבת עם הלקוח שביקש את המערכת, לדבר איתו "בשפתו שלו" (של הלקוח) ולהבין ממנו מהן הבעיות שלו שמערכת המחשב אמורה לספק להן פתרון ולהוציא מתוך הדברים אותם הוא אומר את הדרישות הנקודתיות במערכת (המערכת צריכה לעשות X Y Z ...). 2. אפיון המערכת - אחרי שהדרישות מוגדרות, מבוצע שלב האפיון בהם לוקחים את הדרישות ומתרגמים אותם לדרישות ברמת תוכנה (צריך מסך כזה שיאפשר הזנת נתונים כאלו שישמרו ב-DB בטבלאות כאלו וכאלו וכו'). מן הסתם מנתח מערכות עושה עוד הרבה דברים, אבל בגדול - אלה הם התפקידים העיקריים בתחום הניתוח. כשלומדים מדעי המחשב לומדים את המדעים של המחשב כשהדגש הוא על אלגוריתמיקה. על-מנת ליישם את האלגוריתמיקה במחשב מלמדים שפות תכנות. התוצאה של התואר הזה, עבור אנשים שאינם מתכננים להיות חוקרים במדעי המחשב (כאלו שממציאים אלגוריתם לדחיסת מידע והעברתו במהירות 30 ג'יגה לשנייה לרוחב האוקיינוס האטלנטי), היא הידע הבסיסי בשפות תכנות (מה שלרוב מקנה להם מקום בתור לדורשי עבודה בתור תוכניתן מן המניין). תואר בהנדסת תוכנה עוסק יותר ביישומים הפרקטיים של תחום הנדסת התוכנה, היינו, תכנות (לומדים יותר שפות תכנות, בסיסי נתונים וכלים יותר שימושיים לתוכניתן), עיצוב (קורסים ב-OO וכדומה), ניתוח (קורס ניתוח מערכות שהוא מעין מבוא למקצוע) וקורסים כלליים נוספים בתחומים של בדיקות, ניהול פרויקטים וכו' (כל אותם נושאים שנופלים תחת התחום של הנדסת תוכנה). מה יוצא מזה בסוף ? לרוב מאחר ורוב הסטודנטים שמסיימים תואר זה הם ללא נסיון, הם מתחילים בתחתית הסולם שזה תוכניתן (אני משאיר כרגע בצד את תפקיד בודק התוכנה שזה לא כל כך קשור לתכנות). לאחר שיצברו מספיק נסיון, הם יוכלו לנפנף בתואר שלהם ולטעון שיש להם את ההכשרה האקדמית לעסוק בתפקידים יותר בכירים. אם שכחתי לפרט על משהו, אנא הסב את תשומת ליבי.