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