למה כל מתכנת צריך לכתוב בלוג?

ב"ה

למה כל מתכנת צריך לכתוב בלוג?



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

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

למשל כשאתה לומד שפת תכנות חדשה, תכתוב עליה. אפשר לכתוב מדריך ל-Hello Word בשפה הזו (tutorial בלעז), או מדריך מקיף יותר על כללי השימוש בשפה. או סתם סקירה כללית על השפה ולמה כדאי או לא כדאי להשתמש בה לדעתך. אבל זה לא חייב להיות רק כשלומדים שפה חדשה, גם כשלומדים ספריה חדשה  (יכול להיות שהיא כבר ישנה אבל מבחינתך היא חדשה) כמו RxJS או webpack, תכתוב משהו על מה שלמדת, תסכם את החומר.

למה זה טוב? יש כמה סיבות:
1.     בניית מותג עצמי – כמו שהזכרתי לעיל, כשיש לך אתר משלך ואתה משקיע בו, פעם בחודשיים למשל, עם איזשהו תוכן חדש, אתה בונה את השם שלך כמתכנת, אתה מראה מה אתה יודע ואיזה נושאים מעניינים אותך יותר ואיזה פחות. דבר כזה יכול מאוד להועיל לך במציאת עבודה או ביצירת שותפויות בהמשך הדרך.
2.     לימוד טוב יותר של הנושא החדש – כשאתה כותב על משהו אתה צריך להבין אותו טוב יותר. קשה מאוד לכתוב הסברים ותיאורים בלי להבין את הדברים. יותר מזה, אפילו כשאתה מרגיש שהבנת את הנושא בצורה טובה, ברגע שאתה מתחיל לכתוב עליו עולות שאלות בסיסיות חדשות ואתה מברר אותן לעומק וככה רמת ההבנה שלך משתפרת בצורה משמעותית. זה מאוד דומה לללמד את הנושא. כשאתה צריך ללמד אתה צריך להגיע לרמת ידע גבוה הרבה יותר.
3.     זיכרון – כשאתה כותב על הנושא אתה זוכר אותו טוב יותר.
4.     שימור הידע – כמה פעמים הייתם בקורס על נושא מסוים, הקורס היה מצוין והמרצה מדהים והצלחתם בכל תרגילי הקורס וחשבתם לעצמכם שקניתם ידע חדש וטוב. מאז עברו חודשיים ולא ממש יצא לכם להשתמש בנושא החדש הזה, אם עכשיו תצטרכו לעשות בו שימוש תהיו חייבים לחפש קצת הסברים ברשת כדי להיזכר בנושא הזה. ואם כבר עברה חצי שנה, אתם תצטרכו ממש tutorial שלם כדי להתחיל להיזכר במושגים שקשורים לנושא הזה. ואם כבר עברה שנה, "כאילו עבר ובטל מן העולם", אתם בכלל לא תהיו בטוחים אם עשיתם אי פעם קורס בנושא הזה או שסתם קראתם עליו באיזה כתבה או שמעתם את הבאזז וורד הזה במסדרון ממישהו אחר. ברגע שכתבתם על הנושא באתר שלכם, יש לכם תמיד מקום שבו תוכלו לחזור על החומר וכל מי שלמד באוניברסיטה יודע שחומר שאתה כתבת הרבה יותר מובן וקל לקריאה מחומר שאחרים כתבו ולא משנה כמה טוב הם כותבים וכמה הם מומחים בתחום.
5.     עזרה לאחרים – גם אם לא תקדם את הבלוג שלך בגוגל בשום צורה מתוחכמת שהיא (SEO), אבל תשקיע ותתמיד בו, אנשים יגיעו אליו במשך הזמן. ואם אתה כותב בצורה טובה אנשים גם ישתפו את הבלוג שלך עם אחרים ותיווצר קהילה קטנה של קוראים שמדיי פעם חוזרת לקרוא עוד מאמר אצלך. אם אתה כותב את המאמר באנגלית אז קהילת הקוראים האופציונלים גדולה מאוד אבל גם קהילת המתחרים גדולה. מצד שני אם אתה כותב בעברית קהילת הקוראים קטנה יותר וכך גם קהילת המתחרים. לדעתי עדיף לכתוב בעברית מכל הסיבות שמניתי לעיל וגם מסיבות פטריוטיות – להגדיל את כמות הידע המקצועי בתחום בעברית שכרגע הוא דל מאוד. ישנם אנשים רבים שיעדיפו מראש לקרוא מאמר באנגלית. אבל לא מעט (ואולי אפילו יותר) אנשים שיעדיפו לקרוא בעברית, כיון שככה אפשר לקרוא יותר מהר וגם כל הביטויים בשפת האם שלהם מובנים יותר מאשר בשפה זרה. במיוחד הדבר נכון לקהילת הסטודנטים שאצלהם הידע הטכני באנגלית רק התחיל להיצטבר ולקרוא מאמר של חמישה עמודים באגלית נראה להם כמו מבחן סוף סמסטר והם ינסו להתחמק מזה בכל דרך עד שיגלו שאין להם ברירה. כמובן שכשאתה כותב על נושא מסוים מתוך מודעות שזה הולך להיות ברשת, אתה צריך להסביר את הנושא בצורה טובה בידיעה שיקראו את זה גם אנשים שלא מכירים את הנושא והמאמר שלך יעזור גם להם.
ישנם עוד יתרונות, כמו אפשרות להרויח כסף מהאתר (פרסומות), אבל אני לא מכניס אותם לשיקולים העיקריים כיון שאם זה המניע יש הרבה סוגים אחרים של אתרים שיכניסו לך יותר כסף ולכן אם זאת המטרה אז בלוג תכנות מהסוג שציינתי הוא לא הכיוון הנכון.

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

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

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

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

