קורס תכנות – מה ללמוד: ג'אווה, דוט נט, Full Stack או תואר במדעי המחשב?
הסבר על קורס תכנות בערוץ 12, בתוכנית הטלוויזיה "עבודה עברית"
האם ללמוד תואר במחשבים או ללמוד קורס תכנות? היום יותר ויותר עובדים בתעשיית הייטק מוותרים על התואר האקדמי במחשבים. קורס תכנות הנלמד כ-קורס הייטק, הפך להיות חלופה ראויה וטובה. חשוב כמובן לברר לעצמך האם קורס תכנות הטוב ביותר עבורי הוא אכן הדבר הנכון לכם. אם החלטתם שכן אזי כאשר לומדים במכללה פרטית טובה, מקבלים נקודת זינוק גבוהה לשוק העבודה בהייטק. בוגר קורס תכנות, יכול לעבור ראיונות ולהתקבל לכל עבודה המוצעת למתחילים. מדוע? מכיוון שיותר ויותר חברות אינן מסתמכות על החינוך הפורמלי של המועמד ככלי לקבלת ההחלטה אם לקבלו לעבודה. כלומר החברות אינן מתייחסות יותר מדי לתואר או לתעודה זו או אחרת. החברות מתייחסות יותר ויותר להצגת יכולת פרקטית רלבנטית למקצוע. יש לכך מגוון סיבות. ראשית התארים האקדמיים עצמם. התארים הפכו להיות מגוונים ובמגוון רמות עצום. ניתן ללמוד היום מדעי המחשב עם מוסיקה או מדעי המחשב בשילוב ספורט ועוד. בנוסף, גם התואר המרכזי של מדעי המחשב אינו מצליח להכין את הבוגר לשוק העבודה בצורה שתאפשר לו להיות יצרני ורלבנטי מספיק. יותר מ-50% מלימודי התואר במדעי המחשב אינו עוסק כלל במקצוע עצמו. הלימודים לתואר במחשבים כוללים לימודי מתמטיקה בסיסית, פיזיקה, לימודים כלליים ועוד. מקצועות שבמקרה הטוב אינם תורמים מאומה לעובד בתחום ובמקרה הפחות טוב מרגילים את העובד לחשיבה מתמטית טהורה הרחוקה מאוד מהחשיבה הפרקטית הנדרשת ממהנדס תוכנה. וכך חברות רבות מבינות שהתעודה האקדמית כשלעצמה אינה מעידה מספיק על היכולת של המועמד.
היום יותר ויותר חברות מעבירות את המועמדים סדרה של אבחוני כניסה, אבחונים המחליפים את ההסתמכות על התעודות הפורמליות. מה כוללים האבחונים הללו? במקרים רבים החברות דורשות מהמועמדים לבצע "פרויקט מעשי". לפעמים פרויקטים מעשיים אלו מבוצעים במשך מספר שעות כחלק מראיון הקבלה ולפעמים הפרויקט ניתן למועמד כשיעורי בית. הן מבקשות לראות כיצד המועמד מתמודד נכון עם משימה מורכבת הדורשת ידע טכנולוגי רב ולאו דווקא ידע פורמלי או תיאורטי. כאן לא יעזרו למועמד לימודי המתמטיקה, לימודי הפיזיקה ואף לא הלימוד התיאורטי של מדעי המחשב. מה שהמועמד יוכל להסתמך עליו אלו הכלים שקיבל לתכנון נכון של מערכות, הכלים שלמד ותרגל כיצד בונים פתרון נכון – הן ברמת המקרו והן ברמת המיקרו. בדיוק בנקודה זו בוגרי קורס תכנות של מכללה פרטית טובה יכולים להצטיין. אם תוכנית המכללה כוללת לימוד כלי תכנון, שיטות לפירוק נכון של בעיות, דרכים סטנדרטיות להתמודדות עם המורכבות המאפיינת פרויקטי תוכנה, מיצוי החשיבה מחוץ לקופסא וכל זאת לצד לימוד כיצד פרקטית לתכנת נכון, בצורה מודולרית, בצורה שניתנת לתחזוקה קלה וברת שינויים – הרי שלמועמד שלמד קורס תכנות יש סיכוי טוב יותר להתקבל לעבודה.
אז מדוע חברות רבות מצהירות שהן אינן מקבלות מועמדים שלא למדו באוניברסיטה נחשבת? קשה לומר. ייתכן וזה תורם להן לאגו. המציאות היא שכמעט בכל חברות ההייטק, מהקטנות ביותר ועד לענקיות תמצאו שהן קלטו מועמדים ללא תואר אקדמי ובייחוד בוגרי קורס תכנות. כמובן, כאשר הקריטריון הוא היכולת המקצועית של המועמד חשוב מאוד ללמוד במכללה המעניקה יכולות מקצועיות ללא פשרות. כך לדוגמא תוכלו למצוא היום (על פי אתר LinkedIn) את בוגרי מכללת סלע עובדים בכמעט כל החברות ההייטק במשק.
מה ללמוד ג'אווה או #C?
ראשית נסביר – ג'אווה וגם #C הן שפות תכנות מודרניות אשר התפתחו ב-15-20 שנים האחרונות. ג'אווה פותחה והחלה את דרכה בחברת המחשבים SUN, חברה שלימים נבלעה על-ידי חברת התוכנה הענקית ORACLE. היום ג'אווה ממשיכה להתפתח על-ידי קהילה של מפתחי קוד מקור חופשי הנתמכים על-ידי חברת ORACLE. #C לעומתה נבנתה על-גבי שפת התכנות ++C (שבעצמה נבנתה על גבי שפת התכנות C). #C פותחה על-ידי חברת מיקרוסופט והיא נתמכת על-ידי מיקרוסופט. #C משולבת עם הסביבה הטכנולוגית הנקראת DOT NET. דוט נט היא סביבה טכנולוגית המאפשרת להשתמש במגוון כלים עצום העוזרים לחסוך זמן פיתוח יקר ובעיקר לחסוך שגיאות (BUGS).
אז איזו שפה פופולארית יותר? מה כדאי ללמוד?
התשובה המפתיעה היא – זה לא כל כך משנה! מדוע? ראשית שתי השפות הן מאוד דומות ושתיהן פופולאריות ומצויות בשימוש נרחב בשוק. יש ארגונים רבים בהם משתמשים בשתי השפות במקביל בפרויקטים שונים ואף באותו פרויקט. גם מבחינה טכנית, יש בשתי השפות כמעט את אותם המבנים. שנית בקורס תכנות חשוב ללמוד שפת תכנות מודרנית אחת לעומק (ואולי עוד שפה נוספת להשוואה). אבל לא חשוב איזו. מה שכן חשוב, כפי שנראה בהמשך, זה ללמוד קורס מעמיק ורציני, המלמד הן את הרמה התכנונית והן את הרמה הטכנולוגית. וכאשר לומדים תכנון ועקרונות – ניתן ללמוד אותם גם בג'אווה וגם ב- #C באותה מידה. יחד עם זאת רצוי גם להצביע על הבדלים בין השפות מבחינת השימושיות בהן. ניתן לומר שרוב החברות היותר קטנות (אבל ממש לא כולן) נוטות להשתמש ב-JAVA. בחברות הבינוניות תמצאו הרבה יותר את #C ובחברות הגדולות לרוב תמצאו את שתיהן. ואם כבר עוסקים בשפות תכנות כדאי להזכיר שגם ידע ב-PYTON יכול לעזור ואפילו ב-RUBY. אבל שוב, השפה עצמה שלומדים בקורס תכנות הרבה פחות חשובה מלימוד מעמיק ורציני של כלל מרכיבי התוכנה המודרנית. ראו בהמשך תוכנית לימודים מוצעת לקרוס תכנות.
מה האורך של קורס תכנות טוב?בשוק תמצאו מגוון גדול של קורסי תכנות. ישנם קורסים קצרים הנמשכים כ-200-300 שעות, ישנם קורסים ארוכים יותר בסביבות ה-600 שעות לימוד וישנם קורסים של 1,100 שעות לימוד ואף יותר. אז כמה זמן נמשך קורס תכנות טוב? אם משווים את התוכניות הקצרות והבינוניות לתוכניות המלאות והיותר ארוכות רואים בבירור שני הבדלים: א) בתוכניות הקצרות מסתפקים בלימוד שפת תכנות בצורה בסיסית ולומדים עוד מספר טכנולוגיות על קצה המזלג. בתוכניות הארוכות (המלאות יותר) לומדים יותר עקרונות תכנון ושיטות תכנון. כמו כן, בקורסים המלאים, לומדים כל נושא בצורה מקיפה יותר; ב) בתוכניות הארוכות יש יותר דגש על פתוח פרויקטים מעשיים, יש מגוון של פרויקטים שהם חלק מתוכנית הלימודים והם מהווים את השלד של התוכנית – ראו תוכנית לימודים של קורס תכנות בהמשך. הלימודים בקורס תכנות חייבים להכין את הבוגר בצורה מיטבית לשוק העבודה. יש חשיבות עצומה לתפקיד הראשון אותו יבצע הבוגר. תפקיד זה קובע במידה רבה את העתיד המקצועי של הבוגר (וכמובן את השכר הצפוי לו). חשוב מאוד שהתפקיד הראשון יהיה תפקיד מאתגר המאפשר לבוגר להתברג גבוהה ככל האפשר בסולם המקצועי. לכן ככל שהבוגר יבוא לשוק העבודה מצויד ביותר כלים, מצויד ביותר חשיבה מקצועית בוגרת וניסיון מקצועי רב – כך יקל עליו למצוא ג'וב מקצועי יותר. תלמיד שיתפשר על קורס מהיר וקצר ייפגע בעצמו פעמיים – פעם אחת הוא יפסיד את ההזדמנות ללמוד דברים בשלב הקריטי של הכניסה למקצוע וייצא מהקורס עם ראיית עולם מקצועית צרה ופעם שניה הוא יוכל להתמודד על תפקידים בסיסיים בלבד, תפקידים שיפגעו ללא ספק בעתידו המקצועי. לכן חשוב מאוד לא להתפשר, הגם שקורס קצר יכול להביא את הלומד למציאת עבודה, חשוב לבחור קורס המוביל לעבודה רצינית ומתקדמת. כאן המקום להזכיר שגם ב-צ.ה.ל., גוף המריץ מגוון קורסי תכנות שונים (בחיל התקשוב, בחיל המודעין ובחיל האוויר) קורסי התכנות אורכים כ-1,000 עד 1,300 שעות לימוד וזאת לפני שמתחשבים בשלבי ההתמחות השונים שהבוגרים עוברים.
איך בוחרים קורס תכנות טוב?
בשוק יש מגוון קורסי תכנות. המתעניין בהחלט יכול להיות מבולבל ממבול ההצעות. למען האמת רוב ההצעות נשמעות טובות וקשה להחליט. אבל לפני שמחליטים חשוב מאוד לעשות בדיקות מקיפות. חשוב לזכור שמדובר בכל מקרה בקורס שאמור לתת לבוגר מקצוע ותעסוקה לשנים רבות קדימה. לכן מדובר בהחלטה לא פשוטה – מה קורס התכנות הטוב ביותר עבורי? אז הנה כמה טיפים שיכולים לעזור:
• לשאול אנשים מהתחום. חשוב לנסות למצוא קרובי משפחה, חברים, מכרים וכד' העובדים בהייטק ולשאול אותם. מה לשאול? האם הם נתקלו בבוגרים של המכללה העובדים בארגונם? האם הם עצמם למדו במכללה? אולי יש להם חברים לעבודה ששמעו על המכללה? בדרך כלל אנשים מהתחום מבינים את המשמעות ארוכת הטווח של לימודים במכללה נכונה ולכן ההמלצה שלהם חשובה.
• חוות דעת בוגרים. גם בוגרים של המכללה יכולים לעזור לגבש דעה. חוות דעת בוגרים היא חשובה – אבל תמיד צריך לקחת אותה בפרספקטיבה מתאימה. אז חפשו בים החברים שלכם בוגרים שלמדו במכללה. אם לא מצאתם בקשו מהמכללה לספק לכם טלפונים של בוגרים. הכינו מראש כמה שאלות, התקשרו ושאלו את השאלות. רצוי גם שאלות קלות אבל גם קשות, כגון – עד כמה את/ה מרגיש/ה שהלימודים עזרו למצוא עבודה? מה הדבר שאהבת שם? ומה שנאת? וכד'
• בדיקת חוות דעת באינטרנט. האינטרנט הינו מקור נוסף למציאת חוות דעת על קורסי תכנות. כמובן חייבים להיזהר מהטעיות מכוונות ו-Fake reviews. אפשר לחפש בגוגל עצמה חוות דעת בוגרים על המכללה – פשוט חפשו לדוגמא חוות דעת על מכללת סלע ואז תגללו למצוא את "כרטיס העסק" ושם חפשו ביקורות (Reviews ). בנוסף ישנם פורטלי לימודים כגון לימודים, הסטודנט ועוד.
• ללכת לראות ולהתרשם. אין כמו מראה עיניים. קחו את עצמכם למכללה. בקשו לשוחח עם יועץ. בקשו לערוך סיור במקום. נסו להתרשם מהרצינות, האם מקבלים כל אחד שמוכן לשלם או יש סינון? כיצד הסינון פועל? עד כמה הסינון רציני? כיצד המקום נראה וכד' אם ניתן – שוחחו עם תלמידים הלומדים שם.
השורה התחתונה
בשורה התחתונה קורס תכנות יכול להיות דבר מדהים. זו בהחלט אלטרנטיבה מעולה למי שמעוניין בקריירה מבטיחה בהייטק. זאת בתנאי שלומדים במכללה פרטית רצינית ובהיקף מתאים. קורס תכנות – שיהיה לכם בהצלחה.
תוכנית לימודים מוצעת לקורס תכנות – 2019
קורס |
מה לומדים? |
ש"א הרצאה + תרגול |
Computer Architecture | מושגי הבסיס בעולם התוכנה והחומרה: איך המחשב עובד? האלגברה מאחורי החישוביות. | 26 |
Introduction to Programming - Using C# Language |
לימוד יסודות התכנות תוך שימוש בשפת #C. לימוד הכלים הקיימים לכתיבה, בדיקה והרצה של תוכניות מחשב בגישה מעשית. |
45 |
Computer Methodology - C# |
לימוד פתוח תוכניות מחשב ברמה גבוהה יותר, תוך לימוד מרכיבים נוספים של שפת #C ומבוא ל-Object Oriented. |
46 |
Introduction to Testing |
לימוד עולם הבדיקות. מה הם באגים? כיצד מגלים אותם?, כיצד מגדירים מה התוכנה צריכה לעשות? כיצד מוודאים שהיא אכן עושה זאת? |
45 |
Programming Project |
כתיבת פרויקט תוכנה בסדר גודל של מאות שורות קוד, לתרגול הנלמד על #C עד לשלב זה. |
50 |
Object Oriented and C# in depth |
תכנות מתקדם בשפת #C, תכנות תוך שימוש בכלי מערכת הדוט נט (NET.) וטכנולוגיית ה-UML לתכנון מערכות מורכבות. |
68 |
Project O-O Design & .NET Framework |
בפרויקט זה יפתחו הסטודנטים מערכת תוכנה שלמה ובוגרת ב-#C. הפרויקט כולל שמוש בכלים של סביבת דוט נט ויישום כל נושאי הלימוד עד כה כולל שימוש בבדיקות יחידה |
50 |
Unit Test |
בקורס זה ילמדו הסטודנטים על ביצוע בדיקות ליחידות תוכנה שלמות. קורס זה מציג את הדרכים לבדוק ולשפר את איכות התוכנה על-ידי המפתח עצמו. |
5 |
Algorithms and Complexity (using C#) |
בקורס זה יילמדו אוסף הכלים המרכזיים ההופכים תוכניתן לאיש מקצוע - האלגוריתמים והדרכים להעריך את יעילותם. הקורס נלמד בגישה פרקטית המציגה לסטודנטים כלים מחשבתיים לתכנון אלגורתמים וכלים מעשיים להשוואה בינהם. |
28 |
Data Structures (using C#) |
לימוד מבני הנתונים עיקריים המצויים בכל מערכת תוכנה גדולה, יישומם בפועל ומטרתם. הסטודנטים ילמדו הן על העיצוב שלהם והן על דרך מימושם ב-#C. |
32 |
Data Structures Project |
בפרויקט זה ישולבו הנושאים שנידונו בקורסי האלגוריתמים ומבני הנתונים. כמו כן ישולבו שימוש במתודולוגיות פיתוח OOP בצורה נבונה וחכמה, תוך שימת דגש על יעילות ועיצוב הקוד |
50 |
Relational Data Bases and SQL |
לימוד עולם בסיסי הנתונים, הן על הצד התיאורטי של בסיסי הנתונים והן על הצד המעשי של עבודה עם בסיסי נתונים מתוך שפת #C. |
34 |
Programming with ADO.NET |
לימוד הטכנולוגיות היותר נפוצות לעבודה עם בסיסי נתונים מתוך #C ה -ADO.NET נלמד על שיטות שונות לביצוע Data Binding ולעבודה במודל שרת/לקוח |
11 |
LINQ via C# |
לימוד טכנולוגיית ה-LINQ לצורך טיפול בנתונים הייחודיות והיתרונות של הטכנולוגיה. LINQ to SQL ו- LINQ to XML |
9 |
Entity Framework |
לימוד הטכנולוגיה העדכנית ביותר של עבודה מול נתונים מתוך שפת #C בעזרת Entity Framework. הסטודנטים ילמדו כיצד לייצר ולבנות נכון את שכבות ההפרדה הנדרשות לעבודה מול בסיס נתונים קיים. |
30 |
HTML and JavaScript |
לימוד עולם התכנות לבניית אתרי אינטרנט. לימוד הטכנולוגיה המרכזית, המשותפת לתכנות אתרי WEB בכל השפות והסביבות. |
50 |
Developing ASP.NET MVC Web Applications |
כתיבת תוכנה לבנית אתרי WEB מורכבים תוך שימוש בשפת התכנות #C לימוד תיכנת צד השרת וצד הלקוח של האתר. |
49 |
Project - WEB based |
פרויקט מקיף בו יבצעו הסטודנטים הקמה של אפליקציית להרצת אתר WEB מבוססת ASP MVC. |
50 |
Active Server Pages (ASP.Net) Part B & AJAX |
תכנות אתרי WEB תוך שימוש מתקדם ב-ASP. יילמדו סדרה של נושאים מתקדמים כגון תכנות דינמי ל-WEB, אבטחה ותקשורת. |
28 |
Programming in HTML5 with JavaScript and CSS3 |
ללמוד לשלב מרכיבים מתקדמים באתרי WEB, כגון יצירת אתרי WEB דינמיים, HTML5 והכלת וידאו באתר. |
22 |
Developing Single Page Applications with AngularJS |
פתוח אתר כאפליקציה, בטכנולוגית אנגולאר, הטכנולוגיה הפופולאריות ליצירת אפליקציות WEB. |
28 |
Programming the .NET Framework |
לימוד התכונות היותר מורכבות של סביבת דוט נט. נלמד את המנגנונים המשמשים תוכניתנים ותיקים ובכירים, בבואם לבנות מערכות תוכנה לארגונים גדולים. |
41 |
Web API RESTful applications |
בקורס זה נלמד לבנות אפליקציות שרת המאפשרות למגוון סוגי מחשבים וסמארטפונים לקבל ולשלוח נתונים לשרת בטכנולוגיית WEB API. |
9 |
SOA (Service-Oriented Applications) using WCF |
בקורס זה נלמד לממש ארכיטקטורה של תוכנה הרצה על מספר מחשבים במקביל (מערכות מבוזרות) תוך שימוש בטכנולוגיית WCF. |
9 |
Developing Windows Azure and Web Services |
לימוד כתיבת תוכנה לענן. חלוקת התוכנה בין מחשבים שונים והדרכים לתקשר בין רכיבי תוכנה הרצים במחשבים אלו. |
59 |
Developing SOA-Project |
סיכום כל טכנולוגיות ה-שרת לכדי פרויקט מקיף וגדול. דגש על עבודה, עיצוב ושימוש נכון במנגנונים השונים. |
50 |
Design Patterns & Adv. Techniques in .NET |
לימוד הפרדיגמה הכללית לתכנון מערכות - ה Design Patterns, וכיצד הפרדיגמה משמשת לבניית ארכיטקטורת תוכנה בצורה נכונה. |
19 |
Advanced Windows Store App Development Using C# |
קורס מקיף זה מלמד פתוח תוכנה לסמארטפונים תוך שימוש בשפת #C. |
41 |
Windows Store App Project |
פרויקט פיתוח בסביבה של מערכת הפעלה מודרנית. פיתוח אפליקציה המשמשת ברכיבים פנימיים של מערכת ההפעלה |
50 |
Developing Cross-Platform mobile applications in C# using Xamarin |
לימוד כתיבת תוכנה העובדת על מגוון גדול של מחשבים, טאבלטים וסמארטפונים תוך שימוש ב-Xamarin המאפשרת לפתח תוכנה אחת העובדת ב-אנדרואיד וב-IOS Windows . |
29 |
Final Project |
פרויקט הגמר להסמכה. התמודדות עם פרויקט המדמה מצב אמת בעבודה. שילוב מגוון הטכנולוגיות לכדי מערכת ישימה אחת תוך הכנת הסטודנט לעבודה בסביבה תעשייתית. |
100 |
חזרה