יום ראשון, 30 בספטמבר 2012

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

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

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

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

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

למה חשוב לדעת ללמוד באופן עצמאי?

הנה קטע מאוד רלבנטי מתוך פוסט קודם שנגע מעט בנושא:

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

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

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

מה ההבדל בין טכנולוגיה לשפת תכנות?

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

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

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

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

הערה אחרונה לפני שמתחילים: תכנות לומדים בידיים!! אני יודע שזה יכול להיות מאוד מפתה לעבור בקריאה על המדריכים ולהגיד "אוקיי, הבנתי מה קורה פה בערך" אז חשוב לי שתדעו שאם אתם באמת רוצים ללמוד טכנולוגיה מסויימת אתם צריכים לעשות תרגילים מעשיים. רק ככה לומדים באמת. קריאת החומר שווה 10% בלימוד טכנולוגיה חדשה ותרגילים מעשיים שווים 90%, חשוב לזכור את זה.

רשימת מקורות מידע ללימוד כל טכנולוגיה

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

1) Ruby on Rails - יש שני דברים שצריך ללמוד, את השפה Ruby ואת הסביבה (Framework) שעובדים מעליה Rails. אז Ruby היא שפה יחסית קלה ללימוד ודי כיפית, אפשר ללמוד אותה ב http://tryruby.org/. כדי לקבל רקע תיאורטי קצר על RoR באופן כללי כדאי לקרוא את המדריך הזה.  וכדי להתחיל לתרגל בעצמכם ולעשות תרגילים, אחד המדריכים הכי טובים שאני פגשתי ברשת בכלל ללימוד שפות חדשות הוא Rails For Zombies - מדריך פשוט מעולה.

2) Java - אני ממליץ על כמה מקורות מצויינים לקורסים, הראשון הוא של Udemy, אתר פשוט מעולה לקורסים אונליין בונשאים שונים. הקורס לתכנות ב Java נראה מצוין ויכול לתת לכם בדיוק את הבסיס שאתם צריכים. אתר מצוין נוסף שמציע קורס ש Google בעצמה ממליצה עליו לתכנות ב Java הוא Udacity, אני ממליץ גם עליו.

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

3) iPhone Programming - תכנות לאייפון מכיל בתוכו לימוד של כל סביבת הפיתוח של Apple ובין היתר את שפת התכנות Objective-C. לפני כ3 שנים אוניברסיטת Stanford בקליפורניה פירסמה ברשת קורס מצולם בוידאו של פיתוח אפליקציות לאייפון. מאז הקורס הזה הפך להיות מקור הידע המפורסם ביותר בעולם למי שרוצה ללמוד לתכנת לאייפון. האתר של הקורס מכיל את כל ההרצאות ותרגילי הבית. אפשר ורצוי לראות את ההרצאות בוידאו הן נמצאות בiTunes  וניתנות להורדה בחינם. אני שוב חוזר, תעשו את כל התרגילים המעשיים, אחרת זה לא שווה הרבה.

4) Android Programming - דבר ראשון בשביל לפתח לאנדרויד צריך לדעת Java אז למי שהידע הזה חסר מומלץ לעבור קודם על סעיף (2) ברשימה. בעבר המקום שבדר״כ הפנו אליו כדי ללמוד פיתוח לאנדרויד היה באתר המפתחים הרשמי של אנדרויד. זהו עדין מקור מידע חשוב, אבל למרבה המזל כיום יש קורס פשוט מעולה ובחינם ללימוד תכנות Android שעוצב ופותח ע״י אנשי Google בעצמם.

5) Java Script - בזמן התואר הראשון שלי באונ' ת"א עשיתי סדנה בשיתוף עם Google שבה הייתי צריך ללמוד לראשונה לעבוד ב JS. המדריך של הסדנה המליץ לנו לראות הרצאה בוידאו שמסבירה למי שכבר יודע שפות תכנות אחרות איך מתכנתים ב JS - זו הרצאה קלילה ומעניינת שבאמת כיף לראות ואחריה אתם תדעו את כל העקרונות של השפה. מה שחסר לי פה הוא קישור לתרגילים מעשיים כי ההרצאה כאמור היא תיאורטית בלבד. אני אשמח לקבל ממכם קישורים לתרגילים מעשיים טובים ב JS.

6) C Programming Language - לימוד שפת C, השפה בעיקר רלבנטית למי שרוצה לעבוד קרוב לחומרה. מקור הלימוד הפופולרי ביותר ללימוד השפה הוא ללא ספק הספר C Programming Language - כדאי להוריד גם compiler מתאים כדי לתרגל בעצמיכם את החומר הנלמד.

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

8) איזה טכנולוגיות חסרות לכם ברשימה? כתבו לי בתגובות

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

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


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