הצעדים הראשונים שלי בתיכנות
את שורות הקוד הראשונות כתבתי לפני למעלה מ-40 שנה. אני זוכר עד היום את המחשב Sinclair ZX-81 ואת מסך הטלוויזיה הענק (26״) שחובר אליו. זה היה מסך טלוויזיה שחור לבן ענקי. אני גם זוכר את המורה למתמטיקה שהעבירה את החוג שבו כל זה קרה. לא אהבתי אותה, לא אהבתי את בית הספר… אך זה כבר סיפור אחר לפוסט נפרד. בייסיק הייתה שפת התכנות הראשונה שלי. בהמשך, למדתי Pascal, Lisp, Prolog, ורק בשלב מאוחר יותר, עם ההופעה של ++C למדתי C ומייד אחר כך ++C.
המשך ההתפתחות המקצועית בתכנות
בשנת 1995, עם ההופעה של ה-web, הייתי בין הראשונים לעבור לשפת התכנות Java. בשנים שחלפו מאז 1995 ועד 2007 התמקדתי ב-Java, עברתי את ההסמכות המקצועיות ב-Java של Sun Microsystems (באותה עת היא הייתה החברה שעמדה מאחורי הפיתוח של Java). בין היתר, עברתי גם בהצלחה את מבחן ההסמכה של Sun Microsystems על מנת לעבוד כמדריך בקורסים מקצועיים ב-Java אשר מועברים על ידם. באותן שנים התחלתי גם ללמד בבסמ״ח (מממר״ם) בצבא, לפתח עבור הצבא חומרי הדרכה בכל הנוגע לפיתוח תוכנה, לארגן כנסים מקצועיים בתוך הצבא, וגם לייעץ במגוון גדול של נושאים. במקביל, פיתחתי את החברה שלי, אשר באותה עת התמקדה בפיתוח משחקים ואפליקציות ב-Java 2 Micro Edition לטלפונים ניידים. בשנת 2007 קיבלתי את ההחלטה לסיים את פעילות הפיתוח של משחקים ואפליקציות לטלפונים ניידים ולחזור ולהתמקד בלימוד ובהדרכה של שפות תכנות, ספריות, ופלטפורמות שעבורן ניתן לפתח תכניות מחשב.
תהליך של למידה והתפתחות מקצועית אינסופית
בשנים שחלפו מאז שנת 2007 ועד היום, התמקדתי בלימוד אינסופי של מגוון עצום של שפות תכנות ופלטפורמות. במקביל, התמקדתי במה שאני אוהב לעשות באופן מיוחד… לפתח חומרי הדרכה, לפתח קורסים… וללמד. תחילה התמקדתי בטכנולוגיות של מיקרוסופט, לרבות #C וטכנולוגיות רלוונטיות אחרות ב-.NET כגון ASP.NET, ה-Entity Framework ו-Azure. העברתי מספר קורסים בנושא בטכניון, ולאחר מכן פיתחתי את הקורס C# Fundamentals, אשר מועבר מאז ועד היום במסגרת life michael. במקביל למדתי PHP, עברתי בהצלחה את מבחן ההסמכה Zend Certified Engineer, ומאז ועד היום אני מעביר את הקורס Software Engineering in PHP (תחילה הוא הועבר בשיתוף פעולה עם HIT ובשלב מאוחר יותר, באופן עצמאי במסגרת החברה שלי). בשנת 2008 הסתערתי על מערכת ההפעלה Android, ופיתחתי את הקורס Android Fundamentals, אשר בתחילה הועבר יחד עם HIT, ובשלב מאוחר יותר התחלתי להעבירו במסגרת life michael בלבד. הייתי בין הראשונים בעולם אשר העבירו קורסים בפיתוח תוכנה עבור מערכת ההפעלה Android ובמסגרת עבודתי זו אף טסטי פעמיים להודו כדי להעביר הכשרות למפתחים במחלקת R&D של חברת Avaya ב-Pune. בשנת 2008 התחלתי ללמוד Python והתחלתי בהכנת חומרי הדרכה מתאימים. מאז אותן שנים העברתי הדרכות רבות ב-Python במספר רב של חברות הייטק, וגם פיתחתי את הקורס Python Programming אשר הפך ללהיט. במקביל להתפתחות בלימוד של פיתוח צד השרת ב-PHP ובשפות תכנות אחרות, מייד עם הופעת הסימנים להופעת HTML5 התחלתי לגבש את הידע שכבר היה לי ב- JavaScript ופיתחתי את הקורס Front End Development, אשר בתחילה הועבר במסגרת HIT ובשלב מאוחר יותר במסגרת life michael בלבד. במהלך השנים שחלפו בהמשך פיתחתי קורסים נוספים בתחום צד הלקוח, לרבות CSS Fundamentals, ReactJS Fundamental ו-Angular Fundamentals. בשנת 2009 הייתי בין המרצים הראשונים בעולם אשר החלו ללמד Scala במסגרת האקדמיה, ובהמשך פיתחתי את הקורס Scala Fundamentals. בשנים שחלפו, המשכתי בכיוון שהחל עם Scala והמשכתי בלימוד של שתי שפות חדשות דומות: Kotlin ו-Swift. בהתאמה, פיתחתי את הקורסים Swift Fundamentals ו-Kotlin Fundamentals והעברתי מספר גדול של מחזורים (בעיקר של הקורס ללימוד Kotlin) הן בחברות הייטק והן כקורס ציבורי. בשנים האחרונות אני מתמקד בעיקר בפיתוח סמינרים בנושאים מקצועיים מתקדמים, קורסים ביודמי, ובקורסים בפלטפורמות life michael academy ו-life michael kids.
פיתוח של מתודולוגיה ללמידה עצמאית של נושאים בפיתוח תוכנה
הקצב הגבוה שבו מופיעות ונעלמות טכנולוגיות שמשמשות לפיתוח תוכנה (לרבות Programming Languages, Platforms, Frameworks ו-Libraries) מחייב כל מפתח תוכנה לגבש באופן עצמאי את המתודולוגיה המתאימה ביותר עבורו ללימוד והתפתחות מקצועית רציפה. מפתחי תוכנה שיתעלמו מהצורך ללמוד ולהתפתח מקצועית באופן רציף עשויים למצוא עצמם בשלב מסויים מחוץ למשחק. אני מניח שבשלב מסויים אני אנסה לגבש בכתב את המתודולוגיה שהתגבשה אצלי, בדומה למתודולוגיה Extreme Blended שגיבשתי לאחרונה.
טיפים מעשיים ללימוד תוכנה בהתבסס על הניסיון המעשי האישי שלי
במהלך השבוע, אני מקדיש כ-30% משעות העבודה ללימוד נושאים חדשים בפיתוח תוכנה.הקצב שבו אני לומד נושאים חדשים כיום גדול במאות אחוזים בהשוואה לקצב הלימוד שהיה לי לפני כ-20 שנה. את הטיפים המעשיים ללימוד פיתוח תוכנה גיבשתי לקורס בשם Tips for Learning Programming אשר פיתחתי עבור כל מי שעושה את צעדיו הראשונים ו/או כל מי שכבר עובד בפיתוח תוכנה. הקורס זמין בחינם ב-Udemy. קורס זה מצטרף לקורסים רבים אחרים שפיתחתי ב-Udemy.