בהצלחה!

למה בכלל להשתמש ב-TypeScript





TypeScript זו שפה שפותחה על ידי מיקרוסופט והיא בעצם תת שפה ל-JavaScript. לאחרונה אנחנו רואים שהשימוש ב-TypeScript הופך להיות נפוץ יותר ונשאלת השאלה, למה בכלל להשתמש ב-TypeScript? אנחנו כבר מכירים את JavaScript אז למה ללמוד עכשיו שפה חדשה ולבזבז על זה זמן?

היתרונות של TypeScript

קוד מסודר וברור - קוד שכתוב ב-TypeScript הוא קוד מסודר וברור יותר מ-JavaScript, כיון שב-TypeScript מציינים את סוג המשתנים וכך ברור יותר מה תפקיד המשתנה. כמו כן מציינים את סוג החזרה של הפונקציות וכך ברור יותר מה תפקידה של הפונקציה. בנוסף יש תמיכה מלאה במחלקות (class) וממשקים (interface), וניתן לכתוב קוד שהוא object oriented בצורה קלאסית וברורה.
דבר נוסף שתורם לסדר זה שב-TypeScript מגדירים משתנים בעיקר בעזרת let (ולא ע"י var). השימוש ב-let יותר אינטואיטיבי מבחינת ה-scoping של המשתנה (ניתן לקרוא על let יותר לעומק פה).
ויש עוד כללים שתורמים לסדר, כמו זה שלא ניתן להשתמש במשתנה לפני שהגדרנו אותו. אלא קודם מגדירים משתנה ורק אחר כל משתמשים בו. ועוד ועוד...

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

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

בנוסף, אם משתמשים ב-editor שתומך ב-intellisense ל-TypeScript, אז תוך כדי כתיבת הקוד מקבלים חיווי אם הקוד בסדר או שיש בו איזושהי בעיה. נכון להיום יש כבר הרבה editors שניתן להתקין בהם plugin שמספק intellisense ל-TypeScript, אבל ה-editor המומלץ ל-TypeScript הוא Visual Studio Code. ה-editor הזה גם הוא של מייקרוסופט אבל הוא open source וכמובן חינמי. ויש בו המון פיצ'רים באמת טובים. מומלץ לנסות להשתמש. אני עבדתי עד עכשיו עם Sublime ועברתי ל-Visual Studio Code ואני מאוד מרוצה מהשינוי הזה.

תמיכה ב-es6 - שפת TypeScript מאמצת במהירות פיצ'רים חדשים של es6 ותומכת בהם. ולכן כשמשתמשים ב-TypeScript ניתן להשתמש ביכולות החדשות של es6 והקומפיילר של TypeScript יתרגם אותם ל-JavaScript סטנדרטי של es3 או es5 כפי שנגדיר לו. וכך הקוד שלנו ירוץ בצורה טובה על כל הדפדפנים למרות שהם עדיין לא תומכים ב-es6 באופן מלא.

סינטקס דומה ל-JavaScript - הסינטקס של TypeScript דומה מאוד ל-JavaScript, כך שהמעבר מ-JS ל-TS לא קשה במיוחד. אם ניקח פרויקט קיים שכתוב ב-JS ונשנה את סיומת הקבצים שלו מ-js ל-ts יש סיכוי טוב שזה יתקמפל בהצלחה כבר בהתחלה. ואם יהיו בעיות, האדיטור יסמן לנו את כל המקומות הבעייתיים ונוכל לתקן את הקוד יחסית מהר.

תמיכה - ל-TypeScript יש תמיכה רצינית כיון שמאחורי הפיתוח שלה עומדת מיקרוסופט. הדבר הזה יכול להבטיח תמיכה לאורך זמן. בשונה משפות אחרות שמתקמפלות ל-JavaScript ומתוחזקות ע"י קהילת המפתחים בלבד, ל-TypeScript יש גם את קהילת המפתחים וגם את מיקרוספט. ניתן גם להתרשם מרמת התחזוקה של השפה ע"י התבוננות באתר הרישמי של TypeScript שם ניתן לראות תיעוד מסודר ורציני של השפה ודברים נוספים שמעידים על ההשקעה בפיתוח השפה.
רוב האדיטורים הנפוצים ביותר כיום תומכים ב-TypeScript. ביניהם כל משפחת Visual Studio כמובן, וגם Sublime, Atom, WebStorm, Eclipse, Emacs, Vim.

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


צמיחה מהירה - אם נשתמש ב-Google Trends להשוואה של TypeScript מול שפות מתחרות כמו CoffeeScript ו-Dart נקבל את הגרף הבא:



ובכל זאת, כיון שאנחנו חיים בישראל, נבדוק גם את המצב בארצנו הקטנה:



כפי שרואים, TypeScript מובילה באופן משמעותי מול השפות המתחרות.

לסיכום

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

לכן, גם אם לא תשתמשו ב-TypeScript בפרויקט שלכם, עדיין מומלץ מאוד להכיר אותה.

בהצלחה.